2013-03-01 5 views
0

Я стараюсь, чтобы capistrano развертывал мое приложение rails в vps.Capistrano ssh пользователь не может писать файлы

Я вошел в систему VPS, добавлен новый 'Установщик' пользователя и дал ему SUDO привилегии:

adduser deployer 

и visudo

deployer ALL=(ALL:ALL) ALL 

Я установил РВМ, рубин, Postgres, постфикс , и nginx. Все используют apt-get, последнюю версию ruby ​​и rvm. В моем файле гем я использую:

gem 'unicorn' 

# Deploy with Capistrano 
gem 'capistrano' 
gem 'rvm-capistrano', '>= 1.3.0.rc11' 

Попытка запустить колпачок развернуть: установки, я наткнулся на кучу ошибок РВМ, но фиксировано их переустановкой RVM на колпачком развёртывания: установка с использованием следующих в моем развертывании .rb файл, в соответствии с Capistrano GitHub ридм:

set :rvm_ruby_string, 'ruby-1.9.3-p392' # use the same ruby as used locally for deployment 
set :rvm_install_ruby_params, '--1.9'  # for jruby/rbx default to 1.9 mode 
set :rvm_install_pkgs, %w[libyaml openssl] # package list from https://rvm.io/packages 
set :rvm_install_ruby_params, '--with-opt-dir=/usr/local/rvm/usr' # package support 

before 'deploy:setup', 'rvm:install_rvm' # install RVM 
before 'deploy:setup', 'rvm:install_pkgs' # install RVM packages before Ruby 
before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset, or: 
before 'deploy:setup', 'rvm:create_gemset' # only create gemset 
before 'deploy:setup', 'rvm:import_gemset' # import gemset from file 

Когда я бег колпачок развёртывания: холод, она проходит нормально, до конца, где он дает ошибку:

failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-1.9.3-p392' -c 'cd /home/deployer/apps/blog/releases/20130301223924 && bundle install --gemfile /home/deployer/apps/blog/releases/20130301223924/Gemfile --path /home/deployer/apps/blog/shared/bundle --deployment --quiet --without development test'" on 198.211.127.46 

Так я добавляю мой «развертыватель» нас эр в группу «РВМ» с помощью:

sudo usermod -G rvm deployer 

И после запуска крышки Deploy: холодная, получаю ошибку:

** [out :: 198.211.127.46] cannot create directory `/home/deployer/apps/blog/releases/20130301223718' 
** [out :: 198.211.127.46] : Permission denied 

Любое понимание будет высоко оценен. Я почти на месте.

Вот мой deploy.rb файл:

require "bundler/capistrano" 
require "rvm/capistrano" 

server "198.211.127.46", :web, :app, :db, primary: true 

set :port, 46000 
set :application, "blog" 
set :user, "deployer" 
set :deploy_to, "/home/#{user}/apps/#{application}" 
set :deploy_via, :remote_cache 
set :use_sudo, true 
set :keep_releases, 5 

set :scm, "git" 
set :repository, "[email protected]:myusername/#{application}.git" 
set :branch, "master" 

default_run_options[:pty] = true 
ssh_options[:forward_agent] = true 

###### 
set :rvm_ruby_string, 'ruby-1.9.3-p392' # use the same ruby as used locally for deployment 
set :rvm_install_ruby_params, '--1.9'  # for jruby/rbx default to 1.9 mode 
set :rvm_install_pkgs, %w[libyaml openssl] # package list from https://rvm.io/packages 
set :rvm_install_ruby_params, '--with-opt-dir=/usr/local/rvm/usr' # package support 

before 'deploy:setup', 'rvm:install_rvm' # install RVM 
before 'deploy:setup', 'rvm:install_pkgs' # install RVM packages before Ruby 
before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset, or: 
before 'deploy:setup', 'rvm:create_gemset' # only create gemset 
before 'deploy:setup', 'rvm:import_gemset' # import gemset from file 
######## 

after "deploy", "deploy:cleanup" # keep only the last 5 releases 

namespace :deploy do 
    %w[start stop restart].each do |command| 
    desc "#{command} unicorn server" 
    task command, roles: :app, except: {no_release: true} do 
     run "/etc/init.d/unicorn_#{application} #{command}" 
    end 
    end 

    task :setup_config, roles: :app do 
    sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}" 
    sudo "ln -nfs #{current_path}/config/unicorn_init.sh /etc/init.d/unicorn_#{application}" 
    sudo "mkdir -p #{shared_path}/config" 
    sudo "chown deployer:deployer #{shared_path}/config" # added this to get around sftp permisssions 
    put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml" 
    puts "Now edit the config files in #{shared_path}." 
    end 
    after "deploy:setup", "deploy:setup_config" 

    # sudo "chmod +x #{release_path}/config/unicorn_init.sh" 
    task :symlink_config, roles: :app do 
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" 
    # run "chmod +x #{release_path}/config/unicorn_init.sh" 
    end 
    after "deploy:finalize_update", "deploy:symlink_config" 

    desc "Make sure local git is in sync with remote." 
    task :check_revision, roles: :web do 
    unless `git rev-parse HEAD` == `git rev-parse origin/master` 
     puts "WARNING: HEAD is not the same as origin/master" 
     puts "Run `git push` to sync changes." 
     exit 
    end 
    end 
    before "deploy", "deploy:check_revision" 
end 
+0

двойной проверить, что на удаленной системе,/дома/Установщик фактически принадлежит использование Deployer? Установлена ​​ли файловая система как доступная для записи? – DGM

+0

Когда я запускаю 'ls -l' on '/ home/deployer', это то, что я вижу: drwxr-xr-x 7 deployer deployer 4096 1 марта 20:30 deployer – anthonycollini

+0

Кажется, я исправил проблему только рекурсивно chowning «домашний» каталог пользователю развертывателя. Кажется, что папка «релизы» принадлежала root. – anthonycollini

ответ

0

Убедитесь все папок принадлежат Deployer. :)

Смежные вопросы