2013-04-05 3 views
0

Итак, скажем, я разрабатываю приложение PHP, которое я разрабатываю в бродячем поле, идентичном производственному окружению. Итак, в качестве конечного результата у меня будет файл * .tar.zip с кодом ...Как организовать развертывание веб-приложений на нескольких серверах одновременно?

Как организовать развертывание в производственной среде, где есть много серверов приложений? Я имею в виду - я смущен, как сразу же выводить код на производство синхронно?

Дополнительная информация:

на серверном коде хранится так:

project 
    +current_revision ->link to revisions/v[n] 
    +revisions 
    +v1 
    +v2 
    +v3 
    ... 
    +data 

Так что, когда я должен развернуть изменения, которые я обычно запустить сценарий развертывания этого добавления обновленное деготь на сервер с SSH, распаковывается в определенный каталог в версиях, символизирует его в current_revision и перезапускает php-fpm .... Таким образом, я могу откат в любое время, просто привязывая к старой версии.

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

ответ

0

Много способов. Если вы начинаете с barebones (без облачной инфраструктуры), я являюсь поклонником ветки ветки SVN. Имейте SVN-репо для своего кода. Настройте на нем привязку после фиксации, которая проверяет, что-либо в/branch/production/было изменено.

Если это так, пусть крюк пост-фиксации полностью заблокирует вашу автоматическую процедуру развертывания - и в этом случае простой способ сделать это - дать всем вашим серверам известность * до svn export. Так просто!

(* это трудный шаг)

2

Если вы ищете ответ «готовые к использованию», вы должны будете предоставить некоторую информацию о вашей установке. Например, если вы планируете использовать git для VCS, вы можете написать простой сценарий оболочки, который вытащит последнюю фиксацию и rsync с сервером (ами). Или, если вы строите поверх Symfony, capifony - отличный инструмент. Если вы используете AWS, есть provider plugin, написанный автором Vagrant, который очень прост в использовании, и вы можете указать регулярное выражение, для которого машины должны приводить up или provision.

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

  1. сделать здание одинаковых коробок в локальных и удаленных средах, как легко, как возможно, и постарайтесь убедиться, что ваше выделение выделяет idempotence.
  2. Рассмотрите свою структуру управления версиями/выпуском; какие ресурсы редко или никогда не будут меняться? Включите функции setup вместо функции deploy и не включайте их во время прогона синхронизации.
  3. Отделите свои проблемы с разработкой и системным администрированием; то есть не просто упаковывать бродячую коробку с * .tar.gz и связывать ее через config.vm.box_url. Причина этого заключается в том, что при каждом развертывании вам придется переупаковать каждый производственный сервер с новым ящиком, а не просто изменять файлы на сервере или добавлять/удалять некоторые пакеты с сервера.
  4. Ознакомьтесь с некоторыми инструментами управления конфигурациями, такими как Chef и Puppet; даже если вы не используете их, они дадут вам представление о том, как профессионалы sysadmin подходят к этой проблеме.