[英]“Access Forbidden” - Passenger, Nginx, Rails
我知道有大約100個問題,但經過幾個小時的研究,我找不到我的解決方案。 這是我的nginx配置:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /home/LucyRb/public;
passenger_enabled on;
passenger_app_env production;
index index.html index.htm;
server_name <domain name>;
location / {
try_files $uri $uri/ /index.html;
passenger_enabled on;
}
}
我的/public
指導:
root@Lucy:/var/www/LucyRb/public# namei -l *
f: 404.html
-rwxrwxrwx root root 404.html
f: 422.html
-rwxrwxrwx root root 422.html
f: 500.html
-rwxrwxrwx root root 500.html
f: favicon.ico
-rwxrwxrwx root root favicon.ico
f: robots.txt
-rwxrwxrwx root root robots.txt
我不認為這是一個許可問題。 我已經運行了rake db:migrate
來創建數據庫,並且它有效。 我很確定環境設置正確。 我得到的只是一個文件列表(因為自動索引打開,否則我得到403)。 但路由,應用默認索引/根也不起作用。 我已經閱讀了Passenger文檔,我嘗試使用文檔和其他SO問題進行故障排除,但我似乎無法使其正常工作。
我沒有忘記bundle install
和所有正確的軟件包安裝,我很確定(我忘記了嗎? mysql
, rvm
及其安裝rails, nginx
, passenger
相關步驟......可能另外2-3) 。
我知道我不應該啟動rails server
因為它一次只允許1個連接。 所以nginx應該做得恰到好處,對吧? 或者這就是我應該用某些標志做的事情?
提前致謝。
大家好 在乘客的作者IRC頻道的幫助下,我能夠解決問題。
從我接下來的文章中我沒有詳盡地討論這個話題,我假設Passenger是Nginx的一個可安裝模塊,這導致我使用apt-get
安裝Nginx ,並通過gem安裝Passenger 。
在這些情況下,要么只使用apt-get
要么只使用gems。
passenger-install-nginx-module
不僅安裝了一個模塊,還從頭開始編譯Nginx,因為Nginx不是一個可模塊化的應用程序 。 它要么與模塊一起編譯,要么根本沒有。
確保配置指向正確的文件。
我也遇到了紅寶石的問題。 確保它指向包裝器,而不是單獨的可執行文件:
root@Lucy:/usr/local/rvm# which ruby /usr/local/rvm/rubies/ruby-2.0.0-p353/bin/ruby
在你的配置中:
passenger_ruby /usr/local/rvm/wrappers/ruby-2.0.0-p353/ruby;
建議 - 嘗試將您的應用程序移動到普通用戶可訪問的某個位置。例如主目錄
你是怎么安裝乘客的? 使用RVM? RVMSUDO還是sudo? 您可能不應該以root身份使用您的應用。 因此,文件的權限不允許乘客使用rails應用程序。
假設您的config.ru位於指定的passenger_app_root中,請嘗試刪除您的location / {...}
指令,重新啟動nginx,並查看您的應用是否至少啟動。 我不是說這是修復,而是一個故障排除措施。
我打算將此放在我的評論部分,但空間和格式有限,所以:
我也看到你兩次指定passenger_enabled
,這似乎是不必要的。 我之前從未在location
指令中看到過它,但這可能不是你的問題。
你的日志說什么? 您似乎沒有啟用乘客日志記錄/調試(在http指令中):
http {
...
passenger_debug_log_file '/path/to/passenger_debug.log';
passenger_log_level 5; # default
}
我從你的帖子中注意到的另一件事是你的公共目錄似乎不包含rails應用程序?
你有
# nginx config
root /home/LucyRb/public;
# shell
/var/www/LucyRb/public
你在/ home / LucyRb中有正確的應用程序嗎? 如果是這樣,/ var / www / LucyRb的相關性是什么? 如果這是你的配置中的錯誤,那么它可能會導致一些麻煩!
您是否嘗試將文件更改為www-data用戶?
每次我收到該錯誤都是因為Nginx沒有正確指向乘客寶石和可執行文件。 這是我的建議,讓事情有效:
passenger-install-nginx-module
,讓乘客在/opt
下載,編譯和安裝nginx。 /opt/nginx/conf/nginx.conf
的乘客腳本提供的示例配置。 /opt/nginx/sbin/nginx
到/etc/rc.local script
。 對於我在Ubuntu 10和12上運行RVM + Ruby 1.9,2.0和Rails 3和4,這個方法是可重復的,萬無一失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.