2014-04-25 68 views
2

嘿,我已經在服務器上部署了一個使用phusion Passenger(4.0.20)Rails 3.0.3和Ruby ruby-1.8.7-p374的Rails應用程序。在同一個系統中,我們正在使用其他Rails和Ruby版本管理其他rails項目。我們使用RVM來管理紅寶石。Phusion Passenger使用多個RVM紅寶石處理多個項目的問題

做RVM列表顯示:

rvm rubies 

    ruby-1.8.7-p371 [ x86_64 ] 
=* ruby-1.8.7-p374 [ x86_64 ] 
    ruby-2.0.0-p353 [ x86_64 ] 
    ruby-2.0.0-p451 [ x86_64 ] 
    ruby-2.1.0 [ x86_64 ] 
    ruby-2.1.1 [ x86_64 ] 

# => - current 
# =* - current && default 
# * - default 

,我在運行使用ruby-1.8.7-p374Rails 3.0.3已經問題的項目。現在,當我拿到網址時,它會顯示下面給出的錯誤。 enter image description here

重啓動Apache的,重新開始載客,但我們得到我們已經安裝了用於管理其他Rails應用程序與ruby-2.0.0-p451問題。

可能是什麼原因?請幫助:)

+1

你確定你的用戶可以訪問到'rvm'? –

+1

是的,我已經使用'rvm fix-permissions'修復了它。 –

回答

0

轉到項目目錄,並運行下面的命令逐個:

rvm use ruby-1.8.7-p374 
gem install bundler passenger 
rvm passenger-install-apache2-module 

這將Apache模塊一起安裝的乘客,意味着同時你會被要求增加一些配置變化到/etc/apache2/apache2.conf並且這樣做。

爲您的網站創建/etc/apache2/sites-available/文件(像 'www.virtualx.com'),並插入此:

<VirtualHost *> 
    # Change these 3 lines to suit your project 
    RailsEnv production 
    ServerName www.virtualx.com 
    DocumentRoot /var/www/my_project/publiC# Note the 'public' directory 
</VirtualHost> 

PassengerRuby選項設置爲ruby-1.8.7-p374

重新啓動Apache服務。你們都完成了。

現在它會正常工作。

如果您需要多個ruby版本同時適用於不同的項目,請參考here

希望它能幫助:)

+0

無需在不同的RVM Ruby或不同的gemset下重新安裝Phusion Passenger。您可以使用任何RVM Ruby和任何gemset安裝Phusion Passenger,只要您正確配置了某些內容,結果就可以與*任何其他RVM Ruby/gemset配合使用。見http://www.modrails.com/documentation/Users%20guide%20Apache.html#relationship_with_ruby – Hongli

0

您的項目目錄中是否有.ruby-version?您的項目試圖加載的ruby-2.0.0-p451代替ruby-1.8.7-p374

有一個.ruby版本在您的項目目錄你想要的集版本,即ruby-1.8.7-p374和嘗試。

Use rvmrc or ruby-version file to set a project gemset with RVM?

+0

當我從我的項目目錄中運行'紅寶石-v',它清楚地說,它是使用'紅寶石1.8.7-p374'。所以,情況並非如此。無論如何,謝謝你的回覆。 –

+0

您是單獨運行乘客站還是與nginx運行? – SreekanthGS

+0

您可以看到標籤,我使用apache模塊運行乘客。 –

0

在這裏我看到兩個問題:

  1. 的Phusion乘客試圖使用/usr/local/rvm/gems/ruby-2.0.0-p451作爲紅寶石解釋器來運行你的應用程序。但是/usr/local/rvm/gems/ruby-2.0.0-p451是一個目錄,不是可執行文件!此外,你打算在ruby-1.8.7-p374下運行你的應用程序,而不是ruby-2.0.0-p451。這意味着你沒有正確設置你的PassengerRuby選項。閱讀http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerRuby以瞭解如何正確設置。本手冊甚至有一節專門介紹如何在使用RVM時執行此操作。
  2. 正如您在「用戶和組」中所看到的,Phusion Passenger試圖以「nobody」用戶身份執行您的應用。這可能不是你想要的!使用PassengerUser來更改執行應用程序的用戶。

在附註中,您應該升級到最新版本的Phusion Passenger,4.0.41,以獲取最新的錯誤修復。

+0

感謝您的回答。將檢查它,並接受,如果它真的幫助:) –