2012-12-16 117 views
0

我在使用nginx和 fastcgi部署Catalyst應用程序時遇到問題。我試圖在Ubuntu 12.04下做到這一點。nginx和催化劑配置

我已成功配置nginx以便從我的 應用的/ root子目錄中提供靜態內容。但是,當我嘗試使用我的動態 網址時,我在應用程序的錯誤日誌中收到404錯誤,說沒有找到 (未映射的)url,這導致我相信nginx是 試圖服務類似於一個靜態頁面,而不是 發送給我的催化劑應用程序。

要重申,打擊「本地主機:3001 /根/ static.html」在 靜態的內容結果成功地顯示在瀏覽器,但 打的「localhost:30001 /費用/編輯器」導致以下錯誤:

"GET /expense/editor HTTP/1.1" 404 

(其中「/費用/編輯器」在我的應用程序,一個運行內置的催化劑的開發 服務器時,我可以 成功訪問路徑)。

我推出了Catalyst應用爲:

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

我也嘗試運行/etc/init.d/fcgiwarp。我不清楚,如果我需要運行一個 單獨的fastcgi包裝,或者如果以上的perl腳本是我的fastcgi 包裝。我編輯fcgiwrap以使用TCP套接字(127.0.0.1:3003),然後 阻止我同時運行/etc/init.d/fcgiwrap和 腳本/ budgetweb_fastcgi.pl,因爲它們都使用 相同插座。所以我猜我只能使用催化劑 腳本?另外,在運行fcgiwrap時,當嘗試訪問靜態內容時,我收到502「錯誤網關」錯誤 。

任何幫助,或指導幫助,將不勝感激。到目前爲止,我已經看了看下面的頁面(除其他外,StackOverflow上只允許我發佈兩條鏈路):

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

這裏是服務器我nginx的配置文件:

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; 
} 

回答

0

Catalyst附帶的fastcgi.pl腳本是您的FastCGI包裝器。所有你需要做的就是在套接字上啓動它,然後將你的網絡服務器指向那個套接字,並且一切都應該通過。生產系統唯一要做的就是創建一個啓動/停止腳本,啓動和停止啓動和關閉應用程序。啓動命令看起來非常像你在上面運行的(你可能想要添加一個'-d'標誌來守護它)。

在你的web服務器配置上,配置'/'指向你的應用程序應該沒問題。您可以嘗試刪除'index','try_files'和'fastcgi_index'配置行,這可能會導致nginx嘗試靜態提供內容,而不是將請求傳遞給您的應用程序。