[英]“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.