【发布时间】:2018-08-27 12:10:53
【问题描述】:
(是的,我检查了其他答案,这与行尾无关。)
在nginx 上部署Passenger 时出现以下子流程错误。这是FreeBSD-11.1:
env: bash: No such file or directory
很奇怪。 nginx 进程以root 启动,然后移动到nobody,我确实将其shell 更改为/usr/local/bin/bash。这些用户中的任何一个都看不到bash,这很奇怪。但他们报告的路径不包括/usr/local/bin:
root 环境:
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
SERVER_SOFTWARE=nginx/1.14.0 Phusion_Passenger/5.3.4
PASSENGER_USE_FEEDBACK_FD=true
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/
HOME=/
RC_PID=1360
对于nobody:
uid=65534(nobody) gid=65534(nobody) groups=65534(nobody)
PYTHONUNBUFFERED=1
PASSENGER_SPAWN_WORK_DIR=/tmp/passenger.spawn.lJk10nqveb
RC_PID=1360
PASSENGER_USE_FEEDBACK_FD=true
NODE_PATH=/usr/local/lib/ruby/gems/2.5/gems/passenger/src/nodejs_supportlib
NODE_ENV=production
USER=nobody
PWD=/usr/local/www/pneb
HOME=/nonexistent
PASSENGER_APP_ENV=production
RAILS_ENV=production
SHELL=/usr/local/bin/bash
RACK_ENV=production
SHLVL=0
IN_PASSENGER=1
WSGI_ENV=production
LOGNAME=nobody
PATH=/sbin:/bin:/usr/sbin:/usr/bin
SERVER_SOFTWARE=nginx/1.14.0 Phusion_Passenger/5.3.4
这些用户都看不到 bash。我不确定哪个引发了错误。
我怎样才能解决这个问题?我希望Passenger 与nginx 一起工作能够看到贝壳。
【问题讨论】:
-
您的
PATH不包含/usr/local/bin,因为您已经写过,所以它无法找到它。将:/usr/local/bin附加到PATH,或使用完整路径启动bash。 -
这就是问题所在。
nobody用户没有家,没有 bash_profile。所以无法做到。 -
你系统上的某个地方是启动 nginx 的配置。您可以在那里更改 PATH 。 “那里”在哪里取决于您没有告诉我们的细节 - nginx 是否作为 systemd 服务运行?在暴发户之下? SysV inittab? ...?
-
不,不是 nginx.conf -- 那是在 nginx 启动之后读取的。我们想在你的系统上配置启动 nginx 的东西。