2011-04-18 50 views
1

我剛纔用的Nginx設置乘客,它似乎安裝罰款,但是當我運行它,我嘗試啓動它:問題開始客運nginx的

passenger start -e production 

我得到:

=============== Phusion Passenger Standalone web server started =============== 
PID file: /root/rails_apps/myapp/tmp/pids/passenger.3000.pid 
Log file: /root/rails_apps/myapp/log/passenger.3000.log 
Environment: production 
Accessible via: http://0.0.0.0:3000/ 

You can stop Phusion Passenger Standalone by pressing Ctrl-C. 
=============================================================================== 
2011/04/18 07:17:27 [error] 9125#0: *4 "/root/rails_apps/myapp/public/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: _, request: "HEAD/HTTP/1.1", host: "0.0.0.0" 

當我嘗試在瀏覽器中訪問我的網站時,我收到「無法連接」。

這裏是nginx.conf

server { 
     listen 80; 
     server_name myapp.com; 
     root /root/rails_apps/myapp/public; # <--- be sure to point to 'public'! 
     passenger_enabled on; 
    } 

任何想法配置?

回答

2

試試這個:

sudo passenger start -e production 
+0

我以root身份運行 – Tam 2011-04-18 21:38:41

+0

嘗試改變'/根/ rails_apps/MYAPP/public'目錄的權限爲755 – Surya 2011-04-19 12:14:19

+0

@Surya它改爲755是一個壞主意,這是可行的,但它不是理想的生產環境。您可能只需將有問題的文件翻譯成nginx:nginx或使用nginx運行nginx,同時保留文件644。 – Alfie 2015-02-10 06:37:30

1

,因爲你指定的路徑是/根(/根/ rails_apps/MYAPP /公共),nginx的應該有足夠的權限:

user root;在nginx.conf

你也應該nginx的啓動爲超級用戶(須藤)

,但它可能是更好的只是移動你的Rails應用程序某處你的用戶目錄,並授予權限即可默認nginx的用戶「www數據「

user www-data; 
+0

我以root身份運行!我還需要這樣做嗎? – Tam 2011-04-18 21:41:08

3

這個錯誤似乎造成的,因爲Nginx的用戶不能訪問上述文件。它可以引起不只有在/根/ rails_apps/MYAPP /市民沒有正確的權限,但即使父目錄的一個沒有的!

在你nginx.conf,你可以看到:

user nginx; 

http { 
    # blah. 
} 

有時user的參數可以是不同的。請確保全部文件夾可供此用戶在路徑中使用。 您可以通過sudo -Hu nginx /bin/bash -lcat /root/rails_apps/myapp/public/index.html進行檢查。使用此命令再次測試並測試它,直到看不到文件的內容爲止。

有點解釋:用sudo命令,你以用戶身份啓動一個shell nginx。用cat命令可以模擬文件讀取。