В настоящее время я новичок в Chef и Capistrano. Я использую версию 3.x Capistrano для развертывания приложения Rails 4.
Я успешно загрузил сервер с помощью Chef Solo. Одна кулинарная книга, которую я использую, - это Nginx.
Вернемся к моему простому приложению Rails 4, я пытаюсь запустить эту команду, чтобы проверить статус моего развертывания:
cap production deploy:check
Однако это вызывает ошибку:
DEBUG [05e580a4] Command: /usr/bin/env mkdir -pv /var/www/shared /var/www/releases
DEBUG [05e580a4] mkdir: cannot create directory `/var/www': Permission denied
DEBUG [05e580a4] mkdir: cannot create directory `/var/www': Permission denied
я использую deploy
пользователь Capistrano, а в конфигурации узла Chef я указал deploy
пользователь. Я также могу войти в свой экземпляр, используя deploy
пользователь.
Есть ли у меня подходящий способ обратиться к разрешениям на Chef или Capistrano?
Каталог выше базовый каталог, в который развертывается Capistrano, должен быть доступен для записи пользователем Capistrano, потому что Capistrano обычно создает этот каталог.
Примечание по стилю / соглашению здесь. /var/www
не лучшее место для использования в качестве базового каталога вашего приложения. На ряде ОС и дистрибутивов /var/www
сам создается и управляется пакетами ОС, и, помимо того, что размещение типичных каталогов / текущих / общих каталогов Capistrano немного небрежно, его собственные разрешения могут быть отменены, если пакеты, связанные с веб-сервером, обновляются или переустанавливаются. Я предлагаю вам добавить еще один слой в структуру каталогов, например
/var/www/ruby_apps
А потом в рецепте от шеф-повара:
group 'deploy'
user 'deploy' do
group 'deploy'
end
directory '/var/www/ruby_apps' do
user 'deploy'
group 'deploy'
end
Теперь предположим, что ваше приложение называется squishy
.
В вашем приложении Rails config/deploy.rb
редактировать :deploy_to
строка следующим образом:
set :deploy_to, '/var/www/ruby_apps/squishy'
..и теперь Capistrano сможет создавать и поддерживать squishy
каталог и все, что в нем, а также любые другие приложения, которые вы хотите развернуть рядом с ним в ruby_apps
.
Каталог, в который вы собираетесь развернуть, должен уже существовать и иметь правильные права собственности и разрешения, прежде чем вы попытаетесь запустить Capistrano для развертывания в нем. Так что вам нужно обработать это заранее, вероятно, в том же рецепте шеф-повара, где вы создали пользователя.