Как Вы используете зернышко, virtualenv и Матрицу для обработки развертывания?

Каковы Ваши настройки, Ваши приемы, и прежде всего, Ваш рабочий процесс?

Эти инструменты являются большими, но нет все еще никаких лучших практик, присоединенных к их использованию, таким образом, я не знаю то, что является самым эффективным способом использовать их.

  • Вы используете пакеты зернышка или всегда загружаете?
  • Вы настраиваете Apache/чероки/MySQL вручную, или у Вас есть сценарий для этого?
  • Вы помещаете все в virtualenv и использование --no-site-packages?
  • Вы используете один virtualenv для нескольких проектов?
  • Что Вы используете Матрицу для (какой части Вашего развертывания Вы пишете сценарий)?
  • Вы помещаете свои сценарии Матрицы на клиент или сервер?
  • Как Вы обрабатываете миграция медиа-файла и база данных?
  • Вам когда-либо нужен инструмент сборки, такой как SCons?
  • Каковы шаги Вашего развертывания? Как часто Вы выполняете каждый из них?
  • и т.д.

66
задан 6 revs, 3 users 68% 29 November 2011 в 18:50
поделиться

2 ответа

«Лучшие практики» очень контекстуальные- зависим, поэтому я не буду утверждать, что мои методы являются лучшими, просто они работают на меня. Я работаю в основном на небольших сайтах, поэтому никаких развертываний с несколькими серверами, CDN и т. Д.Мне действительно нужно поддерживать развертывание виртуального хостинга Webfaction, поскольку некоторым клиентам нужен самый дешевый хостинг, который они могут найти. Мне часто приходится развертывать сайты несколько раз в разных средах, поэтому повторяемые развертывания по сценариям имеют решающее значение.

  • Я не использую пакеты пакетов, я устанавливаю их из файла requirements.txt. Я запускаю свой собственный сервер chishop с sdists всего, что мне нужно, поэтому в процессе сборки не бывает нескольких точек отказа. Я также использую PIP_DOWNLOAD_CACHE на своих машинах для разработки, чтобы ускорить загрузку среды проекта, так как требования большинства моих проектов частично совпадают.
  • У меня есть сценарии Fabric , которые могут автоматически устанавливать и настраивать nginx + Apache / mod_wsgi на Ubuntu VPS или настраивать эквивалент на общем хостинге Webfaction , а затем развертывать проект .
  • Я не использую --no-site-packages с virtualenv, потому что я предпочитаю, чтобы на системном уровне были установлены медленно движущиеся скомпилированные пакеты (Python Imaging Library, psycopg2); слишком медленно и хлопотно, чтобы делать это внутри каждого виртуального компьютера. У меня не было проблем с загрязненными системными пакетами сайтов, потому что я обычно не загрязняю их. И в любом случае вы можете установить другую версию чего-либо в virtualenv, и она будет иметь приоритет.
  • У каждого проекта есть свои виртуальные возможности. У меня есть несколько сценариев bash (не virtualenvwrapper , хотя многие люди их используют и любят), которые автоматизируют развертывание virtualenv для данного проекта в известном месте и установку в него требований этого проекта.
  • Весь процесс развертывания, от чистого VPS сервера Ubuntu или учетной записи общего хостинга Webfaction до работающего веб-сайта, выполняется с помощью сценария с использованием Fabric.
  • Скрипты Fabric являются частью исходного дерева проекта,и я запускаю их из местного отдела разработки.
  • Мне не нужны SCons (о которых я знаю).

Развертывание

На данный момент новое развертывание разделено на следующие шаги:

  • 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 / .

79
ответ дан 24 November 2019 в 15:06
поделиться

Я использую структуру для сборки и развертывания кода и предполагаю, что система уже настроена для этого. Я думаю, что такой инструмент, как puppet , более подходит для автоматизации установки таких вещей, как apache и mysql, хотя я еще не включил его в свой рабочий процесс.

Кроме того, у меня обычно разные виртуальные серверы для каждого проекта. Они создаются из «базовой» установки python, где, как указал Карл, вы можете оставить некоторые глобальные библиотеки python.

Итак, с точки зрения рабочего процесса, это будет:

  1. марионетка для установки необходимых служб (веб-сервер, база данных, ssh-сервер, ...)
  2. марионетка для настройки необходимых пользователей и базовых папок
  3. ткань для создайте virtualenv для структуры приложения
  4. для установки по конвейеру из структуры requirements.txt
  5. , чтобы развернуть структуру приложения
  6. для развертывания файлов конфигурации (веб-сервер, ...)
9
ответ дан 24 November 2019 в 15:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: