代码之家  ›  专栏  ›  技术社区  ›  Kamal Panhwar

Ruby on rails应用缓存权限capistrano的部署

  •  0
  • Kamal Panhwar  · 技术社区  · 5 年前

    我已经使用Capistrano和Passenger部署了应用程序,我没有使用权限,这都是根用户在做的事情。

    我已经安装了NGINx和passenger,一切都很好,当我部署我的应用程序时,一切都很顺利。但当我浏览时,它给了我一个错误,我对缓存目录有权限问题。

    所以每次我部署的时候我都要一次又一次地给予这个许可。下面是我的帽子配置

    lock "~> 3.11.1"
    set :application, "my_app_ame"
    set :repo_url, "git@github.com:url_of_git.git"
    
    set :passenger_restart_with_touch, true
    set :deploy_to, "/var/www/rubysites/test_production"
    append :linked_files, "config/credentials.yml.enc"
    append :linked_files, "config/master.key"
    append :linked_files, "config/database.yml"
    

    和我的staging.rb文件

    set :stage, :staging
    set :rails_env, :production
    set :branch, "development"
    
    server "ror.test_domain.com", user: "root", roles: %w{app db web}
    

    但在每次部署时,我都必须运行命令来更改权限

     chmod -R 777 releases/
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Kamal Panhwar    5 年前

    没有回应,但我试了几次。 一。我在Gemfile中添加了以下gem

    gem 'capistrano-file-permissions'
    

    然后我在我的cap文件中添加了以下内容

    set :file_permissions_paths, ["app/logs", "app/cache"]
    set :file_permissions_users, ["www-data"]
    

    不幸的是,它没有为我工作,我认为我有错误的文件理解放在哪里这些命令。

    1. 我使用了另一种方法运行execute命令来执行文件权限。所以我加上了 deploy.rb 文件。我还添加了一些rake任务,因为我必须做一些更新。
    namespace :deploy do
      task :check_permissions do
        on roles(:web) do
          execute "chmod -R 0777 #{release_path}"
          execute "echo 'finished'"
          execute "cd #{deploy_to}/current && /usr/bin/env rake countries:update RAILS_ENV=production"
        end
      end
    end
    

    瞧,这对我很有用,现在一切都很好,但是的,我对cap文件的知识有一些不足,所以希望将来我能改进它。