在运行Apache的计算机上,有3个Rails应用程序正在运行,全部使用capistrano进行部署,并且它们使用乘客。部署脚本是标准的。我的前任将用户deploy
设置为教科书样式,所有3个项目都使用相同的capistrano版本(3.8),并且在服务器上使用相同的目录结构。所有用户都位于deploy
用户家中的公共目录中。所有旅客均使用相同的红宝石和铁轨版本。他们共享了一些链接的目录,但否则部署脚本都很简单。我的前任坚持认为在他的时代部署是可行的。我们仍然有他的机器,并且部署也不能从他的机器上进行-仅在这个项目中。
在三个项目之一的cap production deploy
上,我总是遇到Errno::EACCES: Permission denied @ dir_initialize - /tmp/passenger.h6D8mJy/apps.s
错误。
我唯一的解决方法是:
我登录生产服务器,使自己成为超级用户,并将/ tmp目录的所有者更改为deploy
。然后,我运行部署脚本,它成功。 (然后,我当然将目录的所有者改回了root。)
因此似乎好像/tmp/passenger.something目录将其所有者设置为错误。我以某种方式认为这可能不是问题,因为其他两个脚本使用相同的目录并且没有此问题。还是他们?谁创建此目录,为什么创建,以及在何处配置此目录的所有权?
我认为最好只包含日志,但我必须将其全部删掉... stackOverflow拒绝了我的帖子,因为“这看起来像垃圾邮件”。)
INFO [e1c2bb25] Running ~/.rvm/bin/rvm ruby-2.3.1 do bundle exec rake assets:precompile as deploy@99.999.99.999
DEBUG [e1c2bb25] Command: cd /home/deploy/projects/external-services/releases/20190423082459 && ( export RAILS_ENV="production" ; ~/.rvm/bin/rvm ruby-2.3.1 do bundle exec rake assets:precompile )
DEBUG [56ee67e8] rake aborted!
Errno::EACCES: Permission denied @ dir_initialize - /tmp/passenger.h6D8mJy/apps.s