从sudo手册页(sudo的Ubuntu版本)
有两种不同的方法来处理环境变量。默认情况下,env_reset
sudoers选项处于启用状态。这将使命令在最小环境下执行,该环境包括TERM,PATH,HOME,SHELL,LOGNAME,USER和USERNAME,以及env_check和env_keep
sudoers选项允许的调用过程中的变量。实际上有一个环境变量白名单。
Sudo正在重置环境。这是在upstart或init脚本中使用
su和的令人沮丧的方面
sudo。新贵的最新版本支持通过以下
setuid/setgid指令在不使用sudo的情况下指定uid
/ gid ,如下例所示。另请注意使用
chdir。
start on filesystem and started networkingrespawnchdir /var/www/yourappsetuid yourappsetgid yourappenv NODE_ENV=productionenv PATH=/usr/local/bin:/usr/bin:/binenv CUSTOM=somevalueexec /usr/local/bin/node app.js | /usr/bin/multilog s1024000 /var/log/yourapp 2>&1
对于新贵的新贵版本,这是我用来解决该问题的方法。
description "start and stop the example.com node.js server"start on filesystem and started networkingrespawnchdir /path/to/your/preexec su -c 'PATH=$PWD/node/bin NODE_ENV=$(cat node_env.txt) ./node/bin/node app/server.js' www-data >> tmp/stdout.log 2>&1
请注意
node_env.txt,因为我讨厌环境变量,所以我只是将文件放置到设置生产模式的应用程序根目录中
。
NODE_ENV=production如果愿意,您可以就在那儿。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)