#capistrano
#capistrano
Вопрос:
На компьютере под управлением apache запущено 3 приложения rails, все используют capistrano для развертывания, и они используют passenger. Сценарии развертывания являются стандартными. Мой предшественник настроил пользователя deploy
в стиле учебника, все 3 проекта используют одну и ту же версию capistrano (3.8) и используют одну и ту же структуру каталогов на сервере. Все они находятся в общем каталоге в доме deploy
пользователя. Все используют passenger, те же версии ruby и rails. Они совместно использовали некоторые связанные каталоги, но в остальном все сценарии развертывания довольно тривиальны. Мой предшественник настаивает на том, что в его времена развертывание работало. У нас все еще есть его машина, и развертывание также не работает с его машины — только для этого одного проекта.
В cap production deploy
одном из трех проектов я всегда получаю Errno::EACCES: Permission denied @ dir_initialize - /tmp/passenger.h6D8mJy/apps.s
ошибку.
Мой единственный обходной путь заключается в следующем: я вхожу на рабочий сервер, становлюсь суперпользователем и меняю владельца каталога / tmp на deploy
. Затем я запускаю сценарий развертывания, и он завершается успешно. (Затем, конечно, я меняю владельца каталога обратно на root.)
Таким образом, кажется, что каталог /tmp / passenger.something неправильно установил своего владельца. Почему-то я не думаю, что это может быть проблемой, поскольку два других сценария используют тот же каталог и не имеют этой проблемы. Или они? Кто создает этот каталог и почему, и где настроено право собственности на этот каталог?
Я подумал, что будет лучше, если я просто включу журнал, но мне пришлось вырезать все это … StackOverflow отклонил мой пост, потому что «это похоже на спам»).
INFO [e1c2bb25] Running ~/.rvm/bin/rvm ruby-2.3.1 do bundle exec rake assets:precompile as deploy@99.999.99.999
DEBUG [e1c2bb25] Command: cd /home/deploy/projects/external-services/releases/20190423082459 amp;amp; ( export RAILS_ENV="production" ; ~/.rvm/bin/rvm ruby-2.3.1 do bundle exec rake assets:precompile )
DEBUG [56ee67e8] rake aborted!
Errno::EACCES: Permission denied @ dir_initialize - /tmp/passenger.h6D8mJy/apps.s
Комментарии:
1. проверьте этот поток , возможно, вы найдете что-то полезное.
2. @UdAY Я сам нашел обходной путь в этой теме. Мой вопрос в том, как мне исправить ситуацию? Это не так, как должно быть; обходной путь установки владельца глобального каталога /tmp для моего
deploy
пользователя скорее больше похож на взлом, чем на решение.3. вы можете предоставить
deploy
пользователю права администратора для записи / изменения файлов вtmp
каталоге, верно? вместо того, чтобы менятьowner
4. Но мой
deploy
пользователь одинаков для всех трех проектов. Таким образом, его привилегии wrt / tmp всегда должны быть одинаковыми. Кто создал этот забавный подкаталогpassenger.h6D8mJy
? Судя по названию, это звучит как временное решение. Итак, кто его создает? Похоже, создатель неправильно определил владельца. Кто это делает? Я недостаточно хорошо знаю капистрано, чтобы это выяснить.5. Я отвечаю на свой собственный комментарий здесь: каталог passenger.xxxx является рабочим каталогом экземпляра passenger. Поскольку сам passenger запускается от имени root (он должен порождать дочерние процессы, работающие от имени потенциально разных пользователей), каталог принадлежит root. Мне все еще не удалось найти решение моей проблемы, просто пока.