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

DreamHost Passenger使用错误Node路径问题求助

DreamHost子域名Passenger+Node.js启动异常排查与解决

问题概述

在DreamHost新建子域名并启用Passenger部署Node.js应用,此前同类操作均成功,但本次访问时随机出现两种启动失败错误,刷新页面会切换错误类型。

配置与验证信息

目录与文件结构

[charlotte]$ pwd
/home/<redacted>/<redacted>.<redacted>.com

[charlotte]$ ls -la ..
# 父目录文件列表(略)

[charlotte]$ ls -la
total 16
drwxr-xr-x 4 <redacted> <redacted>  102 Sep  3 16:27 .
drwx--x--- 9 <redacted> <redacted>  4096 Sep  3 16:27 ..
-rw-r--r-- 1 <redacted> <redacted>  104 Sep  3 16:25 .htaccess
-rw-rw-r-- 1 <redacted> <redacted>   29 Sep  3 15:21 HelloWorld.js
-rwxr-xr-x 1 <redacted> <redacted>  312 Sep  3 16:27 app.js
drwxr-xr-x 3 <redacted> <redacted>   76 Sep  3 15:10 public
drwxrwxr-x 2 <redacted> <redacted>   24 Sep  3 15:28 tmp

环境与配置文件

[charlotte]$ cat ../.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

[charlotte]$ cat .htaccess
PassengerNodejs /home/<redacted>/.nvm/versions/node/v12.22.12/bin/node
PassengerFriendlyErrorPages on

[charlotte]$ which node
/home/<redacted>/.nvm/versions/node/v12.22.12/bin/node

[charlotte]$ node -v
v12.22.12

[charlotte]$ node HelloWorld.js
Hello World!

应用代码

var http = require("http");

console.log("Starting server...");
http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World. This page is running Node.js version: ");
  response.write(process.version);
  response.end();
}).listen(80);

错误现象

刷新页面随机出现以下两种错误:

错误1
Web application could not be started
An error occurred while starting the web application. It exited before signalling successful startup back to Phusion Passenger.
Raw process output:
*** ERROR ***: Cannot execute /usr/bin/node: No such file or directory (2)

错误2
Web application could not be started
An error occurred while starting the web application. It exited before signalling successful startup back to Phusion Passenger.
Raw process output:
*** ERROR ***: Cannot execute /home/username/.nvm/versions/node/v12.22.12/bin/node: No such file or directory (2)

已尝试操作

  • 本地Node测试正常,.htaccess已通过友好错误页确认被读取
  • 对比正常运行的子域名配置,未发现差异
  • 执行touch tmp/restart.txt或touch .htaccess会提高错误切换概率

解决方案

1. 修复.htaccess路径占位符

错误信息中出现/home/username/,说明你的.htaccess可能误写了占位符,将PassengerNodejs后的路径替换为which node输出的真实完整路径,确保无拼写错误。

2. 强制清理Passenger进程缓存

DreamHost的Passenger可能留存旧进程缓存,执行以下命令强制重启应用:

passenger-config restart-app /home/<redacted>/<redacted>.<redacted>.com

或通过DreamHost控制面板重启对应域名的Passenger服务。

3. 修改应用监听端口

Passenger会自动分配端口,无需手动监听80端口,修改app.js的监听代码:

// 替换原.listen(80)
.listen(process.env.PORT || 3000);

Passenger会通过PORT环境变量传递正确端口。

4. 验证Node二进制文件权限

确保Node可执行文件及父目录权限正确:

chmod +x /home/<redacted>/.nvm/versions/node/v12.22.12/bin/node
chmod 755 /home/<redacted>/.nvm/versions/node/v12.22.12/bin/

5. 通过Shell脚本加载NVM环境

Passenger运行时可能不会加载.bashrc,创建启动脚本start.sh:

#!/bin/bash
export NVM_DIR="$HOME/.nvm"
source "$NVM_DIR/nvm.sh"
exec node app.js

赋予执行权限:

chmod +x start.sh

修改.htaccess指定启动脚本:

PassengerAppType node
PassengerStartupFile start.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:12:31