저는 fastcgi를 사용하여 Linux에서 Apache를 설정하는 방법에 대한 포럼 게시물, 튜토리얼 등을 많이 읽었습니다. Ruby 개발(Rails 아님)을 위해 fcgi를 실행하려고 하는데 모든 언어에 적용되어야 한다고 생각합니다. 내 웹 상자에는 이미 apache, fastcgi, ruby-fcgi 등이 설치되어 있습니다.
개념적으로는 어려움을 겪고 있습니다. Apache는 필요에 따라 지정된 fcgi 프로세스를 생성합니까? 사이드 아파치와 함께 시작합니까? 기본적으로, 나는 적절한 질문을 할 수 있는 지점에 도달하려고 노력하고 있으므로 제목이 오해의 소지가 있다면 사과드립니다.
답변1
글쎄, 그러는 동안 나는 이것을 알아 냈습니다. 이 주제에 대한 간결한 글이 없었기 때문에 여기에 첫 번째 글이 있습니다. 모든 버그가 해결되면 이를 일부 튜토리얼 사이트에 제출하겠습니다.
기본 fastcgi Apache 모듈이 설치되어 있는지 확인하십시오. 저처럼 ArchLinux를 사용하신다면,aur의 mod_fcgid공장. 다른 배포판에서는 mod_fcgid 또는 mod_fastcgi를 설치하세요. (차이가 궁금하신 분들을 위해 별 차이는 없을 것 같아서 활동량이 많은 쪽을 선택했습니다.)
httpd.conf 파일에서 LoadModule 정의 시작 부분에 행을 추가하여 모듈을 활성화하십시오. 어떤 배포판이 중요한지 확실하지 않지만 Arch에서는 중요했습니다.
Loadmodule fcgid_module modules/mod_fcgid.so
httpd.conf에 새 섹션을 추가하십시오. 나는 이것을 cgid_module 섹션 바로 아래에 두었지만 위치는 임의적일 것이라고 확신합니다.
<IfModule fcgid_module> AddHandler fcgid-script .fgci </IfModule>
이제 제가 이해한 바로는 ExecCGI로 표시된 디렉토리에 있는 .fcgi 확장자를 가진 모든 파일은 이제 설치된 fastcgi 모듈에 의해 처리됩니다. 설치했습니다이것Ruby에게 fastcgi 바인딩을 제공하기 위한 패키지, ExecCGI 디렉토리 내부에서 이 테스트 스크립트를 작성했습니다.
test.rb.fcgi
#!/usr/bin/ruby -w require 'fcgi' count = 0 FCGI.each_cgi do puts "Content-type: text/html\n\n" puts "Hello, Ruby! FastCGI(#{count})" count = count + 1 end
이제 브라우저에서 해당 페이지로 이동하면 은 count
fastcgi 루프 외부에 있으므로 페이지를 볼 때마다 증가해야 합니다. 그렇다면 fcgi가 올바르게 설정된 것입니다.
답변2
당신은 사용을 조사해야승객레일 애플리케이션을 처리하기 위해(ActiveRecord 등과 같은 레일 기능을 사용하지 않는 경우에도) 많은 웹사이트가 실행되고 있습니다(또한 Rails Enterprise를 갖추고 있으며 메모리는 적고 성능은 더 좋습니다).
답변3
Apache는 fastcgi 인터페이스를 사용하여 이를 생성해야 합니다. 그러나 한동안 실행 상태를 유지하며 각 프로세스는 Apache에 의해 종료되기 전에 둘 이상의 요청을 처리해야 합니다.
답변4
Apache는 필요에 따라 지정된 fcgi 프로세스를 생성합니까? 사이드 아파치와 함께 시작합니까?
Apache가 당신을 위해 그것들을 생성할 것입니다. httpd.conf에서 생성할 최소 및 최대 프로세스 수를 설정할 수 있으며, 들어오는 요청의 양에 따라 새 프로세스를 생성하고 오래된 프로세스를 종료합니다. 요청이 들어오는 한 프로세스는 계속 실행됩니다.