CGI
CGI (Common Gateway Interface) 스펙은 웹 서버와 외부 프로그램 간의 인터페이스를 사용 가능하게 하고 표준화하기 위해 도입되었습니다. CGI는 웹 응용프로그램 개발을 위한 비교적 단순한 플랫폼 및 언어 독립적인 산업 표준 인터페이스입니다. CGI 표준을 구현하는 프로그램을 일반적으로 CGI 프로그램이라고 합니다.
CGI의 목적은 HTTP 서버가 URL 에 지정된 프로그램과 인터페이스할 수 있는 프레임워크를 제공함으로써 HTTP 서버의 기능을 확장하는 것입니다. URL 형식을 사용하면 매개변수를 CGI 프로그램에 전달할 수 있습니다. 서버 측 인터페이스는 HTTP 서버에서 프로그램이 시작되는 방법과 표준 입력 및 환경 변수의 조합을 사용하여 프로그램에 대한 매개 변수가 전달되는 방법을 설명합니다. 또한 표준 출력을 사용하여 출력 정보(예: HTML 요소)가 HTTP 서버로 다시 전달되는 방법도 설명합니다. 따라서 가장 단순한 양식으로 CGI 프로그램을 다음과 같은 프로그램으로 정의할 수 있습니다.
- 실행 프로그램으로 호출하여 HTTP 서버의 하위 프로세스로 실행할 수 있습니다.
- 표준 입력에서 읽을 수 있습니다.
- 환경 변수에 액세스할 수 있습니다.
- 표준 출력에 쓸 수 있습니다.
- 프로그램에 전달된 명령행 인수에 액세스할 수 있습니다.
관리자는 서버 지시문을 사용하여 시스템이 실행할 수 있는 CGI 프로그램을 제어합니다. 서버는 일반적으로 CGI 스크립트라고 하는 CGI 프로그램에 대한 요청이 포함된 URL 을 인식합니다. (문서 전체에서 CGI 프로그램 및 CGI 스크립트라는 용어를 사용하여 동일한 의미를 갖습니다.) 서버 지시문에 따라, 서버는 클라이언트 대신 해당 프로그램을 호출합니다.
서버는 C++, REXX, ILE C, ILE RPG 및 ILE COBOL 로 작성된 CGI 프로그램을 지원합니다. 또한 다중 스레드를 지원하는 모든 언어로 다중 스레드 가능 CGI 프로그램을 지원합니다.
소스 코드를 컴파일하여 작성된 CGI 프로그램은 일반적으로 Net.Data® 및 PHP 스크립팅 언어와 같은 해석된 언어로 작성된 프로그램보다 더 빠르게 실행됩니다. 그러나 스크립팅 언어로 작성된 프로그램은 쓰기, 유지보수 및 디버그가 더 쉽습니다.
IBM HTTP Server for i의 CGI 지원에는 성능, 고가용성 및 트랜잭션 지원 영역에서 CGI 프로그래밍 모델을 개선하는 고유 기능인 IBM i에 대한 지원도 포함되어 있습니다. 다음 절에서는 다양한 기능에 대해 설명합니다.
HTTP Server CGI 프로세스
다른 플랫폼에서 CGI 성능에 대한 주요 관심사는 CGI 프로그램이 각 웹 클라이언트 요청에서 시작된다는 사실입니다. 여기에는 새 프로세스 (작업) 를 작성하기 위한 추가 디스크 및 운영 체제 활동이 포함됩니다. 데이터베이스 관리 시스템에 연결하는 것과 같은 CGI 프로그램 초기화는 종종 사용자가 이러한 애플리케이션에 대해 경험하는 응답 시간을 증가시키는 시간이 걸립니다.
IBM HTTP Server for i에서는 다른 접근 방식을 취합니다. HTTP Server HTTP 서버 하위 프로세스 풀은 CGI 프로그램을 실행하는 데 사용됩니다. CGI 프로그램이 프로세스 내에서 실행된 후에는 하위 프로세스가 종료되지 않습니다. 또한 하위 프로세스는 사용자 프로파일과 연관되며 기존 하위 프로세스와 연관된 동일한 사용자 프로파일에서 실행되는 CGI 프로그램에 대한 요청만 프로세스에서 실행됩니다.
CGI 프로세스와 관련된 일부 추가 기능은 다음과 같습니다.
- 웹 클라이언트가 새 CGI 하위 프로세스를 시작할 때 성능이 저하되지 않도록 웹 서버를 시작할 때 사전 시작해야 하는 하위 프로세스 수 및 사용자 프로파일을 지정하는 기능.
- 서버 시작 시 CGI 프로그램을 로드하고 초기화할 수 있도록 미리 시작된 CGI 프로세스에서 CGI 요청을 실행하는 기능. 이 지원은 명명된 활성 그룹에서 실행 중인 프로그램에 유용합니다. 명명된 활성 그룹에서 실행 중인 CGI 프로그램은 CGI 프로세스 내에서 한 번 로드되고 초기화됩니다.
지속적 CGI 프로그램
지속적 CGI 는 CGI 프로그램이 여러 브라우저 요청에서 브라우저 클라이언트와의 세션을 유지할 수 있도록 하는 CGI 인터페이스의 확장입니다. 이를 통해 파일을 열린 상태로 유지하고 상태를 유지하며 장기 실행 데이터베이스 트랜잭션을 일반 사용자 조치에 따라 커미트하거나 롤백할 수 있습니다.
고가용성 CGI 프로그램
고가용성 CGI 프로그램은 API를 사용하여 상태 정보를 보존합니다. 상태 정보는 HTTP Server 또는 IBM i 서버의 장애 또는 전환 후에도 클러스터 환경에서 클러스터 노드로 참여하는 다른 IBM i 서버에서 액세스할 수 있습니다.
AIX CGI 프로그램 실행
IBM HTTP Server for i은 AIX®에서 CGI 프로그램을 실행하여 IBM i용 휴대용 애플리케이션 솔루션 환경 CGI 프로그램을 실행할 수 있습니다.
AIX CGI 프로그램을 실행하는 것 외에도 IBM HTTP Server for i은 AIX 프로토콜을 구현하는 FastCGI 프로그램을 실행할 수 있습니다. FastCGI은 네이티브 웹 서버 모듈의 일부 성능 특성과 CGI 프로그래밍 인터페이스의 웹 서버 독립성을 결합한 웹 서버와 애플리케이션 간의 인터페이스입니다. AIX CGI 프로그램과 마찬가지로, AIX FastCGI 애플리케이션은 PASE for i 환경에서 실행됩니다.