![](/img/trans.png)
[英]Passenger and Nginx unable to run rails application in production mode
[英]nginx and passenger to run my rails application
我是Rails的新手,並嘗試將我的rails應用程序(可以使用rails server
在我的計算機上完美運行)部署到服務器上。
我的服務器已安裝nginx
和passenger
,並且工作正常。 但是,當我在/opt/nginx/conf/nginx.conf
更改nginx
配置文件時,如下所示
....
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/ruby1.9.1;
....
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /home/path_to_my_app/public;
index index.html index.htm;
}
passenger_enabled on;
}
它不起作用。 我無法調用我的rails代碼。 它總是說404錯誤。
我使用service nginx restart
重新啟動了nginx
該service nginx restart
返回OK
,但是還是沒有運氣。
誰能告訴我如何調試。 我應該在哪里查看乘客正在運行的所有應用程序? 我缺少什么部分?
編輯 :我正在密切關注此文檔
似乎沒有/home/path_to_my_app/public
目錄。
在旅客版本5.0.7中,目錄訪問已更改。 現在,如果根目錄不存在,它會退回到nginx來搜索index.html,如果現在有這樣的文件,則會給出404錯誤。
[Nginx]現在,如果路徑以/結尾,則Nginx模塊將查找index.html,以便直觀地工作,而無需使用try_files。
“位置/”表示所有HTTP請求都將由該位置的處理程序處理,但是沒有一個,因此您將獲得“ 404未找到”。 我猜您的意思是您的主頁是index.html,因此將“位置/”更改為“位置= /”將解決您的問題。
更新
server { listen 80; server_name localhost; root /path/to/public; passenger_enabled on; }
server { listen 80; server_name localhost; root /path/to/public; passenger_enabled on; }
無需為簡單應用添加位置。
如果您的服務器日志顯示旅客代理在線,並且您運行sudo passenger-status
並看到列出了您的應用程序,則表明該代理已正確安裝。
您是否正在嘗試使用localhost訪問站點? 如果嘗試從服務器外部訪問它,則需要將server_name
設置為您的域或IP地址(並在進行任何更改后重新啟動nginx)。 如果在服務器上運行curl http://localhost
,您是否看到站點中的html,還是看到另一個404?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.