问题的范围
4.2.11
2.1.1.0
14
deploy
我有一个Rails应用,我通过Ansible脚本部署到Ubuntu服务器上。
我不明白为什么当Ansible脚本执行RACK任务时,Rails应用会以root权限创建日志文件。
在我的例子中,它正在运行 rake db:migrate
但也有同样的行为 rake assets:precompile
从下面的照片可以看出,应用程序是通过用户 "deploy "部署的,但是在运行rake任务后,它创建了2个具有root权限的日志文件,在重启web服务器后,它以权限拒绝的错误崩溃,所以我需要手动更改所有权。在重启web服务器后,它以权限被拒绝的错误而崩溃,所以我需要手动将所有权改为------------。deploy:deploy
Rails记录器的结构看起来也很可疑。你可以检查 @dev=IO:<STDERR>
值。我在另一个项目中检查了一下,在那里我可以看到类似于 @dev=#<File:/var/www/.../log/production.log>
我试着去探索 ror4
但到目前为止,还无法理解发生了什么。唯一的想法是,可能是Rails在创建日志文件和 STDERR
产出
如果你有类似的问题,请帮助我,或者指出我可以从哪里找。
rake脚本以root用户身份运行。
要回答这个问题,你必须添加完整的Ansible脚本或bundle脚本,如果你手动添加一个 "sudo "命令或其他不寻常的东西。
在ansible中定义用户有不同的可能位置。
请阅读ansible文档中的become部分 https:/docs.ansible.comansiblelatestuser_guidebecome.html。
或者尝试一下
- name: Run db:migrate
shell: ... rake cmd ...
become: yes
become_user: deploy
become_method: su
根据你的需要改变become_method,例如become_flags。'-s binsh' 或 sudo