首页 > 解决方案 > Capistrano 3 部署失败,拒绝访问:dir_initialize tmp/passenger.h6D8mJy/apps.s

问题描述

在运行 apache 的机器上,有 3 个 rails 应用程序正在运行,它们都使用 capistrano 进行部署,并且它们使用乘客。部署脚本是标准的。deploy我的前任以教科书风格设置用户,所有 3 个项目都使用相同的 capistrano 版本(3.8),并在服务器上使用相同的目录结构。deploy所有这些都位于用户家中的一个公共目录中。都使用乘客,相同的 ruby​​ 和 rails 版本。他们共享了一些链接目录,但除此之外,部署脚本都很简单。我的前任坚持认为,在他那个时代部署是有效的。我们仍然有他的机器,并且部署也不能在他的机器上工作——只有这个项目。

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

标签: capistrano

解决方案


推荐阅读