Должен ли я использовать 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 или что-то, с чем вы его запускаете, может обойти это).