Мы используем два разных метода перемещения кода из среды в среду. Первый - использовать ветки и триггеры с нашей системой контроля версий (в нашем случае, mercurial, хотя вы можете сделать то же самое с git). Другой способ - использовать fabric, библиотеку python для выполнения шелл-кода на нескольких серверах.
Используя управление исходным кодом, вы можете иметь несколько основных веток, например production
development
staging
. Скажем, вы хотите переместить новую функцию в постановку. Я объясню в терминах mercurial, но вы можете перенести команды на git, и все должно быть в порядке.
hg update staging
hg merge my-new-feature
hg commit -m 'my-new-feature > staging'
hg push
Затем ваш сервер удаленного управления исходным кодом передает на все ваши веб-серверы с помощью триггера. Триггер на каждом веб-сервере затем выполнит обновление и перезагрузит веб-сервер.
Чтобы перейти от постановки к производству, это так же просто.
hg update production
hg merge staging
hg commit -m 'staging > production'
hg push
Это не самый хороший метод развертывания, и он делает откат довольно сложным. Но это быстро и легко настроить, и все же намного лучше, чем развертывание каждого изменения вручную на каждом сервере.
Я не буду проходить через ткань, так как она может быть довольно запутанной. Вы должны прочитать их документацию , чтобы понять, на что она способна. Есть много учебных пособий по ткани и джанго. Я настоятельно рекомендую матричный маршрут, поскольку он дает вам гораздо больше контроля и включает в себя только написание некоторого питона.