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

Redmine 5.0.5安装故障:rvmsudo执行passenger-status报错

解决Redmine 5.0.5中Passenger-status的strscan库版本不兼容问题

核心排查与修复步骤

1. 对齐Ruby版本与Passenger编译环境

  • 先检查Passenger编译时依赖的Ruby版本:
    passenger-config about ruby-command
    
    对比输出的Ruby路径是否和Redmine使用的/usr/local/rvm/gems/ruby-3.0.0/wrappers/ruby一致。如果不一致,说明Passenger是基于其他Ruby版本编译的,需重新编译适配当前版本:
    rvmsudo passenger-install-apache2-module
    
    编译完成后更新Apache的Passenger配置文件(通常为/etc/apache2/mods-available/passenger.conf),确保PassengerRuby、PassengerRoot、PassengerDefaultRuby全部指向正确的RVM Ruby路径,之后重启Apache。

2. 重建strscan库的本地编译版本

  • 直接针对问题库执行pristine操作,强制基于当前Ruby版本重新编译:
    rvmsudo gem pristine strscan --version 3.0.6
    
  • 若上述命令无效,卸载后重新安装该版本:
    rvmsudo gem uninstall strscan -v 3.0.6
    rvmsudo gem install strscan -v 3.0.6
    

3. 确保sudo上下文加载正确的RVM环境

  • rvmsudo可能未正确传递RVM环境变量,尝试先切换Ruby版本再执行命令:
    rvm use 3.0.0
    sudo -E /usr/sbin/passenger-status
    
    -E参数会保留当前用户的环境变量,确保sudo时使用的是RVM管理的Ruby版本,而非系统默认Ruby。

4. 验证Apache运行的Ruby环境

  • 查看Apache错误日志(通常在/var/log/apache2/error.log),搜索strscan加载失败的细节,确认Apache是否真的使用了配置的PassengerRuby路径。
  • 可在Redmine根目录创建测试脚本test_ruby_env.rb:
    puts "Ruby Version: #{RUBY_VERSION}"
    puts "Gem Path: #{Gem.path}"
    puts "Strscan Version: #{Gem.loaded_specs['strscan'].version if Gem.loaded_specs.key?('strscan')}"
    
    在config.ru开头添加require './test_ruby_env.rb',重启Apache后访问Redmine,查看日志输出的环境信息是否符合预期。

5. 区分Passenger模块与Standalone状态

  • rvmsudo passenger status查看的是Passenger Standalone的运行状态,而你使用的是Apache集成的Passenger模块,因此该提示属于正常情况,无需关注。
  • 确认Apache是否正确加载Passenger模块:
    apache2ctl -M | grep passenger
    
    若输出passenger_module (shared)说明模块已加载;否则启用模块并重启Apache:
    rvmsudo a2enmod passenger
    rvmsudo systemctl restart apache2
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 02:22:50