2009-03-14 2 views
11

У меня есть сайт работает на Django, (но вопрос относится к чему-либо, PHP и т.д.)Должен ли я использовать git для развертывания веб-сайтов?

В настоящее время я использую unison развернуть свои изменения, и я (вроде привык) любить его, потому что до этого я делал это вручную!

Теперь, когда мои ноги мокрые от git, я начинаю любить его! И я думаю, может быть, я должен использовать его вместо унисона, чтобы развернуть мои изменения!

Таким образом, я буду иметь дополнительное преимущество в возможности вернуть свои изменения, если каким-то образом их развертывания оказалось катастрофой!

Возникает вопрос:

  • ли мерзавец подходит для развертывания веб-сайтов?

  • Любые вещи/вопросы/подводных камней, что я должен быть в курсе?

ответ

16

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

git archive --format=tar --prefix="homepage/" master | gzip | ssh webserver "tar xvz -C ~/public_html" 

Это заслуживает небольшого объяснения.Команда archive для git будет экспортировать файлы для главной ветки, которая сжимается с помощью gzip для минимизации сетевого трафика. Он получен удаленно через ssh, который распаковывается в конечный целевой каталог.

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

+0

Как вы упорядочиваете файлы, которые нужно удалить с сервера? Может ли 'rsync' взять ввод tar-стиля? – mjs

+0

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

+0

До сих пор я использую унисон тоже. Это имеет то преимущество, что изменения на обеих сторонах автоматически синхронизируются (кроме того, что тот же файл был изменен с обеих сторон). Я хочу переключиться на развертывание git на сервере. Но не так. На сервере запускается git checkout. Код обновляется git pull. – guettli

5

Ну, я использую SVN для развертывания своего веб-сайта, поэтому я бы сказал, иди за ним! Имейте в виду, что вам, возможно, придется перезагружать/перезагружать сервер каждый раз, когда вы обновляете код для веб-сайта (я не уверен, что Django или все, на что вы его запускаете, может обойти это).

+0

Для справки: это не прямое django, которое регулирует необходимость перезагрузки сервера, но сервер-мост python. В конфигурации Apache-w/-modpython изменения кода python требуют перезапуска apache, изменений в шаблонах (или статических файлах) нет. Изменения ORM требуют гораздо большего. –

+0

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

9

Если вопрос, если вы можете использовать Git для развертывания приложения Джанго, ответ обязательно!

Однако развертывание производства популярного приложения может стать сложным - и идти далеко за пределы только откате файлов. Возможно, вам потребуется запустить сценарии БД (как сценарии обновления, так и обновления), перезапустить задания cron или перемещать файлы.

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

Один из способов сделать это с помощью Capistrano, который автоматизирует весь процесс развертывания для вас. Вы создаете сценарии в своей среде разработки и выпускаете такие команды, как: cap deploy, cap deploy_with_migrations, откат отклик и т. Д., И все автоматизировано от входа в систему вплоть до процесса резервного копирования и запуска сценариев БД. Благодаря автоматическому развертыванию вы устраняете ошибки в своей производственной среде. Недавно я обратился к организации, которая случайно удалила всю свою базу данных в разгар развертывания и потребовала восстановления всего из резервных копий. Ошибки развертывания могут действительно нарушить ваш бизнес, поэтому вы хотите автоматизировать это, если вы серьезно относитесь к этому.

Хотя Capistrano является инструментом развертывания рубин на основе широко используется с Rails, это агностик с точки зрения его возможностей автоматизации. В Интернете есть множество сообщений, в которых обсуждаются преимущества развертывания приложений Django с Capistrano (google - django capistrano).

Вы также можете проверить check out this link here

+0

Я думаю, что вы слишком усложняете это. В вопросе никогда не упоминается ничего похожего на популярные/сложные бизнес-сайты .. но, capistrano - хорошее предложение – dbr