Должен ли я использовать git для развертывания веб-сайтов?
У меня есть сайт, работающий на django (но вопрос относится ко всему, php и т.д.)
В настоящее время я использую unison для развертывания моих изменений, и я (вроде бы привык) любил его, потому что до этого я был сделав это вручную!
Теперь, когда я намокаю ноги с помощью git, я начинаю любить его! И я думаю, может быть, я должен использовать его вместо унисона, чтобы развернуть мои изменения!
Таким образом, я получаю дополнительное преимущество от возможности вернуть свои изменения, если каким-то образом их развертывание оказалось катастрофой!
Возникает вопрос:
-
Является ли git подходящим для развертывания веб-сайтов?
-
Любые вещи/проблемы/gotchas, о которых я должен знать?
Ответы
Ответ 1
Я использую git для отслеживания моего сайта, и я его развертываю следующим образом:
git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html"
Это заслуживает небольшого объяснения. Команда архива для git будет экспортировать файлы для главной ветки, которая сжимается с помощью gzip для минимизации сетевого трафика. Он получил удаленно через ssh, который распаковывается в конечный каталог назначения.
Развертывание script, которое я использую, немного больше, но это самая важная часть.
Ответ 2
Если возникает вопрос, можете ли вы использовать git для развертывания приложения django, ответ обязательно!
Тем не менее, производственное развертывание популярного приложения может стать сложным - и выйти за рамки просто откатывания файлов. Возможно, вам потребуется запустить сценарии БД (как сценарии обновления, так и обновления), перезапустить задания cron или переместить файлы.
В рамках процесса развертывания вы можете полностью создать резервную копию всей базы кода, чтобы вернуться назад любое количество версий.
Один из способов сделать это - это Capistrano, который автоматизирует весь процесс развертывания для вас. Вы создаете сценарии в своей среде разработки и выпускаете такие команды, как: cap deploy, cap deploy_with_migrations, откат отклик и т.д., И все автоматизировано от входа в систему вплоть до процесса резервного копирования и запуска сценариев БД. Благодаря автоматическому развертыванию вы устраняете ошибки в своей производственной среде. Недавно я обратился к организации, которая случайно удалила всю свою базу данных в разгар развертывания и потребовала восстановления всего из резервных копий. Ошибки развертывания могут действительно нарушить ваш бизнес, поэтому вы хотите автоматизировать это, если вы серьезно относитесь к этому.
Хотя Capistrano - это инструмент развертывания на основе Ruby, обычно используемый с Rails, он не зависит от возможностей автоматизации. В Интернете есть множество сообщений, в которых обсуждаются преимущества развертывания приложений Django с Capistrano (google - django capistrano).
Вы также можете проверить здесь эту ссылку
Ответ 3
Вы можете посмотреть Fabric, популярный среди Djangonauts...
Ответ 4
Ну, я использую SVN для развертывания своего веб-сайта, поэтому я бы сказал, пойдите для этого! Имейте в виду, что вам, возможно, придется перезагружать/перезагружать сервер каждый раз, когда вы обновляете код для веб-сайта (я не уверен, что Django или что-то, с чем вы его запускаете, может обойти это).