Nginx + Passenger Enterprise部署Node.js应用提示node未找到求助
Nginx + Passenger 找不到 Node.js 的解决方法
核心原因
手动通过root、nginx用户等执行node -v时,处于登录shell环境,PATH变量包含了Node.js的安装路径;但Nginx作为系统服务启动时使用非登录shell,默认PATH仅包含系统基础目录,不包含自定义安装的Node.js路径,因此Passenger无法找到node命令。
解决方案
方案1:直接指定Node.js绝对路径
- 执行
which node命令,获取Node.js的绝对路径(例如输出/usr/local/bin/node) - 在Nginx的server配置块中添加
passenger_nodejs配置项:
server { listen 80; server_name mysite.com; root myapp_root/public; passenger_enabled on; passenger_app_type node; passenger_startup_file app.js; passenger_nodejs /usr/local/bin/node; # 替换为你的node绝对路径 }
- 重启Nginx服务生效。
方案2:配置Passenger的PATH环境变量
如果需要让Passenger继承完整的系统PATH,可在Nginx全局http块中添加环境变量配置:
http { env PATH="/usr/local/bin:/usr/bin:/bin"; # 确保包含Node.js所在目录 # 其他全局配置内容 }
修改后重启Nginx即可。
内容的提问来源于stack exchange,提问作者João Pina
相关产品推荐
相关产品推荐

