簡體   English   中英

Nginx和乘客運行我的Rails應用程序

[英]nginx and passenger to run my rails application

我是Rails的新手,並嘗試將我的rails應用程序(可以使用rails server在我的計算機上完美運行)部署到服務器上。

我的服務器已安裝nginxpassenger ,並且工作正常。 但是,當我在/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重新啟動了nginxservice nginx restart返回OK ,但是還是沒有運氣。

誰能告訴我如何調試。 我應該在哪里查看乘客正在運行的所有應用程序? 我缺少什么部分?

編輯 :我正在密切關注此文檔

似乎沒有/home/path_to_my_app/public目錄。

在旅客版本5.0.7中,目錄訪問已更改。 現在,如果根目錄不存在,它會退回到nginx來搜索index.html,如果現在有這樣的文件,則會給出404錯誤。

[Nginx]現在,如果路徑以/結尾,則Nginx模塊將查找index.html,以便直觀地工作,而無需使用try_files。

https://blog.phusion.nl/2015/04/29/passenger-5-0-7/

“位置/”表示所有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM