我在帶有 4 GB RAM 和 32 GB SD 卡的 Raspberry Pi 4 上有一個帶有 Ruby 2.7.4 的 ROR 應用程式(版本 6.1.4.1)。我使用 tarball 安裝安裝了Passenger 6.0.12 并使用nginx 運行它。passenger start在 app 目錄中成功運行,但是當我嘗試/opt/nginx/sbin/nginx在埠 80 上像使用 nginx ( )一樣運行它時,在訪問該站點時出現上述錯誤。
我正在通過 IP 地址訪問應用程式,該地址在 中配置nginx.conf并且應用程式安裝在/home/pi/src/bogie_can. 有一個.bundle在應用程式目錄中的組態檔目錄,這是安裝在哪里的寶石。我在“開發”模式下運行該應用程式,該模式server在nginx.conf檔案的部分中使用passenger_app_env.
具體錯誤是應用程式找不到racc-1.5.2. Bundler 資訊是#<struct Bundler::Settings::Path explicit_path="/home/pi/src/bogie_can/.bundle", system_path=false, default_install_uses_path=false>.. 所以,我們注意到.bundle路徑是正確的,并且在.bundle/ruby/2.7.0/gems/目錄中,racc-1.5.2確實是由用戶“pi”安裝和擁有的。
我已經清除了舊的捆綁安裝,并嘗試將應用程式用戶從 切換pi到root(是nobody)并回傳。另外,我正在使用rbenv,所以我也rbenv rehash追求新鮮的bundle install. 我還仔細查看了乘客錯誤頁面上的“詳細診斷”(這非常有幫助!),沒有發現任何明顯錯誤的內容。
使用乘客錯誤頁面作為指南,似乎:
- 確實根據需要安裝了 gems
- 用戶(root 或 pi)有權訪問 gems
pi是運行應用程式的合理用戶- 將
passenger_root與passenger_ruby從即將到來的passenger-config about子命令和驗證,以及。
在這一點上,一定有一些我忽略或出錯的配置,我將不勝感激一些問題和指點。
uj5u.com熱心網友回復:
我相信我找到了問題的根本原因。
我執行了手動安裝并復制/粘貼了洗掉默認 nginx 安裝的說明。這似乎并不完全成功,因為我在系統啟動時注意到一條錯誤訊息,指出“nginx.service”沒有成功啟動。
我完全洗掉了 nginx 安裝sudo apt-get purge nginx nginx-common并重新啟動。
一切都很好
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/384613.html
