2012-12-16 9 views
0

nginx 및 fastcgi를 사용하여 Catalyst 응용 프로그램을 배포하는 데 문제가 있습니다. 우분투 12.04에서이 작업을 시도했습니다.nginx 및 촉매 구성

내 앱의/root 하위 디렉토리에서 정적 콘텐츠를 제공하도록 nginx를 성공적으로 구성했습니다. 그러나 내 동적 인 URL 중 하나를 시도 할 때 응용 프로그램의 오류 로그에 (매핑되지 않은) URL을 찾을 수 없다는 404 오류가 발생합니다.이 오류는 nginx가 과 비슷한 요청을 처리하려고 시도하는 것으로이 끕니다. 대신 정적 페이지를 사용하여 Catalyst 응용 프로그램으로 보냅니다. 다음과 같은 오류가 발생 : '30001/비용/편집자는 로컬 호스트'타격 정적 콘텐츠의 결과 성공적으로 브라우저에 표시되고 있지만, :

는 '3001/루트/static.html 로컬 호스트'가 타격, 재 작성

"GET /expense/editor HTTP/1.1" 404 

('/ 비용/편집기'내 앱에 내장 된 촉매 개발 서버를 실행할 때 나는 성공적으로 액세스 할 수있는 하나의 경로입니다).

내가 같이 촉매 응용 프로그램을 실행하고 있습니다 :

> perl script/budgetweb_fastcgi.pl -l localhost:3003 

또한 /etc/init.d/fcgiwarp를 실행했습니다. 별도의 fastcgi 래퍼를 실행해야하거나 위의 perl 스크립트가 my fastcgi 래퍼 인 경우 명확하지 않습니다. TCP 소켓 (127.0.0.1:3003)을 사용하기 위해 fcgiwrap을 편집했는데 은 /etc/init.d/fcgiwrap와 스크립트/budgetweb_fastcgi.pl을 동시에 실행하지 못하도록 막았습니다. 왜냐하면 둘 다 동일한 번호 을 사용하기 때문입니다. 소켓. 그래서 저는 Catalyst 스크립트 만 사용한다고 추측합니다. 또한 fcgiwrap을 실행할 때 정적 컨텐트에 액세스하려고 시도 할 때 "불량 게이트웨이"오류 가 발생합니다.

도움이 될만한 도움이나 조언을 보내 주시면 감사하겠습니다. 지금까지 나는 다음 페이지에서 보았다 (다른 사람의 사이에서, StackOverflow의 만 나 두 개의 링크를 게시 할 수 있습니다) :

server { 
     listen  3001; 
     server_name budgetweb.com; 
     root  /local/www/money/budgetweb; 

     location /root { 
      add_header Cache-control public; 
     root /local/www/money/budgetweb/; 
     } 

     location/{ 
      access_log /local/www/money/budgetweb/logs/access.log; 
      error_log /local/www/money/budgetweb/logs/error.log; 
      index index.html index.htm index.pl; 
     try_files $uri =404; 
     gzip off; 

     fastcgi_pass localhost:3003; 
      fastcgi_index index.pl; 

      include /etc/nginx/fastcgi_params; 
      fastcgi_param SCRIPT_FILENAME /local/www/money/budgetweb$fastcgi_script_name; 
     fastcgi_param SCRIPT_NAME /; 
     fastcgi_param PATH_INFO $fastcgi_script_name; 
     } 

     # Disable gzip (it makes scripts feel slower since they have to complete 
     # before getting gzipped) 
     gzip off; 

#  include   /etc/nginx/fcgiwrap.conf; 
} 
:

여기 Catalyst wiki
HOWTO: Deploy a Catalyst application using FastCGI and nginx

서버 내의 nginx 설정 파일입니다

답변

0

Catalyst에 포함 된 fastcgi.pl 스크립트는 FastCGI 래퍼입니다. 소켓에서 시작한 다음 웹 서버를 해당 소켓으로 향하게하고 모든 것이 통과되어야합니다. 프로덕션 시스템에서 수행하고자하는 유일한 작업은 시작 및 종료시 응용 프로그램을 시작하고 중지하는 시작/중지 스크립트를 작성하는 것입니다. 시작 명령은 위에서 실행 한 것과 거의 비슷하게 보입니다 (데몬을 만들기 위해 '-d'플래그를 추가 할 수 있습니다).

웹 서버 구성에서 응용 프로그램을 가리 키도록 '/'를 구성하는 것이 좋습니다. . 'index', 'try_files'및 'fastcgi_index'구성 줄을 제거해보십시오. nginx가 응용 프로그램에 요청을 전달하는 대신 정적으로 콘텐츠를 제공하려고 시도 할 수 있습니다.