【发布时间】:2022-11-10 03:02:35
【问题描述】:
问题摘要:手动编译 nginx/动态乘客模块后,我无法判断乘客是否正在启动或服务于我的应用程序的问题,但无论我尝试哪个页面,我都会得到 403 禁止或 404 未找到。
细节:我在passenger+nginx捆绑包下有一个工作的rails应用程序,但由于nginx 1.18的安全警报和我公司的安全政策,我不得不清除我的nginx设置并重新开始,根据this link手动编译所有内容。经过半天的努力,nginx 将启动,但是当我尝试通过浏览器访问我的网站时,我在错误日志中得到了这个:
2022/02/24 00:03:06 [error] 156967#156967: *3 directory index of "/home/<app name>/staging/current/public/" is forbidden, client: <client ip addr>, server: <server ip addr>, request: "GET / HTTP/1.1", host: "<server ip addr>"
我什么思考正在发生的是乘客正在启动,但在尝试运行 rails 应用程序时出现了一些错误。但我不能确定,因为
- 错误消息完全没有信息,我想如果乘客没有启动,nginx 会失败并显示类似的消息。
- 我无法运行
passenger-status,根据this question,我收到一个错误,即乘客找不到其实例注册表文件夹。设置适当的环境。变量PASSENGER_INSTANCE_REGISTRY_DIR到 /tmp 并没有为我解决这个问题,即使我确实看到在那里创建了乘客文件。我的 nginx.conf 中有这些设置:
load_module modules/ngx_http_passenger_module.so http { : passenger_root /home/<app name>/.rvm/gems/ruby-2.6.5/gems/passenger-6.0.12 passenger_ruby /home/<app name>/.rvm/gems/ruby-2.6.5/wrappers/ruby :我在启用站点/默认设置中有这些设置:
root /home/<app name>/staging/current/public; passenger_enabled on; passenger_app_env staging;我可以通过转到 rails 应用程序目录并运行
RAILS_ENV=staging passenger start来独立运行乘客。启动应用程序没有明显问题。也不是rails server。我如何诊断发生了什么?我怎么知道乘客是否是错误日志条目的来源?在尝试了我能在 SO 中找到的所有东西两天后,我完全陷入了困境。
提前感谢您的帮助。
编辑在我最初的问题之后,我注意到
sudo service nginx status抱怨乘客没有正确安装/编译。但是,我清除了所有内容(nginx,passenger)并从头开始重新设置,我又回到了上述问题,但是当我现在检查状态时没有关于乘客的错误。我还确信,Passenger 根本没有被调用,因为如果我在我的应用程序的公共目录中的 index.html 中放入“hello, world”,它就会由 Nginx 提供服务。当我检查
passenger=memory-stats时,我也看不到乘客进程。所以我认为Passenger没有启动。
【问题讨论】:
标签: ruby-on-rails ubuntu-20.04 passenger-nginx