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 просмотр
Пригласить эксперта
Ответы на вопрос 1
@DAlex
Зачем создавать глубокие деревья каталогов, когда можно использовать систему контроля версий (к примеру Git)? По мере развития продукта каждая новая версия может развиваться в отдельной ветке. Захотели откатиться на определённую версию -просто взяли код из нужной ветки... Игра с каталогами ни к чему хорошему не приведёт, особенно, если над проектом работают несколько человек
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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