Развертывание PHP веб-системы в нескольких местах - PullRequest
2 голосов
/ 18 августа 2010

Я занимаюсь разработкой (индивидуальный веб-разработчик) довольно большой веб-системы, которая должна работать в разных местах.К сожалению, из-за того, что у некоторых клиентов есть коммутируемый доступ, нам пришлось это сделать, и у нас не было центрального сервера для них всех.Каждый клиент является частью нашей VPN, а те, кто находится на удаленном / ISDN, набираются по требованию с нашего маршрутизатора Cisco.Все клиенты доступны в течение нескольких секунд.

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

Любые мысли о том, что было бы лучшим решением

РЕДАКТИРОВАТЬ: Найдено FileSyncTask , что позволяет мне rsync с Phing.Собираюсь использовать это.

Ответы [ 3 ]

1 голос
/ 01 сентября 2010

Здесь также есть случай для поддержки "основного" хранилища кода (в SVN, CVS или, возможно, GIT). Это не ваше стандартное «хранить редакции вашего кода в репозитории и разрешать откат» ... это репо содержит ваш текущий производственный код (только). Как только обновление готово, вы проверяете работающий обновленный код в главном репо. Все ваши серверы проверяют репо по расписанию, чтобы увидеть, изменилось ли оно, и загружают новый код, если изменение найдено. Этот процесс проверки может даже включать включение файла maintenance.php (который рекомендуется symcbean ) перед началом загрузки репозитория и удаление файла после завершения загрузки.

0 голосов
/ 18 августа 2010

Это две части, давайте сначала разберемся с простой:

Мне нужно отобразить страницу «обновления»

Если вам нужно отключитьвесь сайт, сохраняя целостность транзакций и публикуя сообщение для пользователей с обновляемого сервера, тогда единственный практический способ сделать это - через авто-предварительную подготовку - это необходимо настроить заранее (примечание - я считаю, что это может бытьсделано с использованием файла .htaccess без перезапуска веб-сервера для новой конфигурации PHP):

<?php

   if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/maintenance.php')) {
       include_once($_SERVER['DOCUMENT_ROOT'] . '/maintenance.php');
       exit;
   }

Затем просто вставьте файл maintenance.php в ваш webroot, и этот файл будет отображаться вместо ожидаемого файла.Обратите внимание, что он, вероятно, должен включать session_start () и автообновление, чтобы гарантировать, что сеанс не истек.Возможно, вы захотите расширить вышеприведенное, чтобы разрешить льготный период, когда POST будут обрабатываться, например, путем добавления второго php-файла.

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

  1. Применяет файл (ы) блокировки, как показано выше
  2. запускает rsync для репликации файлов
  3. запускаетлюбой сценарий развертывания базы данных
  4. удаляет файл (ы) блокировки

Если у каждого сайта свои настройки, я бы порекомендовал либо управлять специфическими для сайта материалами через иерархию включенияпути или даже локальное поддержание полного изображения каждого сайта.

C.

0 голосов
/ 18 августа 2010

В компании, в которой я работаю, мы работаем с огромными сетевыми системами на Java и PHP.Для всех систем у нас есть среды разработки и производственные среды.В этой компании более 200 разработчиков, так что, я думаю, вы можете себе представить размер продуктов, которые мы разрабатываем.

Мы создали архивы сборки ANT и RPM для создания пакетов развертывания.Это делается довольно легко.Я сам этого не делал, но, возможно, вам стоит разобраться.Поскольку мы используем системы Linux, мы можем легко развертывать пакеты RPM, сценарии установки в пакете RPM могут убедиться, что все попадает в правильное место.Также вы получите более правильный процесс обработки и выпуска версии.

Надеюсь, вам это помогло.

Br, Paul

...