启动 Web 应用程序时出错 - Passenger,Rails,Raspberry PI
Error starting web application - Passenger, Rails, Raspberry PI
我有一个 ROR 应用程序(版本 6.1.4.1),Ruby 2.7.4 在具有 4 GB RAM 和 32 GB SD 卡的 Raspberry Pi 4 上。我使用 tarball 安装安装了 Passenger 6.0.12,并使用 nginx 运行 连接它。 passenger start
在 app 目录中成功运行,但是当我尝试 运行 将其与端口 80 上的 nginx (/opt/nginx/sbin/nginx
) 连接时,访问该站点时出现上述错误。
我正在通过 IP 地址访问应用程序,该地址在 nginx.conf
中配置,应用程序安装在 /home/pi/src/bogie_can
中。在 app 目录中有一个 .bundle
目录和一个配置文件,这是安装 gems 的地方。我 运行 以“开发”模式设置应用程序,该模式是在 nginx.conf
文件的 server
部分使用 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
,所以我在新鲜bundle install
之后也运行rbenv rehash
。我还仔细查看了乘客错误页面中的“详细诊断”(这非常有帮助!),没有发现任何明显错误的地方。
使用 Passenger 错误页面作为指南,似乎:
- 确实按需安装了gems
- root 或 pi 用户有权访问这些宝石
pi
是 运行 应用的合理用户
passenger_root
和 passenger_ruby
来自 passenger-config about
子命令,并且也经过验证。
在这一点上,一定有一些我忽略或错误的配置,我将不胜感激一些问题和指示。
我找到了问题的根本原因。
我已经将 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
数据库中,所以它现在以 OS.
开头
我有一个 ROR 应用程序(版本 6.1.4.1),Ruby 2.7.4 在具有 4 GB RAM 和 32 GB SD 卡的 Raspberry Pi 4 上。我使用 tarball 安装安装了 Passenger 6.0.12,并使用 nginx 运行 连接它。 passenger start
在 app 目录中成功运行,但是当我尝试 运行 将其与端口 80 上的 nginx (/opt/nginx/sbin/nginx
) 连接时,访问该站点时出现上述错误。
我正在通过 IP 地址访问应用程序,该地址在 nginx.conf
中配置,应用程序安装在 /home/pi/src/bogie_can
中。在 app 目录中有一个 .bundle
目录和一个配置文件,这是安装 gems 的地方。我 运行 以“开发”模式设置应用程序,该模式是在 nginx.conf
文件的 server
部分使用 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
,所以我在新鲜bundle install
之后也运行rbenv rehash
。我还仔细查看了乘客错误页面中的“详细诊断”(这非常有帮助!),没有发现任何明显错误的地方。
使用 Passenger 错误页面作为指南,似乎:
- 确实按需安装了gems
- root 或 pi 用户有权访问这些宝石
pi
是 运行 应用的合理用户passenger_root
和passenger_ruby
来自passenger-config about
子命令,并且也经过验证。
在这一点上,一定有一些我忽略或错误的配置,我将不胜感激一些问题和指示。
我找到了问题的根本原因。
我已经将 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
数据库中,所以它现在以 OS.