2009-06-01 3 views
5

Каковы некоторые лучшие практики и общая теория многоступенчатого развертывания для веб-приложений?Многоступенчатый совет по развертыванию?

Я особенно заинтересован в развертывании Rails приложений с помощью Git, Capistrano и пассажира, и я нашел сообщения, обсуждающих гайки и болты процесса:

Какие соображения следует принимать в отношении каждого этапа (тестирование, постановка, производство)? Должны ли этапы развертываться на разных физических серверах? Любые советы или рекомендации по многоэтапному развертыванию? Любые коряги, на которые я должен обратить внимание?

лучше,

Jacob

+1

Извините, мне пришлось удалить две гиперссылки на эти сообщения в блоге, чтобы опубликовать вопрос. Любой, кто заинтересован в том, чтобы узнать больше, может зайти в Google с этими пунктами прямо на стол. – trisignia

+0

Зачем вам удалять гиперссылки? –

+1

Я новый пользователь здесь, и StackOverflow еще не дал мне опубликовать гиперссылки в моих вопросах. – trisignia

ответ

0

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

Вы должны быть очень бдительны, чтобы на обоих серверах были одни и те же версии драгоценных камней. Это может вызвать проблемы, если версия приложения работает в стадии постановки, но не в производстве из-за такого рода несоответствий.

У меня всегда будет открытое консольное окно, готовое откат последнего развертывания в случае, если что-то пойдет не так. Для этого действительно не так много.

Сэкономьте немного денег и купите самый дешевый промежуточный сервер, который вы можете. Ты единственный, кто будет использовать его, верно? Просто убедитесь, что они принадлежат одному провайдеру.

+0

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

1

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

# deploy.rb 
task :stage do 
    server 10.0.0.1 ... 
end 

> cap stage deploy 

Вы также можете определить настройки задачи внутри каждой целевой задачи, такие как Deploy, что делает очистку в но не в производстве.

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

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

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

Заманчиво положить много пользовательского поведения в ваш deploy.rb, но я обнаружил, что это имеет тенденцию откусывать назад и требует много усилий по обслуживанию в качестве среды или изменения cap api.

Другая практика, которую я видел в более крупных средах, заключается в том, чтобы иметь учетную запись оболочки с проверкой, которая отслеживает стабильную ветвь, специально настроенную для работы в качестве контрольной точки capistrano. Вы используете ssh и запускаете команды cap вместо локально. Это может помочь избежать проблем, в которых локальный checkout's deploy.rb имеет изменения, которые вы не готовы использовать при развертывании на производство. Это меньше проблема с git vs svn, но все же нужно быть осторожным, чтобы подумать о том, что их местный deploy.rb в данный момент работает с командами командной строки.

Heroku действительно делает этот материал легким в эти дни, и EY и другие далеко не совсем позади.

0

Мы успешно применяем многоступенчатое развертывание capistrano уже более года. Система прекрасно разделяет файлы развертывания для каждого этапа почти одинаковым образом с файлами среды Rails. Это было очень легко настроить и управлять.

Смежные вопросы