capistrano - 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
解决方案
推荐阅读
- regex - Notepad ++:如何删除除包含句点的所有字符串
- javascript - 有没有办法获得实际的 css 列宽度和间隙?
- django - 聊天套接字(网络套接字)意外关闭(django-channels)?
- html - Angular 8:无法从 Rest Api 获取消息
- jenkins - 带参数的waitForQualityGate
- c# - 如何修复“解码时发现无效数据”。
- javascript - fs.writeFile 不是一个函数 Electron/React
- jquery - 动态更改输入标签
- ios - 如何在 UITextView 中禁用垂直滚动?
- javascript - 每次点击后间隔变得越来越短