Каковы Ваши настройки, Ваши приемы, и прежде всего, Ваш рабочий процесс?
Эти инструменты являются большими, но нет все еще никаких лучших практик, присоединенных к их использованию, таким образом, я не знаю то, что является самым эффективным способом использовать их.
--no-site-packages
?«Лучшие практики» очень контекстуальные- зависим, поэтому я не буду утверждать, что мои методы являются лучшими, просто они работают на меня. Я работаю в основном на небольших сайтах, поэтому никаких развертываний с несколькими серверами, CDN и т. Д.Мне действительно нужно поддерживать развертывание виртуального хостинга Webfaction, поскольку некоторым клиентам нужен самый дешевый хостинг, который они могут найти. Мне часто приходится развертывать сайты несколько раз в разных средах, поэтому повторяемые развертывания по сценариям имеют решающее значение.
На данный момент новое развертывание разделено на следующие шаги:
fab staging bootstrap
(настройка сервера и начальное развертывание кода) fab staging enable
(включить Apache / nginx для этого сайта) fab staging reload_server
(перезагрузите конфигурацию Apache / nginx). Конечно, их можно объединить в одну командную строку fab staging bootstrap enable reload_server
.
После того, как эти шаги будут выполнены, обновление развертывания новым кодом будет просто fab staging deploy
.
Если мне нужно откатить обновление, fab staging rollback
. Ничего особо волшебного в откате нет; он просто откатывает код до последней развернутой версии и переносит базу данных в предыдущее состояние (это требует записи некоторых метаданных о состоянии миграции БД после развертывания, я просто делаю это в текстовом файле).
Я не использовал сценарии Fabric, описанные в этом ответе, в течение нескольких лет, поэтому они вообще не поддерживаются, и я не несу ответственности за их качество :-) Но вы можете увидеть их на https://bitbucket.org/carljm/django-project-template - в fabfile.py
в корне репо и в подкаталоге deploy /
.
Я использую структуру для сборки и развертывания кода и предполагаю, что система уже настроена для этого. Я думаю, что такой инструмент, как puppet , более подходит для автоматизации установки таких вещей, как apache и mysql, хотя я еще не включил его в свой рабочий процесс.
Кроме того, у меня обычно разные виртуальные серверы для каждого проекта. Они создаются из «базовой» установки python, где, как указал Карл, вы можете оставить некоторые глобальные библиотеки python.
Итак, с точки зрения рабочего процесса, это будет: