Задать вопрос
VlastV
@VlastV
Ведущий разработчик – практик

Какова оптимальная структура и алгоритм развертывания Python приложения?

Задачи, которые я ставлю для определения структуры директорий, и алгоритма развертывания новой версии приложения на примере приложения на базе django:
  • быстрый откат на предыдущую версию;
  • все, что относиться к проекту должно быть в одном месте (конфиги, временные файла, логи);
  • поддержка общих папок для любой версии приложения (media, static);
  • каждая версия должна иметь свое виртуальное окружение, например, использовали django 1.3, в новой версии уже 1.7, часть функция могла быть удалена, так же новый код использует возможности новой версии, соответственное нельзя ни обновить окружение с текущим кодом, ни обновить код в старое окружение.


example.com (~)
├── /conf
│   ├── nginx.conf
│   ├── uwsgi.conf
├── /logs
│   ├── exmaple.com_access.log
│   ├── example.com_error.log
│   ├── uwsgi.log
├── /tmp
│   ├── reload-uwsgi (touch file)
│   ├── uwsgi.pid
├── /htdocs (www)
│   ├── /media --> ~/shared/media
│   ├── /static --> ~/shared/static
├── /releases
│   ├── /20140312195611
│   │   ├── /venv
│   │   │   ├── /bin
│   │   │   │   ├── python
│   │   │   │   ├── pip
│   │   ├── /<repository_root> - VCS (git,...)
│   │   │   ├── /docs
│   │   │   ├── /<project_name> - Django project
│   │   │   │   ├── /<project_name>
│   │   │   │   │   ├── settings.py
│   │   │   │   │   ├── urls.py
│   │   │   │   ├── manage.py
├── /current --> ~/releases/20140312195611
├── /shared
│   ├── /media
│   ├── /static


Насколько данная структура здравая? Есть ли то, что я не учел, какие-то "подводные камни"?
Какая структура на продуктивном сервере у вас?

P.S. данная структура очень похожа на результат работы capistrano.

24.04.2016 13:12 Добавил папку для логов.
  • Вопрос задан
  • 3131 просмотр
Подписаться 6 Оценить 9 комментариев
Пригласить эксперта
Ответы на вопрос 1
@DAlex
Зачем создавать глубокие деревья каталогов, когда можно использовать систему контроля версий (к примеру Git)? По мере развития продукта каждая новая версия может развиваться в отдельной ветке. Захотели откатиться на определённую версию -просто взяли код из нужной ветки... Игра с каталогами ни к чему хорошему не приведёт, особенно, если над проектом работают несколько человек
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
ITK academy Саратов
от 75 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽