Настройка сервера разработки / производства PHP / MYSQL

Я разрабатываю свое веб-приложение на размещенном сервере. Я использую IDE, которая автоматически загружает / загружает файлы, которые я редактирую. Я хочу настроить второй сервер (например, development.domain.com), который я буду использовать для работы над обновлениями. Как только я закончу и протестирую обновление, как я могу отправить все изменения на сервер релизов (изменения схемы базы данных, изменения / добавления / удаления файлов, системные изменения в cron и т. Д.)? Есть ли программное обеспечение, которое будет делать это для меня одной кнопкой, или мне нужно отслеживать все изменения, которые я делаю, затем копировать файлы и вносить изменения в схему на рабочем сервере по одному?
Спасибо

1

Решение

Это хорошая проблема, с которой сталкиваются многие ранние разработчики. Мы, в StrollUp, используйте tomcat и Elastic beanstalk, и о развертывании на производственных машинах позаботятся. Так что нам легко загрузить файл войны из нашей среды разработки в prod. Вы также можете дать Эластичный бобовый стебель попытка Некоторые PHP-фреймворки, такие как Laravel обеспечивает эти функции Ликр RoR. Но с вашим собственным php-кодом и сервером единственного экземпляра вы можете следовать этим рекомендациям:

  1. Отправка кода на сервер Prod:

    1. После того, как вы проверили свой код разработчика, загрузите весь каталог / var / www / html / YOUR_PROJECT (сжатый, т. Е. YOUR_PROJECT.gz или YOUR_PROJECT.phar) на ваш сервер prod (не загружайте по одному, есть вероятность, что некоторые файлы успешно загружены, некоторые не удалось)
    2. Распакуйте сжатый загруженный файл на сервер prod
  2. Передача изменений в БД:

    1. Изменения в БД могут содержать как DDL, так и DML. Лучший способ перенести их на prod (по мне) — это сохранить sqls по порядку что вы запустили свою среду разработки и запустили их непосредственно перед разархивированием сжатого проекта на сервере prod.
    2. Другой способ (не рекомендуется, но он работает для меня) — выгрузить всю базу данных dev (очевидно, не таблицы пользователя или журнала) в базу данных prod.
  3. Передача Кронов:

    1. Я просто копирую весь cron из dev в prod. Вы можете сделать это в скрипте bash.

      crontab -r # удалить все текущие задания cron
      crontab cron.txt # положить все перечисленные cronjobs в cron.txt

Лучшая часть о вышеупомянутых шагах: вы можете поместить все вышеперечисленные шаги в скрипт bash и выполнить его в одной строке. Это будет как ваше собственное программное обеспечение с одним нажатием кнопки;)
Я сделал сценарии «одним щелчком» для себя, но они специфичны для tomcat и Elastic Beanstalk. Вы можете посмотреть, это может дать вам некоторые идеи о том, как действовать: AWS Deploy

Самое важное: Перед запуском sql-запроса на prod-сервере сначала сделайте резервную копию базы данных обеих баз данных. Используйте VCS (git, bitbucket — хороший вариант), чтобы сохранить все ваши изменения в безопасности.

3

Другие решения

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

0

По вопросам рекламы [email protected]