我一直在研究这一问题,并在各处发现了类似问题的参考,但没有一个导致解决方案。我已经安装了passenger(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,因为以前从未遇到过此问题;自从我设置“乘客”以来已经有一段时间了。
谢谢您的建议。
编辑:请参阅下面的我偶然发现的答案。
[自然,我只需要发布问题就可以找到答案。为了向搜索此问题的其他任何人提供信息,我将在此处发布一些详细信息。
nginx.conf
中的相关行:
user www-data; # in order to have nginx not run as root
passenger_default_user www-data; # likewise for passenger
root /opt/foo/app/current/public;
这时的关键是确保应用程序文件归www-data拥有,尤其是config/environment.rb
,这是因为显然Passenger会查看其所有者来确定运行者。这可能意味着passenger_default_user
条目不相关吗?但是,无论如何,最好将其作为意图的文档存储在其中。
最后,请确保您的应用程序的所有父目录都可以通过www-data
进行访问-在我的情况下,系统默认设置已留下目录0700
,我错过了它。
[现代乘客比机架更喜欢机架。如果您的Rails应用程序中有config.ru
,乘客将尝试将其作为机架应用程序加载。这可能会引起问题。特别是,您的错误消息指向config/environment
-请注意,在Rails应用程序中缺少典型的.rb
扩展名。
如果存在config.ru
,请尝试将其移开。