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 应用程序目录中打开 ruby 控制台时,我看到来自我的 bashrc 的环境变量,包括 secret_key_base。然而,当我尾随我的 nginx 日志时,我得到的错误是它无法找到 secret_key_base。我尝试在其他地方添加它,包括 /etc/bash.bashrc 和 /etc/nginx.conf.
我找到了这个可怕问题的答案。答案在标题 "Early Termination in Bash" 下的 https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems 中。事实证明,如果 shell 不是交互式的,Ubuntu .bashrc 不会 运行。 Phusion Passenger 不会 运行 进行互动 shell。因此,我们不会为 Phusion Passenger 进程加载这些环境变量。
Mike 的评论是正确的。如果您使用的是 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 中指定环境变量。
根据 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 应用程序目录中打开 ruby 控制台时,我看到来自我的 bashrc 的环境变量,包括 secret_key_base。然而,当我尾随我的 nginx 日志时,我得到的错误是它无法找到 secret_key_base。我尝试在其他地方添加它,包括 /etc/bash.bashrc 和 /etc/nginx.conf.
我找到了这个可怕问题的答案。答案在标题 "Early Termination in Bash" 下的 https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems 中。事实证明,如果 shell 不是交互式的,Ubuntu .bashrc 不会 运行。 Phusion Passenger 不会 运行 进行互动 shell。因此,我们不会为 Phusion Passenger 进程加载这些环境变量。
Mike 的评论是正确的。如果您使用的是 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 中指定环境变量。