Capistrano 3 не обновляет файлы и код в файлах

Я новичок в Capistrano и мне нужна помощь в его настройке. После того, как я запустил команду cap deploy, она успешно работает без ошибок, но ничего не обновляет на удаленном сервере, только создает дополнительные папки внутри каталога my_app с некоторыми файлами, а также создает папку с именем current и помещает все обновления из github в эту папку. Вот мой deploy.rb файл

lock '3.3.3'

set :application, 'my_app'
set :repo_url, '[email protected]:me/my_app.git'
set :branch, "master"
set :deploy_via, :remote_cache
set :user, "me"
set :stages, ["production"]
set :use_sudo, false

set :deploy_to, '/var/www/my_app'


namespace :deploy do
    after :finishing, 'deploy:cleanup', "deploy:update_code"

    after :restart, :clear_cache do
        on roles(:web), in: :groups, limit: 3, wait: 10 do
            # Here we can do anything such as:
            # within release_path do
            #   execute :rake, 'cache:clear'
            # end
        end
    end

end

Что не так! Как заставить Capistrano обновлять файлы и содержимое файлов в папке my_app на удаленном сервере? Огромное спасибо за помощь!!!


person arthur-net    schedule 03.12.2014    source источник
comment
Поскольку вы новичок в Capistrano, вы можете не знать, как он выполняет свою работу. Предполагая, что ваше приложение находится в /var/www/my_app, есть несколько каталогов, и ни один из них не содержит исходный код вашего проекта. Первый из них — current, символическая ссылка на releases/SOME_TIMESTAMP. Далее идет каталог repo, который содержит ваше голое репо, releases с несколькими последними успешными или неудачными развертываниями. Последний - shared, и в нем есть файлы или каталоги, которые должны быть общими для разных выпусков (например, config/database.yml).   -  person blelump    schedule 03.12.2014
comment
Большое спасибо за ваш ответ. Не могли бы вы мне помочь, пожалуйста! Что мне сделать, чтобы мой сервер использовал новый код, загруженный Cpristrano. Или как я могу синхронизировать код в главной ветке github с кодом на удаленном сервере? Благодарю вас!   -  person arthur-net    schedule 04.12.2014
comment
Ваш deploy.rb выглядит нормально. Развертывание завершается успешно? Если да, то в каталоге current по-прежнему нет новых коммитов?   -  person blelump    schedule 04.12.2014
comment
Привет! Спасибо за повтор! Развертывание завершается успешно, и текущий каталог содержит все обновления и новые коммиты. Но что будет дальше, мой сервер все еще работает на старом коде. Как объединить или заменить старый код кодом из текущей папки? Спасибо за помощь!   -  person arthur-net    schedule 04.12.2014
comment
Просто не могу получить этот Капистрано. Я думал, что это программное обеспечение синхронизирует файлы и содержимое файлов между Github и удаленным сервером, но оно просто копирует все файлы в текущую папку на удаленном сервере. Так что проще запустить git pull на удаленном сервере, и он обновит все файлы? Просто не могу заставить этот Capistrano работать так, как мне нужно.   -  person arthur-net    schedule 05.12.2014
comment
Capistrano позволяет вам контролировать процесс развертывания, и в случае любого сбоя предыдущий экземпляр развертывания все еще находится в процессе. На самом деле он делает много других вещей, но мне нужно немного настроить. Убедитесь, что ваш сервер приложений перезапускается после развертывания.   -  person blelump    schedule 05.12.2014
comment
Привет! Спасибо за ваш комментарий. Да, я вижу, что у него много конфигураций и настроек. А просто — какая конфигурация или команда может обновить все файлы и папки на удаленном сервере в каталоге my_app/???   -  person arthur-net    schedule 05.12.2014
comment
Я полагаю, ваши файлы обновлены, но сервер не перезагружается, не так ли? Задача перезапуска зависит от контейнера вашего сервера. Для единорога, например: task :restart do; invoke 'unicorn:restart'; end   -  person blelump    schedule 05.12.2014
comment
Файлы актуальны только внутри текущей папки my_app/current, а файлы внутри папки my_app/ устарели. Итак, папка current содержит новую обновленную копию папки my_app. Я использую серверы Apache и Passenger. И после ручного перезапуска он все еще работает на старом коде из папки my_app   -  person arthur-net    schedule 05.12.2014
comment
Или мне нужно настроить мой сервер для запуска из каталога папки my_app/current?   -  person arthur-net    schedule 05.12.2014
comment
Прочтите мой первый комментарий, пока не поймете его, или погуглите учебник по capistrano, чтобы получить основное представление о том, как это работает.   -  person blelump    schedule 05.12.2014
comment
Привет! Я думаю понял, мне нужно указать сервер для работы из текущей папки. Большое спасибо за Вашу помощь!!!!   -  person arthur-net    schedule 05.12.2014


Ответы (1)


Решение этой проблемы было простым. Когда вы используете Capistrano, вы должны указать серверу использовать папку «текущая». Например, я использую пассажирский сервер apache с приложением rails, поэтому в моем файле конфигурации я должен указать путь DocumentRoot /var/www/my_app/current/public

person arthur-net    schedule 01.07.2015