我知道有大约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
directiory:
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应该做得恰到好处,对吧?或者这就是我应该用某些旗帜做的事情?
提前致谢。
答案 0 :(得分:1)
好的大家好在乘客的作者IRC频道的帮助下,我能够解决问题。
从我接下来的文章中没有详尽地讨论这个主题,我假设 Passenger 是 Nginx 的可安装模块,这导致我安装<强大> Nginx ,apt-get
,乘客,通过宝石。
在这些情况下,只使用 apt-get
或 这些宝石。
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;
答案 1 :(得分:0)
Suggestion- 尝试将您的应用程序移动到普通用户可访问的位置。例如主目录
答案 2 :(得分:0)
你是如何安装乘客的?使用RVM? RVMSUDO还是sudo?您可能不应该以root身份使用您的应用。因此,文件的权限不允许乘客使用rails应用程序。
答案 3 :(得分:0)
假设您的config.ru位于指定的passenger_app_root中,请尝试删除location / {...}
指令,重新启动nginx,然后查看您的应用是否至少启动。我不是说这是修复,而是一个故障排除措施。
答案 4 :(得分:0)
我打算将此放在我的评论部分,但空间和格式有限,所以:
我也看到你两次指定passenger_enabled
,这似乎是不必要的。我之前从未在location
指令中看到过它,但这可能不是你的问题。
你的日志说什么?您似乎没有启用乘客日志记录/调试(在http指令中):
http {
...
passenger_debug_log_file '/path/to/passenger_debug.log';
passenger_log_level 5; # default
}
我从你的帖子中注意到的另一件事是你的公共目录似乎没有包含rails应用程序?
答案 5 :(得分:0)
你有
# nginx config
root /home/LucyRb/public;
# shell
/var/www/LucyRb/public
/ home / LucyRb中有正确的应用吗?如果是这样,/ var / www / LucyRb的相关性是什么?如果这是你的配置中的错误,那么它可能会导致一些麻烦!
答案 6 :(得分:0)
您是否尝试将文件更改为www-data用户?
答案 7 :(得分:0)
每次我收到错误都是因为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,这个方法是可重复的,万无一失。