Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > УП: Инструменты > Посоветуйте web deployment tool?


Автор: Рыжий 16.10.2011, 01:29
Всем привет!
Имеется сайт, и его несколько тысяч файлов локально и на сервере. 
Разработка ведется на локальном компьютере и далее загружается на сервер. (Ваш К.О.)

Файлы загружаются по FTP. То-есть после некоторых изменений и тестирования, обычно 10-20 файлов вручную копируются на сервер. А это отнимает время и нервы. Еще и нет уверенности - все ли файлы были скопированы  smile 

Встал вопрос об автоматизации этого процесса. Как он реализован у вас? 


1) Сначала думал сделать все через Git. То-есть после commit и push по hook'у обновлять и файлы. Как это сделано http://toroid.org/ams/git-website-howto или http://stackoverflow.com/questions/6112852/git-website-update-strategy-how-to-sync-dev-and-live-repositories
Но использовать систему контроля версий для деплоймента - мне лично как-то не удобно. Получается использование одного инструмента вместо другого.

2) Может кто использует простой rsync? Поделитесь какие плюсы / минусы?

3) И наконец пришел к  Deployment Tools. Вещь которая "для этого и предназначена". 
Пока для себя в них вижу один плюс - использование правильного инструмента в нужном месте. 
Из минусов - еще один инструмент за которым придется следить. 

Кто как автоматизировал загрузку измененных файлов на сервер?  smile 

Автор: bilbobagginz 18.10.2011, 02:05
Цитата(Рыжий @  16.10.2011,  00:29 Найти цитируемый пост)
Встал вопрос об автоматизации этого процесса. Как он реализован у вас? 

давай не будем о больном smile

в идеальном мире у тебя должна быть:
  • среда "учебная"(dev) - самая новая среда, девелы на ней работают (и различные экспериментальные среды)
  • среда "инсценировочная" (staging) с т.з. конфигурации системы должно быть идентичным боевому. разница - код, который бежит на нем.
  • среда "боевая"(prod) - самая старая и проверенная среда.

разработка идет на dev.
после какого-то цикла QA, переносится код на staging
после достаточного времени цикла QA + мониторинга желательно быть способным использовать staging для напр. 10% всего объема обработки. а потом полный деплоймент.

теперь о процессе.

рекомендуется разделять версионный код и деплоймент, т.е. git != deployment tool
рекомендуется внедрять код через rsync (там несколько флажков есть) или похожие методы.

когда стирается разница между деплойментом и ведением версий ?
1) когда вес метаданных из репозитария не значителен относительно общего кода
2) когда общий вес данных + метаданных - не значителен.

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

что всё таки дает rsync:
1) при правильной настройке копирует диффы (как и тулза ведения версий), т.н. "delta-transfer algorithm".
2) относительно шустёр.
3) копирует только данные, которые надо
4) легко скриптуется/кронится
5) проверен многолетним опытом и петабайтами данных

в догонку к ведению версий ведут тэги/метки которые дают точки отсчета от общего потока версий.

Причем если обнаруживается грабля на прод/стейдж - код патчить можно, но потом - реверт. а решение переделывай "по-настоящему".

Автор: Рыжий 22.10.2011, 02:25
bilbobagginz, Спасибо за такой развернутый ответ) В первой половине ты действительно описал "идеальный мир".

Я и сам поискал чем люди пользуются "в интернетах".
На зарубежных сайтах многие советуют Capistrano - система деплоймента на Ruby. 

Поспрашивал у знакомых - большинство просто копируют файлы по ftp и не пудрят мозги smile 

Я же пока остановился на варианте от PHPStorm (редакторе JetBrains для php). В него встроен небольшой деплоймент функционал, который синхронизирует локальные файлы с сервером. Он находит измененные файлы и обновляет их на сервере. 

Попользуюсь им пару месяцев smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)