【发布时间】:2022-01-16 12:27:05
【问题描述】:
我在具有 4 GB RAM 和 32 GB SD 卡的 Raspberry Pi 4 上安装了一个带有 Ruby 2.7.4 的 ROR 应用程序(版本 6.1.4.1)。我使用 tarball 安装安装了 Passenger 6.0.12,并使用 nginx 运行它。 app 目录中的passenger start 运行成功,但是当我尝试在端口 80 上使用 nginx (/opt/nginx/sbin/nginx) 运行它时,访问该站点时出现上述错误。
我通过在nginx.conf 中配置的IP 地址访问应用程序,并且应用程序安装在/home/pi/src/bogie_can 中。在 app 目录中有一个带有配置文件的 .bundle 目录,这就是安装 gem 的地方。我在“开发”模式下运行应用程序,该模式使用passenger_app_env 在nginx.conf 文件的server 部分中配置。
具体错误是app找不到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,所以我也在新的bundle install 之后运行了rbenv rehash。我还仔细查看了乘客错误页面中的“详细诊断”(这非常有用!)并且没有发现任何明显错误的内容。
以乘客错误页面为指导,似乎:
- 确实根据需要安装了 gems
- 用户(root 或 pi)有权访问 gems
-
pi是运行应用的合理用户 -
passenger_root和passenger_ruby来自passenger-config about子命令,并且也经过验证。
在这一点上,一定有一些我忽略或出错的配置,我将不胜感激一些问题和指点。
【问题讨论】:
标签: ruby-on-rails nginx raspberry-pi passenger