Чем вы разворачиваете и деплоите django-проекты на локальной машине и на сервер?
Добрый день!
Добавил уточнение ниже.
Последнее время все чаще появляется необходимость разворачивания django-проектов на серверах и от этого становится тоскливо.
Каждый раз приходится ставить ubuntu, базу данных, пакеты, virtualenv, создавать директории, синхронизировать туда файлы. Перед этим надо на локальном компе сделать ряд манипуляций, начиная от создания virtualenv на локальной машине и заканчивая той же самой установкой нужных пакетов из pip.
Хочется чего-то универсального, чтобы из шаблона можно было быстро развернуть и на локальной машине, и потом залить на удаленную, предварительно ее настроив.
Чем вы пользуетесь для этого?
Уточнение:
На дев машине разработчика, то есть своей, я делаю
1. Устанавливаю базу данных
2. Создаю базу данных
3. Создаю virtualenv
4. Ставлю нужные пакеты
5. Создаю django проект и app внутри него
6. Перемещаю settings.py в пакет внутри проекта settings
7. Правлю settings, прописываю параметры базы данных
8. Правлю INSTALLED_APPS, MIDDLEWARE_CLASSES, TEMPLATE_CONTEXT_PROCESSORS
9. Правлю urls.py, добавляя нужные урлы из установленных приложений.
Давайте пока решим чем сделать такой шаблон, чтобы я просто указывал название нового проекта, а оно все делало?
Vagrant и Ansible. Один раз пишете плейбуки, затем новая машина для разработчика разворачивается командой vagrant up, новый сервер - ansible-playbook production.yml
Вы можете посмотреть, на Vagrantfile с сайта mozilla.org, чтоб прикинуть, как другие джангисты делают похожую работу https://github.com/mozilla/bedrock/blob/master/Vag... У них используется puppet вместо ansible, но сути это не меняет.
Я сейчас использую собственным скриптом, который из свежеустановленного debian делает готовую к работу с django машину: ставит все пакеты, mysql, создает пользователя, nginx и т.д. Создавал скрипт просто - настраивал новый сервер и все команды записывал в файлик :)
Остается только сделать git clone, установить пакеты через pip и создать БД.
Все это значит около 30 минут на сервер, что довольно много, но мне приходится это делать не чаще раза в месяц, поэтому устраивает.
Но этот вариант явно не идеален и в дальнейшем планирую перейти на docker.
Может я не до конца разобрался. Но обновлять конкретную аппу мне проще фабриком. Обновить это значит вытащить код из гита, собрать пакет, установить пакет в virtualenv обновить или доставить зависимости из requirements.txt выполнить миграции базы, разложить статику.
Попробуйте makesite (https://github.com/klen/makesite). Пока использовал только для деплоя, но функционал позволяет и разворачивать новое окружение для разработки.