Развертывание capistrano + git: не удалось создать каталог дерева работ: В доступе отказано - PullRequest
4 голосов
/ 10 июня 2011

Я использую git и capistrano для пассажиров.Я несколько часов билась головой, пытаясь сделать эту работу, и не добилась большого прогресса.cap deploy: настройка работает нормально, но cap deploy терпит неудачу из-за проблем с разрешениями.Я попытался изменить права доступа / владельца для своего слайса, но он все еще не работает.

require 'bundler/capistrano'
set :user, 'some_user'
set :domain, 'example.com'
set :applicationdir, "/home/some_user/public_html/example"
set :port, 30000

set :scm, 'git'
set :repository,  "ssh://git@123.45.678.910:50000/home/git/example"
set :branch, 'master'
set :scm_verbose, true

# roles (servers)
role :web, domain
role :app, domain
role :db,  domain, :primary => true

# deploy config
set :deploy_to, applicationdir
set :deploy_via, :remote_cache

# additional settings
default_run_options[:pty] = true  
ssh_options[:forward_agent] = true

# Passenger
namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end

приводит к следующей ошибке:

executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    updating the cached checkout on all servers
    executing locally: "git ls-remote ssh://git@123.45.678.910:50000/home/git/example.com master"
/Users/some_user/.rvm/gems/ruby-1.9.2-p0/gems/capistrano-2.6.0/lib/capistrano/recipes/deploy.rb:104: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777
    command finished in 78068ms
  * executing "if [ -d /home/some_user/public_html/example.com/shared/cached-copy ]; then cd /home/some_user/public_html/example.com/shared/cached-copy && git fetch  origin && git fetch --tags  origin && git reset  --hard c7f73668d0656c665a6445c33870d05a8550ab2c && git clean  -d -x -f; else git clone   ssh://git@123.45.678.910:50000/home/git/example.com /home/some_user/public_html/example.com/shared/cached-copy && cd /home/some_user/public_html/example.com/shared/cached-copy && git checkout  -b deploy c7f73668d0656c665a6445c33870d05a8550ab2c; fi"
    servers: ["example.com"]
    [example.com] executing command
 ** [example.com :: out] fatal: could not create work tree dir '/home/some_user/public_html/example.com/shared/cached-copy'.: Permission denied
    command finished in 353ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/some_user/public_html/example.com/releases/20110610173027; true"
    servers: ["example.com"]
    [example.com] executing command
    command finished in 218ms
failed: "sh -c 'if [ -d /home/some_user/public_html/example.com/shared/cached-copy ]; then cd /home/some_user/public_html/example.com/shared/cached-copy && git fetch  origin && git fetch --tags  origin && git reset  --hard c7f73668d0656c665a6445c33870d05a8550ab2c && git clean  -d -x -f; else git clone   ssh://git@123.45.678.910:50000/home/git/example.com /home/some_user/public_html/example.com/shared/cached-copy && cd /home/some_user/public_html/example.com/shared/cached-copy && git checkout  -b deploy c7f73668d0656c665a6445c33870d05a8550ab2c; fi'" on example.com

Ответы [ 2 ]

10 голосов
/ 10 июня 2011

Не уверен, насколько это поможет, но у меня всегда возникает проблема с разрешениями после deploy:setup

Когда вы запускаете deploy:setup, он создает для вас начальные каталоги. Однако те папки, которые он создает, обычно принадлежат root (во всяком случае, в большинстве моих ситуаций).

webapp/
  shared     root:root
  releases   root:root

Чтобы исправить это, я изменю владельца этих новых папок на пользователя, который будет использовать.

webapp/
  shared     myuser:myuser
  releases   myuser:myuser

Как только это будет сделано, я продолжу с моим deploy:update

0 голосов
/ 09 октября 2013

Я только что столкнулся с этой проблемой.Вот что я узнал.

  • Если вы еще не смогли успешно выполнить развертывание, вы можете временно переместить папку развертывания (на вашем сервере) в другое место (или просто переименовать ее)
  • Убедитесь, что у вас есть это в вашем рецепте: set :use_sudo, false
  • Запустите это снова: cap deploy:setup
  • Затем попробуйте другой прогон cap deploy

У вас наверняка возникнут другие проблемы с разрешениями, если вы создали папки для развертывания, используя неверного пользователя, и скажите capistrano, что у него есть разрешения sudo.

Надеюсь, это сработает для вас, как и для меня.

...