启动 Web 应用程序时出错 -Passenger、Rails、Raspberry PI

Posted

技术标签:

【中文标题】启动 Web 应用程序时出错 -Passenger、Rails、Raspberry PI【英文标题】:Error starting web application - Passenger, Rails, Raspberry PI 【发布时间】: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_envnginx.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_rootpassenger_ruby 来自 passenger-config about 子命令,并且也经过验证。

在这一点上,一定有一些我忽略或出错的配置,我将不胜感激一些问题和指点。

【问题讨论】:

【参考方案1】:

我找到了问题的根本原因。

我将passenger_ruby 设置为passenger-command about ruby-command 的结果,这给了我:

passenger-config was invoked through the following Ruby interpreter:
  Command: /usr/bin/ruby2.7
  Version: ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [arm-linux-gnueabihf]
  To use in Apache: PassengerRuby /usr/bin/ruby2.7
  To use in Nginx : passenger_ruby /usr/bin/ruby2.7
  To use with Standalone: /usr/bin/ruby2.7 /usr/src/passenger-6.0.12/bin/passenger start

The following Ruby interpreter was found first in $PATH:
  Command: /home/pi/.rbenv/shims/ruby
  Version: ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [arm-linux-gnueabihf]
  To use in Apache: PassengerRuby /home/pi/.rbenv/shims/ruby
  To use in Nginx : passenger_ruby /home/pi/.rbenv/shims/ruby
  To use with Standalone: /home/pi/.rbenv/shims/ruby /usr/src/passenger-6.0.12/bin/passenger start

我使用的是/usr/bin/ruby2.7,但遇到了racc 未找到的问题。我将其切换为使用 rbenv shim,Passenger 能够正确找到 [APP_ROOT]/.bundle/ 目录中的所有宝石

我还清除了默认的 nginx 安装,它仍在尝试使用 nginx.service 启动,然后添加了我自己的 /etc/init.d/nginx 脚本并将其添加到 init.d 数据库中,以便它现在从操作系统启动。

【讨论】:

以上是关于启动 Web 应用程序时出错 -Passenger、Rails、Raspberry PI的主要内容,如果未能解决你的问题,请参考以下文章

启动 GWT/Hibernate 程序时出错

Azure WebApp Asp.NET Core 2 错误:启动应用程序时出错

问啥我的web.xml一加Listener,启动tomcat就出错

eclipse启动时出错怎么解决?

编完ASP.NET启动时出错说"无法在Web服务器上启动调试因为没有启用集成Windows身份认证 谁能帮帮我

执行弹簧启动时出错