Phusion Passenger status因socket路径过长崩溃的解决方案求助
Phusion Passenger 套接字路径过长报错临时解决方案
该报错的根本原因是 Ubuntu 18.04 中 Apache 的 systemd 服务默认开启 PrivateTmp=true,生成的私有临时目录路径过长,叠加 Passenger 自带的套接字路径后缀后,超出了 Linux 内核限制的 Unix 域套接字路径最大 108 字节上限。
以下是三个不同适用场景的临时解决方案:
方案1:关闭 Apache PrivateTmp 配置(操作最简)
适合开发环境、对安全要求不高的场景:
- 执行命令编辑 Apache systemd 服务覆盖配置:
systemctl edit apache2.service - 在弹出的编辑器中输入以下内容:
[Service]
PrivateTmp=false
- 保存退出后,重载 systemd 配置:
systemctl daemon-reload - 重启 Apache 服务即可生效:
systemctl restart apache2
方案2:手动指定 Passenger 实例目录(生产环境推荐)
保留 PrivateTmp 安全特性的前提下解决问题:
- 首先创建固定短路径的 Passenger 实例目录,分配对应权限:
mkdir -p /var/run/passenger && chown www-data:www-data /var/run/passenger - 编辑 Passenger 配置文件(默认路径为
/etc/apache2/mods-available/passenger.conf),添加如下配置项:PassengerInstanceRegistryDir /var/run/passenger - 保存配置后重启 Apache 服务生效:
systemctl restart apache2
方案3:临时指定实例目录(无需重启服务)
仅需要临时执行 passenger-status 排查问题时使用:
- 执行命令时前缀添加环境变量指定实例目录即可:
PASSENGER_INSTANCE_REGISTRY_DIR=/var/run/passenger passenger-status
内容的提问来源于stack exchange,提问作者Patrick Dyson
相关产品推荐
相关产品推荐

