capistrano-env文件权限

ste*_*zer 6 php ruby capistrano web-deployment capistrano3

我使用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
Run Code Online (Sandbox Code Playgroud)

此代码.env在部署后在服务器上创建文件.但!.env文件权限是640,我的PHP脚本无法读取它.我可以chmod在每次部署后运行命令,但可能存在其他不错的解决方案?

编辑

我创建了pull请求filemode在此gem中添加了新选项.那么,现在的解决方案是:

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
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 5

你有几个选择可以让这更好.

  1. 它看起来不像capistrano-env支持自定义权限设置,但也许可以添加该功能!在GitHub上打开一个问题,也许项目维护者会添加它.

  2. 您可以修改您deploy.rbchmod命令以运行必要的命令.这样,您不必在每次部署后手动运行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
Run Code Online (Sandbox Code Playgroud)