我已經在開發中設置了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