CNU SW 아카데미/9주차
[NHN] CGI(Common Gateway Interface)
하가네
2024. 8. 25. 23:32
# CGI란 ?
- 웹 서버가 외부 프로그램을 실행할 수 있도록 해주는 인터페이스 명세(specification)
- 외부 프로그램 = 동적 웹 콘텐츠 생성하는 역할
- c, c++, java, php , go …
- 웹 서버와 CGI 프로그램(Application) 간의 규칙
- 환경변수나 표준입출력을 다룰 수 있는 프로그램 언어라면 어떤 언어든지 확장하여 이용 가능
- 실행속도나 텍스트 처리의 용이함 등의 이유로 perl이나 python, ruby 등의 스크립트 언어를 주로 사용
## CGI 프로그램
- 컴파일 방식
- 기계어. 컴파일된 상태
- c++, c
- 인터프리터 방식
- 스크립트 언어
- Asp, Php, Python, Per
- 스크립트 엔진
- 해당 스크립트를 실행할 수 있는 엔진
- 즉시 코드를 수정할 수 있음
## CGI 스펙
### 입출력
- 주로 표준 입출력 사용
### Meta-Variables ( 메타 변수 )
- 웹서버에서 CGI 프로그램으로 전달되는 요청 관련 데이터
- 주로 환경변수 (environment variable) 형태로 구현
- SERVER_NAME
- SERVER_PORT
- REMOTE_ADDR
- REQUEST_METHOD
- CONTENT_TYPE
- CONTENT_LENGTH
### Script (스크립트)
- 서버에 의해 호출되는 소프트웨어
- 런타임에 해석되는 일련의 명령문
### 장점
- 언어, 플랫폼에 독립적
- 구조가 단순하고 다른 서버 사이드 프로그래밍 언어에 비해 쉽게 수행
### 단점
- 속도가 느림
- 매 요청마다 DB Connection을 새로 열어야 한다.
- Http 요청마다 새로운 프로세스를 만들어 서버 메모리를 사용한다.
- 데이터가 메모리에 캐시 될 수 없다.
## Java CGI 프로그램
Q. .class 형태로 컴파일된 Java는 컴파일 방식으로 실행 가능 할까?
==> 실행 불가능하다. JVM은 Java를 실행할 수는 있지만 웹서버와 java application Server간의 통신을 할 수는 없다.
웹서버와 Java Application 사이에서 서로 통신할 수 있도록 한 JCGI가 있어야 합니다.