繁体   English   中英

Phusion Passenger 4和nginx在Ubuntu Linux中看不到环境变量

[英]Phusion Passenger 4 & nginx cannot see environment variables in Ubuntu Linux

根据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中指定环境变量的工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM