【问题标题】:Deployment of Ruby on rails application cache permission capistranoRuby on rails 应用缓存权限 capistrano 的部署
【发布时间】:2020-01-15 23:27:07
【问题描述】:

我已经使用 Capistrano 和Passenger 部署了应用程序,我没有获得许可,这都是root 用户在做的事情。

我已经安装了 NGINx 和乘客,一切正常,当我部署我的应用程序时,它运行顺利并且所有设置都进行了。但是当我浏览它时,它给了我一个错误,我有缓存目录的权限问题。

因此,每次部署时,我都必须一次又一次地授予此权限。以下是我的 Cap 配置

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/

【问题讨论】:

    标签: ruby-on-rails deployment capistrano


    【解决方案1】:

    没有回应,但我尝试了几件事。 1. 我在我的 Gemfile 中添加了以下 gem

    gem 'capistrano-file-permissions'
    

    然后我在我的 Capfile 中添加了以下内容

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

    不幸的是,它对我不起作用,我认为我对放置这些命令的文件有不正确的理解。

    1. 我使用了另一个想法,即运行执行命令来执行文件权限。所以我添加了我的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 文件的知识有些不足,所以希望将来我能够改进它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 2015-02-09
      • 2017-12-09
      • 2020-06-07
      相关资源
      最近更新 更多