Задать вопрос

Git на продакшин сервере?

Мучает меня текущая ситуация с обновлением продакшин сервера.
На даный момент это выглядит так -
- разработка в отдельной ветке, пушу в продакшин ветку
- захожу на сервер(или через фабрик) делаю git pull, накатываю миграции если нужно, и собираю статику.
Но вот если что то идет не так то сервер лежит, пользователи жалуюуться, значит я все делаю не так.

Думал уже как вордпрещики архивами все делать, но не удобно абсолютно, плюс миграции всеравно нужно накатывать.
Вопрос - как вы обновляете приложение на продакшин сервере и как делаете миграции базы даных без боли?
  • Вопрос задан
  • 2414 просмотров
Подписаться 12 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
@developer_as
Удобен для использования Capistrano. Не могу судить за другие т.к. тесно только работал с этой системой. Версии релизов храняться на сервере и в случае неоходимости можно быстро откатить код. Также при каждом релизе не нужно лезть на сервер и делать пулл.
Ответ написан
k0t3n
@k0t3n
Python, InfoSec, IT
Есть такая прекрасная вещь, как CI (continuous integration). Сам пользуюсь TravisCI, прекрасное решение. Musthave для современного разработчика.
Ответ написан
hOtRush
@hOtRush
для несложных проектов прекрасно подходит например https://github.com/deployphp/deployer
есть еще https://github.com/REBELinBLUE/deployer
ну или разные pipelines у гитлаба/битбакета, но там много больше заморачиваться надо
Ответ написан
Комментировать
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Думал уже как вордпрещики архивами все делать

А вот это щас обидно было! :)

По делу - используйте автоматический деплой. Сама схема "по уму" выглядит следующим образом:
- деплоится не мастер, а тег/релиз
- каждый такой релиз деплоится в отдельную папку
- тестируете это добро на поддомене
- если все ок, тогда на проде переключаете сервер на папку нового релиза
- профит

При таком подходе получаете очевидные плюсы:
- на сервер лазить ручками не нужно, обезьяний труд должен быть автоматизирован
- деплой происходит без downtime
- у вас сохраняется предыдущее стабильное состояние, в случае проблем с новой версией вы легко переключаете сервер на предыдущую папку, откатываясь таким образом к last stable
- при желании можно даже a/b тестирование делать
Ответ написан
@karminski
Senior React.JS Developer
Деплой обычно сначала делаю на www-dev, а потом уже www. www-dev перед каждым деплоем полностью синхронизируется с www, включая бд. Соответственно, перед деплоем у тебя 2 абсолютно идентичных проекта. Проверяешь всё на одном, ну а затем - Поехали!
Ответ написан
Kvarkas
@Kvarkas
IT (full stack)
Jenkins наше все :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы