Mat*_*aja 5 ruby ruby-on-rails nginx
根据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;
Run Code Online (Sandbox Code Playgroud)
是我的nginx.conf文件中的一行.如果我用vi或nano打开这个包装器,那么我可以将EXPORT SECRET =添加到文件的顶部并且它可以工作.
其他文献表明,在/ etc/environment中设置环境变量也应该有效.
升级到Phusion Passenger 5时也应该解决这个问题,Phusion Passenger 5具有在nginx.conf中指定环境变量的工具.
| 归档时间: |
|
| 查看次数: |
1286 次 |
| 最近记录: |