capistrano deploy_symlink завершается ошибкой - PullRequest
3 голосов
/ 30 сентября 2010

Это мое первое развертывание. Я сделал колпачок deploy:setup, который работал нормально.

Затем, когда я пытаюсь выполнить cap deploy:update, я сталкиваюсь с сообщениями об ошибках. Что-то вроде

rm: cannot remove `/var/www/app_name/current': Is a directory

Вот мои права доступа к файлам и каталогам.

http://pastie.org/1189919

В целом, какова наилучшая практика в отношении пользователей и разрешений для развертывания? Должен ли я использовать root или создать другого пользователя. Если другому пользователю, какие именно разрешения ему нужны?

Спасибо

Ответы [ 3 ]

6 голосов
/ 30 сентября 2010

Вы создали каталоги в /var/www/app_name, или они были созданы capistrano?

Несмотря на это, проблема в том, что /var/www/app_name/current не должен быть каталогом - это должна быть символическая ссылка на текущий выпуск в /var/www/app_name/releases/. Ошибка возникает, когда capistrano завершил создание новой папки выпуска в /var/www/app_name/releases/ и пытается установить символическую ссылку /var/www/app_name/current на нее.

Возможно, вы сможете исправить свои проблемы, переименовав /var/www/app_name/current (таким образом, у вас будет резервная копия, если что-то пойдет не так), и создайте символическую ссылку с /var/www/app_name/current на самый последний выпуск в /var/www/app_name/releases/, а затем выполните cap deploy. (Удалите текущую резервную копию, если это работает).

Что касается лучшей практики, что бы вы ни делали, не используйте root . Вместо этого настройте пользователя (или используйте существующего пользователя), у которого есть только разрешения на необходимые каталоги (не читал ваши сценарии внимательно, но, вероятно, просто /var/www/app_name.

0 голосов
/ 06 декабря 2010

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

Иногда он жалуется, что хеш-значение в github не соответствует ожидаемому значению, иногдане будет обновлять каталог, потому что он уже существует, но в основном из-за того, что он хочет создавать вещи, которые существуют.

Нет ли способа заставить Capistrano и, таким образом, команды оболочки просто сделать это?Я был бы по крайней мере признателен, если бы спросил меня, что он должен делать, если он сталкивается с ошибками такого типа, а не просто терпит неудачу и откатывается назад.Особенно, когда это простая файловая операция.

В конечном итоге мне приходится вручную удалять файлы на сервере, чтобы скрипт Capistrano работал без сбоев.Это явно не путь вперед.

0 голосов
/ 30 сентября 2010

Чтобы развернуть новую версию, вы должны вызвать cap deploy или cap deploy:migrations, а не cap deploy:update.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...