乘客问题:“没有要加载的文件” — / config / environment

问题描述 投票:5回答:2

我一直在研究这一问题,并在各处发现了类似问题的参考,但没有一个导致解决方案。我已经安装了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,因为以前从未遇到过此问题;自从我设置“乘客”以来已经有一段时间了。

谢谢您的建议。

编辑:请参阅下面的我偶然发现的答案。

ruby-on-rails nginx passenger
2个回答
2
投票

[自然,我只需要发布问题就可以找到答案。为了向搜索此问题的其他任何人提供信息,我将在此处发布一些详细信息。

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,我错过了它。


1
投票

[现代乘客比机架更喜欢机架。如果您的Rails应用程序中有config.ru,乘客将尝试将其作为机架应用程序加载。这可能会引起问题。特别是,您的错误消息指向config/environment -请注意,在Rails应用程序中缺少典型的.rb扩展名。

如果存在config.ru,请尝试将其移开。

© www.soinside.com 2019 - 2024. All rights reserved.