我想(最后)将我的Passenger安装从版本3更新到4,但是我在设置GEM_PATH env变量时遇到了一些问题,就像我对v3一样。
在我的Apache配置中,我有以下一行,告诉乘客在哪里找到我的rvm gemsets(注意@my_set
):
SetEnv GEM_PATH "/.../.rvm/gems/ruby-1.9.3-p448@my_set:/.../.rvm/gems/ruby-1.9.3-p448@global"
这适用于Passenger v3。但是,当我切换到版本4时,应用程序无法加载,调试视图显示以下内容:
GEM_PATH = /.../.rvm/gems/ruby-1.9.3:/.../.rvm/gems/ruby-1.9.3-p448@global
这似乎是系统默认设置。
使用setenv设置任何其他ENV变量。例如,我添加了行
SetEnv TEST_VAR "FOO"
到我的apache配置,它在乘客调试视图中显示出来,没有任何障碍:
TEST_VAR = "FOO"
感觉Passenger专门以某种方式覆盖了我的GEM_PATH环境变量。据我所知,在文档中没有提到这一点。任何想法都将不胜感激。
答案 0 :(得分:1)
你可以通过其他方式做到这一点。由于您在版本3或4中使用Rails与捆绑器,因此您可以使捆绑器隔离所有用于生产服务器上的应用程序的gem,并将它们的副本放入应用程序文件夹中。要做到这个问题:
bundle install --deployment
您可以在Bundler Deployment documentation
中详细了解相关信息你也可以阅读有关如何使用gemsets制作RVM work with Passenger 3(它可以转移到4),但在我看来,使用捆绑器部署是更好的选择。
答案 1 :(得分:-1)
我不确定它会对你有所帮助,但是,考虑到PassengerRuby和PassengerDefaultRuby配置,而不是考虑GEM_PATH。 http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerRuby
Passenger肯定会尝试使用你系统的默认ruby,你必须告诉它使用好的,也就是说用yVM安装的那个。要在控制台中找到正确的红宝石,请确保您使用的红宝石是您要使用的红宝石,您可以输入
ruby -v
which ruby
rvm list
rvm use [the one you want to use]
一旦您确定在此终端会话中,您正在使用的红宝石是您希望乘客使用的,请输入此命令
passenger-config about ruby-command
然后您应该看到如下行:
To use in Apache: PassengerRuby /home/tommyjam/.rvm/gems/ruby-2.1.1/wrappers/ruby
复制有趣的信息并将其粘贴在好的位置,也就是说,就像乘客说的那样
PassengerRuby可能随处可见:全局服务器配置,<VirtualHost>
,<Directory>
,<Location>
和.htaccess,如果启用了AllowOverride选项
您也可以将PassengerRuby更改为PassengerDefaultRuby并将其置于全局服务器配置中,我想在/etc/apache2/mods-available/passenger.conf中
希望它会对你有所帮助:)。