Сайт обновился, если сайт отображается некорректно, обновите кэш браузера CTRL+F5 или SHIFT+F5 или напишите нам об ошибке на studio@webboss.pro

Скрипт обновления сайта с Github на PHP (with SSH)

Скрипт обновления сайта с Github на PHP (with SSH)

Если у Вас возникла следующая  подобная задача (вводные данные):

  • Есть какой-то закрытый проект на PHP, он постоянно дорабатывается
  • Копия данного проекта (разных версий) находиться у разных клиентов
  • Проект состоит из PHP набора файлов, назовем их файлы проектов и набора файлов для каждого клиента которые свои, назовем их templat`ом
  • Есть база данных на MYSQL

Что нужно от скрипта:

  • Весь скрипт должен быть в 1м файле, допустим update.php
  • При запуске скрипта он должен быть как-то защищен паролем, чтобы посторонний пользователь не мог запускать обновление, но сам файл лежал и не мешал проекту
  • Обновление должно происходить быстро
  • После запуска обновления проект должен блокироваться на время обновления для всех пользователей (чтобы в процессе обновления они не видели ошибок и прочего)
  • Обновление можно запускать вручную, так и по CRON
  • Должна создаваться копия проекта до его обновления (сами файлы и БД)
  • Доступ к репозиторию должен происходить через SSH ключ, который для каждого клиента свой

Поискав в интернете готового решения, обнаружено не было, поэтому разработали, назовем его «Плагин» самостоятельно, готовы поделиться им за небольшую плату, и при необходимости внести правки в код.

Как примерно работает данный скрипт:

  1. При запуске выводиться форма для ввода пароля (чтобы «левый» человек не мог его запускать)
  2. После запуска скрипта он проверяет конфигурацию проекта (доступ к БД, параметры PHP и прочее), в случае чего выводит ошибку (на основных этапах данные по обновлению пишутся в файл логов)
  3. После чего если не создан SSH ключ, создает его и делает паузу, дав возможность скопировать данный ключ и добавить его в SSH ключи на гитхабе.
  4. Дальше после запуска он создает копию проекта (исключая указанные в конфигурации файлы  и папки)
  5. Создается копия MYSQL базы
  6. Дальше происходит загрузка проекта из GitHUB через SSH ключ добавленный ранее (процедура создания ключа выполняется один раз)
  7. И обновление всех файлов с перезаписью, те файлы что в проекте гита не существуют скрипт не трогает (считаем это пользовательскими файлами)

Примерная схема работы скрипта обновления на скрине в начале статьи.

Системные требования:

  • php 5.6+
  • включенный shell_exec
  • linux подобная OS (CentOS, Ubuntu и т.д.)

Детали:

  • Создание SSH ключей на github возможно только на платных тарифах, на момент написания статьи это 4$ в месяц.
  • Реализацию выгрузи проекта на github вы реализуете самостоятельно.

* тестирование проводилось на хостинге timeweb.com, демонстрация работы по запросу, исходный код отправляется после оплаты, оплата по счету. Мелкие доработки под Ваш проект возможны. Любые кардинальные доработки производятся на платной основе по договоренности либо Вашими силами самостоятельно. Распространение и публикация скрипта после покупки запрещена.

Проверка на спам,
потяните за кружок вверх
до 100 градусов ↑
100