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

如何让Fullstaq Ruby与Phusion Passenger在Ubuntu 20.04兼容?

问题描述

在Ubuntu 20.04上通过apt安装Fullstaq Ruby、Phusion Passenger和Nginx(明确不想编译Nginx适配Passenger),遇到两个核心问题:

  1. Passenger的apt包依赖Ruby,但apt无法将Fullstaq仓库安装的Ruby识别为有效依赖项
  2. 已配置Nginx的Passenger参数指定Fullstaq Ruby路径,但Passenger启动仍使用系统默认Ruby

已尝试的Nginx配置:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/lib/fullstaq-ruby/versions/2.7-jemalloc/bin/ruby;

已安装包信息:

$ dpkg -l | grep ruby
ii  fullstaq-ruby-2.7-jemalloc         10-ubuntu-20.04                   amd64        Fullstaq Ruby 2.7-jemalloc
ii  fullstaq-ruby-common               1.0-0                             all          Fullstaq Ruby common dependencies
ii  ruby2.7                            2.7.0-5ubuntu1.7                  amd64        Interpreter of object-oriented scripting language Ruby
ii  ruby                               1:2.7+1                           amd64        Interpreter of object-oriented scripting language Ruby (default version)
可行配置方案

1. 处理apt依赖识别问题

Passenger的apt包依赖系统ruby元包,而Fullstaq Ruby未提供该元包的替代,因此无需卸载系统默认的ruby和ruby2.7包——它们仅作为依赖占位存在,不会影响Passenger实际使用Fullstaq Ruby。

2. 确保Passenger正确加载Fullstaq Ruby

步骤1:验证Fullstaq Ruby路径有效性

先确认目标路径的Ruby可正常执行:

ls -l /usr/lib/fullstaq-ruby/versions/2.7-jemalloc/bin/ruby
/usr/lib/fullstaq-ruby/versions/2.7-jemalloc/bin/ruby -v

若输出显示Fullstaq Ruby 2.7版本,说明路径无误。

步骤2:正确配置Nginx的Passenger参数

配置需放在对应作用域内:

  • 全局生效:将配置写入/etc/nginx/nginx.conf的http块中
  • 单站点生效:写入对应站点配置文件(/etc/nginx/sites-available/[站点名])的server块中

示例全局配置(修改nginx.conf):

http {
    # 保留原有配置...
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/lib/fullstaq-ruby/versions/2.7-jemalloc/bin/ruby;
    # 保留原有配置...
}

步骤3:验证配置生效

重启Nginx后,执行以下命令检查Passenger使用的Ruby版本:

passenger-config about ruby-command

若输出的Ruby路径为Fullstaq的路径,说明配置生效。若仍为系统Ruby,排查以下点:

  • 检查Nginx配置语法:nginx -t
  • 确认无局部passenger_ruby配置覆盖全局设置
  • 重启Passenger应用:passenger-config restart-app /path/to/your/application

步骤4:可选:设置Fullstaq Ruby为系统默认(命令行使用)

若需要命令行默认使用Fullstaq Ruby,通过update-alternatives创建软链接:

sudo update-alternatives --install /usr/bin/ruby ruby /usr/lib/fullstaq-ruby/versions/2.7-jemalloc/bin/ruby 100
sudo update-alternatives --install /usr/bin/gem gem /usr/lib/fullstaq-ruby/versions/2.7-jemalloc/bin/gem 100

然后选择默认版本:

sudo update-alternatives --config ruby
sudo update-alternatives --config gem

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:22:46