capistrano-env文件权限

时间:2015-06-17 18:25:14

标签: 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

此代码在部署后在服务器上创建.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

2 个答案:

答案 0 :(得分:5)

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

  1. 它看起来不像capistrano-env支持自定义权限设置,但也许可以添加该功能! Open an issue at GitHub也许项目维护者会添加它。

  2. 您可以修改deploy.rb以便为您运行必要的chmod命令。这样,您不必在每次部署后手动运行chmod。

  3. 这样的事情:

    # 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