Rails/Carrierwave/GIT/nginx/Capistrano — не удается создать каталог в папке git releases

Я использую несущей волны в приложении rails для загрузки файлов. Он отлично работает в моей среде разработки, но на моей производственной виртуальной машине (Ubuntu) я получаю эту ошибку:

Ошибка Errno::EACCES в user#update:

  Permission denied - /home/yards/apps/yardsapp/releases/20130616143623/public/uploads/tmp/20130616-1438-14186-3184
  /usr/local/lib/ruby/1.9.1/fileutils.rb:244:in `mkdir'

Я почти уверен, что понимаю, что происходит, но я не могу понять, как это исправить. Мой capistrano deploy.rb настроен с пользователем root. Поэтому, когда он создает новую папку выпуска при развертывании, права доступа предоставляются для root (я думаю).

Затем, когда я пытаюсь загрузить файл, я получаю эту ошибку, потому что nginx пытается выполнить mkdir как www-данные.

Я мог бы выбрать папку после развертывания, и она работает ... но затем другое развертывание создает еще один новый каталог с владельцем, установленным как root по умолчанию.

По крайней мере, я думаю, что это то, что происходит. У кого-нибудь есть идеи о том, как я должен это делать?


person Greg Blass    schedule 16.06.2013    source источник


Ответы (2)


Запустите развертывание как www-data. Возможно, вам потребуется настроить файл authorized_keys для пользователя www-data, чтобы он мог подключиться.

Самым быстрым способом было бы скопировать ваш файл authorized_keys для любого пользователя, которого вы используете в данный момент (при условии, что вы являетесь пользователем root):

mkdir $WWW_DATA_HOME/.ssh
cp ~/.ssh/authorized_keys $WWW_DATA_HOME/.ssh/authorized_keys
chown www-data:www-data $WWW_DATA_HOME/.ssh/authorized_keys

Вам также может понадобиться изменить оболочку, чтобы пользователь www-data мог войти в нее:

chsh -s /bin/bash www-data

Теперь вы должны быть в состоянии сделать

ssh [email protected]

и войдите в систему.

person Femaref    schedule 16.06.2013
comment
Я думаю, ты здесь. Однако я не совсем уверен, как настроить мой файл author_keys. Любое понимание этого? Он пытается развернуться как www-данные и запрашивает у меня пароль (я не думаю, что есть пароль для www-данных?) - person Greg Blass; 18.06.2013
comment
добавил некоторую информацию об этом - по сути, вам нужно подключиться к серверу по ssh и изменить вещи с другой учетной записью. После этого вы сможете войти как www-data. - person Femaref; 18.06.2013

К чему это привело, так это к неправильной конфигурации Capistrano. Я правильно следовал документам capistrano (и создал пользователя «развертыватель», то же самое, что и www-данные, как было предложено выше), и у меня есть capistrano, работающий как шарм. Также обновлен до Capistrano 3.

person Greg Blass    schedule 08.10.2014