我一直在研究这个,并且在这里和那里发现了类似问题的参考,但它们都没有导致解决方案。我安装了乘客(2.2.11)和nginx(0.7.64),当我开始操作并点击Rails URL时,我收到一个错误页面,通知我一个加载错误:
没有要加载的文件 - / path / to / app / config / environment
从我在网上找到的这似乎是某种用户/权限错误,但我已经尝试了所有逻辑修复:我确保/config/environment.rb不归root所有,但是由webapp用户。我尝试过设置passenger_default_user,我尝试过设置passenger_user_switching。我甚至尝试过设置nginx用户,尽管这并不重要。我得到了一些不同的结果,但实际上没有任何效果。我希望有人可能拥有这种神奇的设置和权限组合。我可能会尝试退回到早期版本的Passenger,因为我之前从未遇到过这个问题;自从我成立Passenger之后已经有一段时间了。
感谢您的任何建议。
编辑:见下面我偶然发现的答案。
答案 0 :(得分:2)
当然,它只是让我发布问题,偶然发现答案。为了向搜索此问题的其他人提供信息,我将在此处发布一些详细信息。
来自nginx.conf的相关行:
用户www-data; #以使nginx不以root身份运行
passenger_default_user www-data; #同样适用于乘客
root / opt / foo / app / current / public;
此时的关键是确保应用程序文件归www-data所有,特别是config / environment.rb,因为显然Passenger会查看其所有者以确定运行方式。这可能意味着passenger_default_user条目无关紧要?但最好还是将它作为意图文档存在,或许。
最后,请确保您的应用程序的父目录都可以通过www-data访问 - 在我的情况下,系统默认设置已经离开了一个目录0700,我错过了。
答案 1 :(得分:1)
现代乘客更喜欢Rack to Rails。如果您的Rails应用程序中有config.ru
,Passenger将尝试将其作为Rack应用程序加载。这可能会导致问题。特别是,您的错误消息引用config/environment
- 请注意Rails应用程序中缺少.rb
扩展名。
如果存在,请尝试移开config.ru
。