Назад | Перейти на главную страницу

Разрешение на запись с использованием пользователя deploy

В настоящее время я новичок в 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 для развертывания в нем. Так что вам нужно обработать это заранее, вероятно, в том же рецепте шеф-повара, где вы создали пользователя.