Как сделать автоматический деплой PHP приложения?

Доброго времени суток!
Хотел бы поинтересоваться: как организовать автоматический деплой PHP приложения (с последующим развертыванием БД)?
Проект хранится в GIT репозитории (Gitlab CE).
Хотелось бы, чтобы для каждой ветки разворачивался свой поддомен, и своя база данных, с последующим выполнением миграций. Возможно ли такое организовать?
P.S. используется для разработки CakePHP 3, веб-сервер nginx.
  • Вопрос задан
  • 7838 просмотров
Решения вопроса 2
Нужно попробовать Docker.

Идеология:
- делается Dockerfile, который описывает как с нуля развернуть проект и что делать при каждом запуске контейнера (например, почистить кеш и применить миграции). Там всего пару команд надо знать - ADD (добавить файлы), RUN (запустить команду), CMD/ENTRYPOINT (главное приложение контейнера)
- на hub.docker.com настраивается Automatic build, который по web hook может пинать сервер, что пора забрать новый image. Можно аналогичное сделать с помощью Jenkins или вообще своего скрипта
- когда серверу говорят, что появился новый image, он его скачивает, останавливает текущий контейнер и быстро запускает новый. Простой - пару секунд. Если это долго, можно запускать новый контейнер, а старый не удалять, перед ними ставить nginx или другой балансер и в нём переключать на новый контейнер, а потом удалять старый.
Ответ написан
sulla
@sulla
как вариант - deploybot.com - аналог capistrano но без конфигов в проекте.
1 репозиторий деплой бесплатно, 10 репозиториев 15$ месяц
Ответ написан
Пригласить эксперта
Ответы на вопрос 9
toxicmt
@toxicmt
CTO at hexlet.io
Для автоматизации развертывания проектов на любом языке используется ansible. Это система управления конфигурации, которая отлично подходит и для деплоев. www.ansible.com В сети полным полно статей-примеров и на гитхабе кода, например:

https://www.digitalocean.com/community/tutorials/h...

https://github.com/ansistrano/deploy
Ответ написан
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Например, Jenkins + Capistrano (или Rocketeer). Комбинаций - масса.
Кстати, у последних версий Gitlab должна быть поддержка CI.
Ответ написан
ukko
@ukko
php, js (es6), golang, symfony, react
.gitlab-ci.yml + deployer.org (или любой другой деплоер: capistrano, ansible, etc..)
Ответ написан
Deroy
@Deroy
Senior Developer, Software Architect
есть еще хороший инструмент magephp.com

в отличии от Deployer работает более стабильно (сравнивал с версией 2 - сейчас если не ошибаюсь есть версия 3 - её не смотрел.)
и в отличии от упомянутого Rocketeer - гораздо более продуманная и простая архитектура - писать кастомные процессы развертывания под него в разы проще чем под Rocketeer.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы