我正在尝试以非root用户身份安装pm2和pm2-logrotate(具体来说,使用nginx用户),使用Chef 12
我在全球范围内安装了pm2
[root@~] npm install -g pm2
然后我注册了pm2启动脚本以nginx用户身份运行
[root@~] pm2 startup -u nginx --hp /home/nginx systemd
然后我想为运行为nginx用户的pm2进程安装pm2-logrotate
以下工作:正确安装了pm2-logrotate,并且/home/nginx/.pm2/logs下的日志被轮换
script "pm2_logrotate" do
interpreter 'bash'
code <<-EOH
su nginx -c "pm2 install pm2-logrotate@2.4.0"
EOH
end
但如果我尝试通过为脚本ressource指定“nginx”用户来安装pm2-logrotate,我会收到错误
script "pm2_logrotate" do
interpreter 'bash'
user "nginx"
code <<-EOH
pm2 install pm2-logrotate@2.4.0
EOH
end
错误
[PM2] [Module]调用[NPM]安装pm2-logrotate@2.4.0 ... ==&GT;默认值:错误:EACCES:权限被拒绝,mkdir'/ root/.pm2/modules/pm2-logrotate'
为什么会有不同的行为?感谢
答案 0 :(得分:1)
问题是,当Chef将用户更改为nginx
时,它不会导出启动时bash设置的一些环境变量,在这种情况下可能是$HOME
。您可以通过以下方式解决此问题:
script "pm2_logrotate" do
interpreter 'bash'
user "nginx"
environment 'HOME' => Dir.home(user)
code <<-EOH
pm2 install pm2-logrotate@2.4.0
EOH
end