2010-04-28 154 views
5

我一直在研究這一個,並發現在這裏和那裏的類似問題的參考,但沒有一個導致瞭解決方案。我已經安裝了乘客(2.2.11)和nginx(0.7.64),當我啓動並打到Rails URL時,出現一個錯誤頁面,通知我加載錯誤:乘客問題:「沒有這樣的文件加載」 -/config/environment

沒有要加載的文件 - /路徑/到/應用程序/配置/環境

從我在網上找到這似乎是某種用戶/權限錯誤,但我已經嘗試了所有的邏輯修復:我已經確保/config/environment.rb不是由root用戶擁有,而是由webapp用戶擁有。我試過設置passenger_default_user,我試過設置passenger_user_switching。我甚至嘗試設置nginx用戶,儘管這應該不重要。我得到了一些不同的結果,但沒有實際的工作。我希望有人可能爲此設置和權限的魔法組合。我可能會試着回覆早期版本的Passenger,因爲我以前從未遇到過這個問題。儘管我設立了Passenger,但還是有一段時間了。

感謝您的任何建議。

編輯:見下面的我偶然發現的答案。

+0

您應該將解決方案的問題移到自己的答案上,然後將答案標記爲已接受。 – 2010-04-29 14:30:11

回答

2

當然,它只是把我發佈的問題絆倒在答案上。爲了向搜索這個問題的其他人提供信息,我會在這裏發佈一些細節。

從nginx.conf相關線:

用戶WWW的數據; #爲了讓nginx不以root身份運行

passenger_default_user www-data; #同樣適用於乘客

root/opt/foo/app/current/public;

此時的關鍵在於確保應用程序文件由www-data擁有,特別是config/environment.rb,因爲顯然Passenger會查看其所有者以確定運行方式。這可能意味着passenger_default_user條目是不相關的?但是,無論如何,將它作爲意向文檔也許是件好事。

最後,請確保您的應用程序的父目錄都可以通過www-data訪問 - 在我的情況下,系統默認設置已經離開了目錄0700,我錯過了。

+0

如何設置一個* PassengerUser *如[文檔]中所述(http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengeruser_lt_username_gt)? – JJD 2012-06-01 14:05:26

1

現代乘客更喜歡機架導軌。如果您的Rails應用程序中有config.ru,則Passenger會嘗試將其作爲Rack應用程序加載。這可能會導致問題。特別是,您的錯誤消息指的是config/environment - 請注意缺少Rails應用程序中典型的.rb擴展。

嘗試移動config.ru,如果它存在的話。

+1

感謝您的想法 - 我在其他地方也看到了關於Rack偏好的說明,但這是一個普通的舊Rails應用程序。缺少.rb擴展名對我來說似乎很奇怪,並且我還沒有找到任何解釋... – Masonoise 2010-04-28 21:14:52

+0

那麼我試過了,現在我的服務器是100%靜態的... – Antzi 2016-05-25 01:49:11

相關問題