我使用gem capistrano-env
并发现了一个小问题。我的部署脚本是:
Capistrano::Env.use do |env|
env.add 'DB_DSN', 'mysql:host=localhost;dbname=dbname'
env.add 'DB_USER', 'user'
env.add 'DB_PASS', 'pass'
end
此代码在部署后在服务器上创建.env
文件。但! .env
文件权限为640,我的PHP脚本无法读取它。我可以在每次部署后运行chmod
命令,但可能存在其他不错的解决方案吗?
修改
我创建了pull request并在此gem中添加了新的filemode
选项。所以,现在的解决方案是:
Capistrano::Env.use do |env|
env.add 'DB_DSN', 'mysql:host=localhost;dbname=dbname'
env.add 'DB_USER', 'user'
env.add 'DB_PASS', 'pass'
env.filemode = 0644
end
答案 0 :(得分:5)
你有几个选择可以让这更好。
它看起来不像capistrano-env支持自定义权限设置,但也许可以添加该功能! Open an issue at GitHub也许项目维护者会添加它。
您可以修改deploy.rb
以便为您运行必要的chmod
命令。这样,您不必在每次部署后手动运行chmod。
这样的事情:
# In deploy.rb
after "capenv:copy", "capenv:chmod" do
on roles(:all) do
execute "chmod", "a+r", "#{release_path}/#{Capistrano::Env.filename}"
end
end
答案 1 :(得分:4)
查看capevn code上传是在一项任务中完成的。您可以在本地覆盖该任务的定义,以便更改文件权限。在deploy.rb
中添加如下内容String.replaceAll