根据
https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html#env_vars_passenger_apps 15.3.5的文档,Phusion Passenger应该从.bashrc中读取环境变量.我正在尝试使用Nginx和Phusion passenger从名为rails的用户帐户运行rails 4.2应用程序,并在我尝试在浏览器中加载时出现502错误的网关错误.该过程在正确的用户下运行.当我在rails app目录中打开ruby控制台时,我会看到来自我的bashrc的环境变量,包括secret_key_base.但是当我关闭我的Nginx日志时,我得到的错误是它无法找到secret_key_base.我尝试在其他地方添加它,包括/etc/bash.bashrc和/etc/Nginx.conf.
解决方法
我找到了这个可怕问题的答案.答案是在
https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems的“Bash提前终止”标题下.事实证明,如果shell不是交互式的,则Ubuntu .bashrc不会运行. Phusion Passenger不在交互式shell中运行.因此,我们不会为Phusion Passenger流程加载这些环境变量.
迈克的评论正在进行中.如果您正在使用rvm,那么Nginx指向一个ruby脚本,您可以在ruby启动之前将环境变量放入其中.
passenger_ruby /home/rails/.rvm/gems/ruby-2.2.1@was_i_towed/wrappers/ruby;
是我的Nginx.conf文件中的一行.如果我用vi或nano打开这个包装器,那么我可以将EXPORT SECRET =添加到文件的顶部并且它可以工作.
其他文献表明,在/ etc / environment中设置环境变量也应该有效.
升级到Phusion Passenger 5时也应该解决这个问题,Phusion Passenger 5具有在Nginx.conf中指定环境变量的工具.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。