CGI 작업흐름을 이해하려고 노력 중입니다. 예를 들어, CGI와 함께 Unix 쉘 스크립트를 사용한다고 가정하면 클라이언트가 웹 서버(Apache)에 요청을 보낼 때 스크립트를 실행하기 위해 수행되는 일련의 단계는 무엇입니까? 읽음으로써 다음 단계를 얻었습니다.링크 1그리고링크 2, 하지만 이것이 완료되었는지 묻고 싶습니다.
- Apache는 포트 80에서 요청을 수신합니다. 이는 CGI에 대한 요청임을 확인합니다.
- Apache는 CGI 프로세스를 포크하고 실행합니다.
- CGI는 실행할 스크립트를 확인하고 필요한 사항을 기록합니다(예: #!/bin/sh(따라서 쉘 스크립트)).
- CGI 포크 및 /bin/sh 실행
- 쉘은 스크립트를 구문 분석하고 실행합니다.
답변1
"CGI 프로세스"라고 부르는 것은 CGI 프로그램입니다. CGI 프로그램은 모든 언어로 된 스크립트이거나 컴파일된 실행 파일일 수 있습니다.
운영 체제가 실제로 CGI 프로그램 코드를 실행하는 방법(2, 3, 4, 5단계)에 대한 세부 사항은 CGI 작동 방식을 이해하는 데 꼭 필요한 것은 아닙니다.
나는 이것을 이렇게 생각합니다(여기서는 2~5단계가 2단계로 압축되어 있습니다).
- Apache가 요청을 수신합니다. - CGI 프로그램에 대한 요청이라고 생각합니다.
- Apache는 CGI 프로그램을 실행하고 요청의 매개변수를 환경의 CGI 프로그램에 환경 변수로 전달합니다.
- CGI 프로그램은 환경에서 매개변수를 가져오고, 필요한 처리를 수행하고, 웹 페이지를 표준 출력에 기록합니다.
- Apache는 CGI 프로그램의 표준 출력에서 웹 페이지를 수신하고 이를 웹 클라이언트(일반적으로 웹 브라우저)로 전송합니다.
2~5단계에서 논의하는 대부분의 세부 사항은 execve
매뉴얼 페이지(Linux에서 작동하는 코드 예제 포함) 에 포함되어 있습니다 man 2 execve
. 당신은 또한 한 번 살펴보고 싶을 수도 있습니다 fork
. 이는 CGI의 주제를 떠나 Unix 프로세스 모델의 주제로 들어섰습니다. 나중에 다른 질문에 대답하는 것이 좋습니다.
CGI에 대한 정확하고 자세한 설명은 사양의 인터넷 초안을 참조하세요.
WWW 공통 게이트웨이 인터페이스 버전 1.1
당신은 또한 볼 수 있습니다
Apache 튜토리얼: CGI를 사용한 동적 콘텐츠
답변2
내가 본 것 중 CGI의 작동 방식에 대한 가장 좋은 설명 중 하나는 이 책입니다.