FastCGI는 구체적으로 무엇을 수행합니까(Ruby, Java 및 Python용)?

FastCGI는 구체적으로 무엇을 수행합니까(Ruby, Java 및 Python용)?

Apache를 실행하는 서버가 있고 FastCGI를 설치하면 Ruby 및 Python 스크립트를 실행할 수 있습니까? Python이 이미 서버에 설치되어 있는 경우 Python 스크립트가 작동하도록 httpd.conf 파일의 CGI 섹션에 .py를 추가하면 되지 않나요?

Ruby 및 Java의 경우 Ruby 및 Java를 설치하면 Mongrel 및 Tomcat이 필요하지 않습니까?

내가 놓친 것이 없다면 FastCGI에서는 이미 할 수 있는 작업만 수행할 수 있는 것 같습니다.

답변1

FastCGI는 "표준" CGI 스크립트를 대체합니다.

기존 CGI에서는 웹 서버가 스크립트를 시작하고, 요청을 보내고, 응답을 기다린 다음 스크립트가 종료될 것으로 예상했습니다.

FastCGI의 주요 특징은 스크립트가 죽지 않고 계속해서 다른 요청을 기다리는 것입니다. 이는 다른 프로세스가 생성되지 않고 아마도 해석된 스크립트가 다시 로드되지 않기 때문에 훨씬 더 효율적입니다. 이는 Perl, Ruby 및 거의 모든 다른 언어에 대한 주요 승리입니다.

단점은 이런 종류의 일을 처리하려면 스크립트를 작성해야 한다는 것입니다. 어렵지 않습니다.

따라서 FastCGI는 요청 서비스의 영향을 줄이는 것입니다.

Ruby on Rails(Ruby뿐만 아니라)를 사용하고 있다면 Phusion Passenger를 살펴보세요. Ruby on Rails를 매우 훌륭하게 실행하게 해주는 멋진 서버 플러그인 중 하나입니다.

mod_python의 경우 확실히 그렇게 할 수 있습니다. 그러나 절충안이 있습니다. 첫째, CGI 스크립트는 기본 웹 서버가 아닌 다른 사용자로 실행될 수 있습니다. mod_python이 이 작업을 수행하는지 모르겠습니다. 권한 문제에 대해 다른 사용자로 실행하고, 다른 사용자에서 실행하여 애플리케이션을 분리하는 등의 작업을 수행하는 것은 매우 유용할 수 있습니다.

따라서 질문에 조금 다르게 대답하려면 mod_python 및 Phusion Passenger를 사용하려는 경우 FastCGI를 사용할 필요가 없습니다. 서버가 아닌 다른 프로세스에서 스크립트를 실행해야 하는 경우 가능하다면 일반 CGI 대신 FastCGI를 사용하는 것이 좋습니다.

답변2

FastCGI는 CGI의 최적화된 버전입니다. CGI의 인터페이스와 일치하여 분산 컴퓨팅을 추가합니다.

CGI를 통해 Python 스크립트를 실행할 수 있지만(cgitb 모듈이 도움이 됨) 일반적으로 성능 및 기능상의 이유로 mod_python과 같은 프레임워크를 사용하는 것이 더 좋습니다. 상황은 Ruby와 Java와 비슷합니다.

나는 당신이 무엇을 하려는지 잘 모르겠습니다. Mongrel이나 Tomcat을 FastCGI로 대체할 수는 없습니다. 그들은 완전히 다른 짐승입니다. 웹 서버에 대한 인터페이스에 맞게 애플리케이션을 다시 작성해야 합니다.

관련 정보