포스트

2. cgi

2. cgi

CGI(23. 11. 20)

  • Common Gateway Interface
  • 웹 서버가 외부 프로그램을 실행할 수 있도록 해주는 인터페이스 명세(specification)
    • 외부 프로그램 = 동적 웹 콘텐츠 생성하는 역할
    • c, c++, java, php , go …
  • 웹 서버와 CGI 프로그램(Application) 간의 규칙

Untitled

  • 환경변수나 표준입출력을 다룰 수 있는 프로그램 언어라면 어떤 언어든지 확장하여 이용 가능
  • 실행속도나 텍스트 처리의 용이함 등의 이유로 perl이나 python, ruby 등의 스크립트 언어를 주로 사용

CGI 프로그램

  • 컴파일 방식
    • 기계어. 컴파일된 상태
    • c++, c
  • 인터프리터 방식
    • 스크립트 언어
    • Asp, Php, Python, Per
    • 스크립트 엔진
      • 해당 스크립트를 실행할 수 있는 엔진
    • 즉시 코드를 수정할 수 있음

CGI Spec

입출력

  • 주로 표준 입출력 사용

Meta-Variables ( 메타 변수 )

  • 웹서버에서 CGI 프로그램으로 전달되는 요청 관련 데이터
  • 주로 환경변수 (environment variable) 형태로 구현
    • SERVER_NAME
    • SERVER_PORT
    • REMOTE_ADDR
    • REQUEST_METHOD
    • CONTENT_TYPE
    • CONTENT_LENGTH

Script ( 스크립트)

  • 서버에 의해 호출되는 소프트웨어
  • 런타임에 해석되는 일련의 명령문

장점

  • 언어, 플랫폼에 독립적
  • 구조가 단순하고 다른 서버 사이드 프로그래밍 언어에 비해 쉽게 수행

단점

  • 속도가 느림
    • 매 요청마다 DB Connection을 새로 열어야 합니다.
  • Http 요청마다 새로운 프로세스를 만들어 서버 메모리를 사용합니다.
  • 데이터가 메모리에 캐시 될 수 없다.

Untitled

Java CGI

  • 일반적인 컴파일된 .class는 java application server와 통신이 불가능하다

Untitled

  • 다른 프로그램 JCGI 가 필요

Untitled

Fest CGI

  • 일반적인 CGI는 느리다…
  • 그래서 나온게 Fest CGI
  • 대부분의 웹서버가 Fast CGI를 제공
    • Apache
    • Nginx
    • IIS

    Untitled

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.