2012-11-21 94 views
2

我有Rails3,Phusion乘客3和apache。 我有一個控制器和一個視圖來打印hello world的相當簡單的應用程序。 如果從虛擬主機「RailsEnv開發」中刪除此行,我得到http 500錯誤,如下 「500內部服務器錯誤」。 如果我放回行「RailsEnv開發」應用程序工作正常。 是否有關於需要設置生產才能工作的乘客?使用Phusion Passenger與Apache的Rails 3在生產模式下不起作用

我只需要測試我的新乘客安裝是否可以在生產模式下工作。

以下是相關配置。 [usertest @測試服務器web_app1] $紅寶石-v 紅寶石1.9.3p327(2012年11月10日修訂37606)

[[email protected] web_app1]$ which ruby 
/usr/local/bin/ruby 

[[email protected] web_app1]$ cat /etc/apache/conf.d/passenger.conf 
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger- 3.0.18/ext/apache2/mod_passenger.so 
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18 
PassengerRuby /usr/local/bin/ruby 

<VirtualHost *:80> 
    ServerName siteexample.com 
DocumentRoot /var/www/mysites/apps/web_app1/public 
RailsEnv development 
<Directory /var/www/mysites/apps/web_app1/public>  
    AllowOverride all   
    Allow from all 
    Options -MultiViews 
    Options FollowSymLinks 
</Directory> 
</VirtualHost> 
+0

總的來說,配置看起來不錯。不要理所當然:請確認'... gems/passenger- 3.0.18/ext ...中的空格......「只是格式錯誤。另外,請確認您有一個正確配置的文件'apps/config/environment/production.rb'。如果所有這些都是正確的,請查看1)rails日誌(可能或不可能是production.log,以及2)Apache日誌。 –

+0

耶看在production.log。我的猜測是你的生產數據庫不存在,或者你不能聯繫它或寫入它或類似的東西。內部服務器錯誤顯示您處於生產模式(隱藏來自最終用戶的錯誤消息)Dev模式將顯示堆棧跟蹤 – Doon

+0

@tharrison:該空間就在我粘貼到此處時。但是,你是什麼意思的屬性配置/config/environment/production.rb。我沒有碰過文件,不知道該怎麼辦。 –

回答

6

爲了使用Phusion Passenger部署到生產服務器,您需要使用RailsEnv production指令。

但您還需要確保關聯的Rails環境配置正確。這些文件存儲在apps/config/environments/中,新的Rails項目帶有3:development(默認值),testproduction。您可以添加其他文件,例如staging,方法是將文件添加到此目錄。

每個文件都有一些對環境有意義的設置。在開發中,您需要漂亮的詳細日誌記錄,純文本CSS和JS文件以及要在瀏覽器中顯示的錯誤。在生產中,您希望一切儘可能快:簡潔的日誌記錄,編譯的資產,用戶友好的錯誤頁面。

在你的情況下,Rails使用的資產(特別是所有的CSS和JS文件)尚未被Rails的「資產管道」處理。預編譯資源有一個rake任務(rake assets:precompile),這是默認的production環境所期望的。默認的開發環境會將CoffeeScript和SASS文件分別編譯爲JS和CSS,並且在其他情況下進行最少的處理。

因此,作爲部署到生產的一部分,您需要在任何時候添加或更改任何資產時運行此rake任務。由於每次部署時都需要這些以及其他許多類似的細節,因此大多數Rails應用程序用於部署的稱爲Capistrano。可以肯定的是,這是一個完整的其他野獸,但隨着你在這個過程中更進一步,你一定會考慮它。即使是最低限度配置的capistrano腳本也知道預編譯資產並在完成後重新啓動服務器等。

+0

tharrison:我很感謝你的時間和答案。它的工作現在。 –

0

嘗試設置RailsEnv production

重啓Apache,然後重新啓動客運與touch /var/www/mysistes/apps/web_app1/tmp/restart.txt

+0

我確實多次重啓了apache和app。當你說設置「RailsEnv生產」你的意思只是命令行?我沒有與命令行有關的問題,但在客運生產模式下運行應用程序。當我在vhost中設置以下內容時,我沒有任何問題:「RailsEnv開發」問題是當我在該語句中將開發改爲生產時。 –

+0

啊我讀了你的問題,你刪除了RailsEnv開發線。您是否嘗試將該生產線切換到生產? –

+0

我沒有。我讀的乘客是默認設置爲生產,當我刪除發展聲明時,我可以看到在production.log中的日誌,這意味着它指向默認prod沒有這個聲明在那裏。欣賞幫助 –

相關問題