You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu22.04下Ruby3.2.1+Rails7遇Passenger权限拒绝错误求助

解决Nginx+Passenger 500错误:Passengerfile.json权限问题

问题本质

日志显示Nginx worker进程(UID 33,对应www-data用户)无法读取/home/deploy/mapt/current/Passengerfile.json,但该文件实际不存在。这是因为Passenger 6.x会自动尝试读取应用根目录的Passengerfile.json,即使文件不存在,应用目录的权限不足会导致进程无法验证文件状态,进而抛出权限错误。

修复方案

1. 调整应用目录权限

确保Nginx worker进程能遍历应用的父目录并访问应用目录:

  • 执行以下命令开放目录遍历权限:
    sudo chmod o+x /home/deploy /home/deploy/mapt /home/deploy/mapt/current
    
  • 可选:将应用目录组设置为www-data并开放组权限,增强安全性:
    sudo chgrp -R www-data /home/deploy/mapt/current
    sudo chmod g+rwx -R /home/deploy/mapt/current
    

2. 强制禁用Passengerfile.json检查

如果不想调整目录权限,可在应用的Nginx配置块(server或location段)中添加指令,跳过该文件的读取:

passenger_passengerfile_json none;

3. 验证Ruby路径权限

检查Passenger配置的Ruby路径是否对www-data可访问:

  • 执行命令验证:
    sudo -u www-data /home/deploy/.rbenv/shims/ruby -v
    

若出现权限错误,调整rbenv目录权限:

sudo chmod o+x /home/deploy/.rbenv /home/deploy/.rbenv/shims

4. 重启服务生效

完成调整后重启相关服务:

sudo systemctl restart nginx
sudo passenger-config restart-app /home/deploy/mapt/current

内容的提问来源于stack exchange,提问作者Jerome

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:12:50