Деплой на мастер сервер

303
11 марта 2017, 04:30

На данный момент в проекте есть дев сервер и у каждого разработчика своё локальное окружение приближенное к реальному.

Как происходит деплой на мастер сервер не заходится же на сервак и не делается git pull ?

Answer 1

И так можно, но конечно лучше использовать какой-нибудь Continuous Integration, например, Jenkins или go. В самом простом варианте можно настроить как Continuous deployment.

Принцип работы приблизительно такой.

В CI настраивается git, время опроса, сервера. И раз в несколько минут опрашивается репозиторий на изменения по какой-нибудь ветке. И выливаются изменения на тестовый.

Answer 2

Вы спросили в основном про доставку файлов на сервер (git pull может сделать только это). В случае простого веб-приложения этого бывает достаточно, при условии что у вас сервер-снежинка и вы всё равно его когда-то конфигурируете руками.

Как только приложение становится немного сложнее, простой доставки файлов становится недостаточно. В этом случае становится выгодно автоматизировать развертывание, использовать специализированные инструменты и серверы-фениксы.

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

Поэтому вот вам что-то вроде небольшой ментальной карты (mindmap). Возможно, о каких-то вопросах вы ещё не думали и не рассматривали какие-то из вариантов. Надеюсь, она поможет вам сделать выбор или хотя бы полнее увидеть задачу.

Итак, три основных вопроса:

  1. Что делать? Из чего вообще состоит развёртывание:

    • Доставить обновлённое приложение на сервер. Способы:
      • git pull на сервере. Плохо масштабируется.
      • Закинуть файлы с помощью rsync. Хорошо масштабируется.
      • Закинуть файлы по FTP, прибежать с флешкой к серверу, отправить Почтой России. В общем, разные способы для любителей преодолевать трудности.
      • Упаковать в пакет некоторого пакетного менеджера, закинуть в репозиторий. Для веб-приложения может быть слишком сложно и медленно. Но хорошо, если вы продаёте приложение и должны его как-то распространять.
      • Упаковать в образ, развернуть в контейнере. Аналогично прошлому пункту.
    • Сконфигурировать приложение.
    • Установить и сконфигурировать сторонние приложения (зависимости).
    • Запустить и перезапустить процессы.
    • Поднять базу данных.
    • Получить какие-нибудь нужные для работы данные.
    • (Тут может быть очень много разных задач.)
    • ...
  2. Как делать? Каким инструментом развертывать приложение:

    • Руками по памяти.
    • Написать скрипт и запускать его.
    • Написать сценарий для системы управления конфигурациями.
    • Распространять готовый образ
    • (тоже много способов)
  3. Когда делать? Как инициировать развертывание новой версии:
    • Вручную. Ответственный за релиз человек запускает инструмент из прошлого пункта или жмет кнопку на сервере интеграции, который использует этот инструмент.
    • Автоматически по реакции на изменения в системе контроля версий. Ответственный за релиз человек делает коммит в master или создаёт и пушит на сервер новый тег. Сервер реагирует и использует инструмент развертывания.
READ ALSO
Оптимизация изображений Laravel 5.3

Оптимизация изображений Laravel 5.3

Для загрузки изображений используются посторонняя библиотека изображение сохраняется в нескольких расширениях с учетом пропорций, это...

590
PHP вычесть час из даты

PHP вычесть час из даты

Я получаю дату в виде строчки: "0903

351
Не открывается админка umi.cms

Не открывается админка umi.cms

При попытке зайти в админку, после ввода логина:пароля отображается белый экран без всегоВключил debug, выводятся следующие строчки:

400
Параметры функции в PHP

Параметры функции в PHP

Есть следующий PHP код:

360