设置Phusion乘客应用程序的环境变量

时间:2020-03-05 18:57:47  来源:igfitidea点击:

我已经在开发中设置了Passenger(Mac OS X),它可以完美运行。唯一的问题稍后出现:现在我有一个自定义的GEM_HOME路径,并且在'" / usr / local"`中安装了ImageMagick二进制文件。我可以将它们放在获取源代码的外壳rc文件之一中,这可以解决从控制台生成的进程的环境变量。但是乘客呢?以这种方式运行时,同一应用程序找不到我的宝石。

解决方案

回答

我也遇到过这个问题。看来,不幸的是,Passenger没有通过使用SetEnv` apache指令设置的值。

也许可以在environment.rb或者boot.rb中设置环境变量(假设我们在谈论Rails应用;我不熟悉Rack,但大概它具有类似的功能)

回答

在我们进行任何要求之前(尤其是在需要红宝石之前),我们可以执行以下操作:

ENV['GEM_HOME'] = '/foo'

这将在此过程中更改环境变量。

回答

我知道两种解决方案。第一个(此处记录)与manveru在代码中直接设置ENV变量基本相同。

第二个方法是围绕Passenger使用的Ruby解释器创建一个包装器,并在此处进行记录(查找passenger_with_ruby)。要点是我们创建/ usr / bin / ruby​​_with_env(并在Apache配置中将PassengerRuby指向),该可执行文件包含以下内容:

#!/bin/bash
export ENV_VAR=value
/usr/bin/ruby $*

两者都起作用;我认为,前一种方法没有那么扎实。

回答

我发现,如果我们在计算机上具有root特权,则可以在" envvars"文件中设置必要的环境变量,并且apachectl将在启动Apache之前执行该文件。

envvars通常位于apachectl在Mac OS X上的同一目录中,它在/ usr / sbin中。如果找不到,请查看apachectl脚本的源代码。

更改envvars文件后,使用" apachectl -k restart"重新启动Apache。