我已经在开发中设置了Passenger(Mac OS X),它的工作原理完美无瑕。后来唯一的问题是:现在我有一个自定义的GEM_HOME
路径和安装在"/usr/local"
中的ImageMagick二进制文件。我可以将它们放入其中一个源代码的shell rc文件中,这样可以解决从控制台产生的进程的环境变量;但是Passenger呢?以这种方式运行时,相同的应用程序无法找到我的宝石。为Phusion乘客应用程序设置环境变量
回答
我知道两种解决方案。第一个(记录为here)基本上与manveru的 - 直接在您的代码中设置ENV变量相同。
第二个是为Passenger使用的Ruby解释器创建一个包装,并记录here(查找passenger_with_ruby)。要点是,你创建(和你的Apache配置指向PassengerRuby于)在/ usr/bin中/ ruby_with_env,可执行文件包括:
#!/bin/bash
export ENV_VAR=value
/usr/bin/ruby $*
两个工作;我认为,前一种方法有点不那么骇人听闻。
为了防止其他人遇到同样的问题,我不得不:`chmod + x/usr/bin/ruby_with_env`。 – 2011-10-02 16:53:40
我也遇到过这个问题。它appears乘客不通过值设置使用SetEnv
apache指令 - 这是不幸的。
也许有可能设置环境变量在你的environment.rb或的boot.rb(假设你在谈论一个Rails应用程序,我不熟悉的机架上,但据推测它具有类似的功能)
在你做任何需要(特别是需要RubyGems的前),你可以这样做:
ENV['GEM_HOME'] = '/foo'
这将改变这一进程中的环境变量。
我发现如果你在计算机上有root权限,那么你可以在“envvars”文件中设置必要的环境变量,apachectl将在启动Apache之前执行这个文件。
envvars通常位于apachectl所在的同一目录中 - 在Mac OS X上,它位于/ usr/sbin中。如果找不到它,请查看apachectl脚本的源代码。
更改envvars文件重新启动Apache与“apachectl -k restart”后。
- 1. 要设置环境变量为一个Python Web应用程序
- 2. 为ClickOnce应用程序设置环境变量?
- 3. GIT:设置应用环境变量
- 4. 在Sinatra应用程序中设置环境变量?
- 5. 应用程序设置文件中的环境变量
- 6. 设置应用程序的环境变量Maven
- 7. 虚拟应用程序的不同应用程序设置/环境变量
- 8. 乘客/ nginx的 - 环境变量传递,或乘客变量传递
- 9. Sinatra和Phusion乘客的线程行为
- 10. 设置环境变量
- 11. 设置Maven环境变量
- 12. 设置环境变量
- 13. 设置环境变量
- 14. Elasticsearch设置环境变量
- 15. C#设置环境变量
- 16. htaccess设置环境变量
- 17. 设置apache环境变量
- 18. DrJava设置环境变量
- 19. Phusion乘客:在我的所有应用程序上获得404
- 20. Phusion乘客偏好窗格多个应用程序
- 21. 如何设置GlassFish中的环境变量为特定应用程序(或域)
- 22. 如何为python设置环境变量
- 23. 为Eclipse设置环境变量?
- 24. 如何为Jython设置环境变量?
- 25. 将环境变量设置为Cookie(apache)
- 26. Ubuntu为Django设置环境变量
- 27. 使用Shibboleth属性作为Ruby环境变量(Phusion Passenger)
- 28. 烧瓶/ gunicorn:从环境变量设置环境变量
- 29. 为VC命令行环境永久设置环境变量
- 30. 以编程方式设置程序所需的环境变量
更新:自乘客2.2.3以来,“支持SetEnv指令:http://blog.phusion.nl/2009/06/17/phusion-passenger-223-released-bug-fix-edition/正确。 Ben的答案很好,但现在不需要再使用它了(在大多数情况下)。 – mislav 2009-06-30 17:25:15