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

如何在cPanel和EasyApache 4环境下配置自定义Ruby版本

问题解答与解决方案

1 关于ea-ruby24是否强制覆盖PassengerRuby的问题

是,cPanel的EasyApache 4自带的Phusion Passenger默认绑定系统预装的ea-ruby系列运行时,你在SetEnv中设置的PassengerRuby优先级低于cPanel全局Passenger配置的默认Ruby解释器绑定规则:从日志可以看出所有加载器都来自/opt/cpanel/ea-ruby24/路径,说明Passenger本身是基于ea-ruby24启动的,默认会用自身绑定的Ruby版本加载应用,直接忽略你设置的PassengerRuby参数。

2 配置错误与遗漏项

你存在3处配置问题:

  • 应用根目录配置错误:旧配置用/home/adminxxx/webapps/assist2prod/current/软链指向最新代码,新生成的配置写死了旧版本路径/home/adminxxx/webapps/assist2prod/releases-2021old/20190707101851,首先需确认该路径下Gemfile确实指定Ruby 2.1.6,其次建议改用current软链路径,避免后续更新代码重复修改配置。
  • PassengerRuby配置位置错误:你将PassengerRuby放在mod_env的SetEnv块中,cPanel编译的mod_passenger不会读取环境变量形式的该参数,必须直接写在mod_passenger配置块内才会生效。
  • 缺少自定义Ruby权限配置:没有添加PassengerUseGlobalRuby off参数,cPanel默认的Passenger会强制使用全局绑定的Ruby版本,禁止单个应用自定义Ruby路径。

3 排查思路优化建议

你的排查方向正确,缺少3个关键验证步骤:

  • 执行which passenger-config查看Passenger命令行工具所在路径,若为/opt/cpanel/ea-ruby24/下的路径,即可确认全局Passenger确实绑定ea-ruby24。
  • 执行passenger-config about ruby-command查看Passenger默认调用的Ruby路径,可直接验证是否被全局配置覆盖。
  • 检查应用根目录下的.bundle/config文件,确认是否指定了错误的Ruby路径或Bundler路径。
可执行解决方案

分为两种权限场景:

方案1:共享主机仅可修改.htaccess

将.htaccess替换为以下内容,优先级高于cPanel应用管理器生成的部分配置:

PassengerEnabled on
PassengerUseGlobalRuby off
PassengerLoadShellEnvVars On
PassengerAppRoot /home/adminxxx/webapps/assist2prod/current/
PassengerRuby /usr/local/bin/ruby

RewriteEngine On
RailsEnv production
RackEnv production

此处PassengerRuby使用你确认的2.1.6版本路径/usr/local/bin/ruby,不要使用旧的ruby20路径。

方案2:可申请管理员修改Apache虚拟主机配置

让管理员将生成的.conf改为以下内容:

<Location "/">
    <IfModule mod_env.c>
        SetEnv "RackEnv" "production"
        SetEnv "RailsEnv" "production"
    </IfModule>
    
    <IfModule mod_passenger.c>
        PassengerAppEnv "production"
        PassengerUseGlobalRuby off
        PassengerEnabled on
        PassengerBaseURI "/"
        PassengerAppRoot "/home/adminxxx/webapps/assist2prod/current/"
        PassengerRuby "/usr/local/bin/ruby"
        PassengerAppGroupName "adminxxx - WisdomTorontoProduction"
        PassengerNodejs /opt/cpanel/ea-nodejs10/bin/node
    </IfModule>
</Location>
<Directory "/home/adminxxx/webapps/assist2prod/current/">
    Allow from all
    Options -MultiViews
    Options -Indexes
    Require all granted
    AllowOverride All
</Directory>

修改完成后重启Apache,删除应用目录下的tmp/restart.txt再重新生成一次,触发Passenger重启应用。

额外验证步骤

修改配置后若仍报错,可在应用根目录新建test.rb文件:

puts RUBY_VERSION
puts Gem.ruby

用/usr/local/bin/ruby test.rb执行,确认输出的Ruby版本为2.1.6,同时检查Gemfile、Gemfile.lock中的Ruby版本声明是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:39:03