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

部署Rails应用时Passenger出现Ruby版本不匹配错误求助

解决Passenger + Nginx部署Rails应用时的Ruby版本不匹配问题

你遇到的问题是Nginx配置里指定了Ruby 3.0.0,但Passenger实际启动应用时用了3.2.3,导致Bundler版本不匹配。以下是针对性的排查和解决步骤:

1. 确保Nginx配置生效

  • 先重启Nginx,让修改的nginx.conf生效:
    sudo systemctl restart nginx
    
  • 验证Passenger实际使用的Ruby命令:
    passenger-config about ruby-command
    
    输出里的Ruby路径必须是/home/ubuntu/.asdf/installs/ruby/3.0.0/bin/ruby,如果不是,说明配置没生效或被其他设置覆盖。

2. 锁定应用目录的Ruby版本

  • 进入应用根目录/var/www/fomo-app,检查asdf本地版本配置:
    cd /var/www/fomo-app
    cat .tool-versions
    
    如果文件不存在或ruby版本不是3.0.0,执行:
    asdf local ruby 3.0.0
    
  • 在应用目录下验证当前Ruby版本:
    ruby -v
    
    确认显示ruby 3.0.0p0(或对应补丁版本),然后重新安装依赖:
    bundle install --deployment
    

3. 检查站点级Nginx配置是否覆盖全局设置

  • 查看站点配置文件(通常在/etc/nginx/sites-available/或/etc/nginx/conf.d/目录下),如果里面有passenger_ruby指令,必须和全局配置一致,改成:
    passenger_ruby /home/ubuntu/.asdf/installs/ruby/3.0.0/bin/ruby;
    
    修改后重启Nginx。

4. 让Nginx加载asdf环境变量

  • Nginx运行用户可能没加载asdf的环境变量,导致优先使用系统Ruby。在nginx.conf的http块中添加:
    env PATH=/home/ubuntu/.asdf/shims:/home/ubuntu/.asdf/bin:$PATH;
    
    保存后重启Nginx。

5. 清理Passenger缓存并重启应用

  • 强制重启Passenger应用实例:
    passenger-config restart-app /var/www/fomo-app
    
  • 如果还是不行,停止Passenger并重启Nginx:
    passenger stop
    sudo systemctl restart nginx
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 19:55:06