Каковы наилучшие методы для обновления сайта с сайта dev/stage/testing?


8

Прямо сейчас у меня есть сервер разработки с базовой конфигурацией LAMP. Производственный сервер - slicehost. Но мне интересно, какой лучший способ подтолкнуть экземпляры кода/db к этапам dev> stage> production. Это связано с тем, как вы создаете этапы?

Как вы это сделаете, не опуская сайт? Возможно ли даже, если вы не выполняете балансировку нагрузки?

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

1

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

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

Я не верю, что вы можете полностью устранить простои без условий балансировки нагрузки/среды веб-фермы. Однако самый простой способ уменьшить его в моей книге - установить последовательный процесс подготовки кода и несколько раз протестировать процесс. Автоматизация поможет там.

Что касается фактического копирования файлов, я не знаю гораздо больше, чем использовать что-то вроде FTP или что-то еще удобное. Возможно, выкладываете загрузочное сообщение. Опять же все это можно было бы сценаризировать.

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


2

Я использую .htaccess для создания «режима обслуживания» jiffy, где только мой IP-адрес может видеть основной сайт при обновлении. Все остальные получают возможность просмотреть короткое сообщение, чтобы они знали, что все должно быть подключено через несколько тиков.

Тогда я:

  1. сделать любой DB редактирует
  2. экспорт
  3. SVN/закачивать файлы
  4. Запуск автоматизированного тестирования и дать как можно больше быстро просмотреть, чтобы убедиться, что нет ничего чудовищно неправильно
  5. Верните .htaccess

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

Я должен подчеркнуть, что важно не нажимать обновления на живой сервер, не закрывая его заранее (особенно если вы используете двоичные файлы ala ASPNET), потому что пользователи, пытающиеся использовать сайт во время обновления, получат отвратительные сообщения об ошибках и вы можете получить заблокированные файлы.

  0

И я добавлю, что изменения .htaccess-swap-out, DB-edits, svn checkout/file-uploading и автоматическое тестирование модулей могут быть написаны сценарием, поэтому обновление происходит намного быстрее. 23 сен. 082008-09-23 19:14:11


1

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


0

Что касается нажатия файлов на все веб-серверы, я нахожу, что хороший старый robocopy делает трюк. Разумеется, мои среды dev/stage/prod идентичны. Просто разместите временную страницу, которая сообщит пользователям, что сайт вернется.


0

Сейчас мы используем серию сценариев оболочки с файлами конфигурации, которые деактивируют наши измененные файлы, scp их на каждый сервер в кластере и затем разворачивают их, как только они там. Конечно, этот метод имеет свои недостатки, и мы рассматриваем метод, в котором каждый член сервера имеет установленный клиент svn, и как только мы помечаем новую версию, мы переключим рабочую копию на рабочих серверах на этот новый тег. Конечно, мы выпускаем в течение нашего часа обслуживания, поэтому нам не нужно делать что-то особенное для наших пользователей (они все равно видят страницу обслуживания).


0

У меня есть опция в моей основной конфигурации, чтобы разрешить доступ к сайту или список предустановленных URL-адресов. Я могу перенаправить всех пользователей (и остановить любой трафик API с соответствующим http-кодом).

Эти URL-адреса являются ссылками на статические html-файлы, объясняющие пользователю, что происходит.

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


0

apache ant с задачами для svn и ftp foot счет для меня. Есть даже люди, которые делают db-материал с ANT, но я, как правило, хочу посмотреть их лично. Когда у вас будет чистая и push-сборка для ftp для всех ваших местоположений, вы будете поражены тем, насколько это просто.