Что мне нужно знать / изучать для автоматического развертывания Python? - PullRequest
2 голосов
/ 08 октября 2009

Я начинаю новый проект веб-приложения на Python, чтобы войти в Agile-образ мышления, и я хотел бы сделать все "правильно" в отношении развертывания. Тем не менее, я нахожу, что весь материал virtualenv / fabric / zc.buildout / etc немного сбивает с толку - я привык просто FTP-файлы PHP на сервер и указывал на него веб-сервер.

После развертывания настройка сервера будет выглядеть примерно так:
Nginx --proxy-to--> WSGI Webserver (Spawning) --> WSGI Middleware --> WSGI App (probably MNML or similar)
с веб-сервером Python, управляемым супервизором.

Какой тип развертывания / пакетов / приложений мне следует изучить? И есть ли какая-то особая структура каталогов, к которой я должен придерживаться моего приложения, чтобы упростить развертывание?

Ответы [ 3 ]

4 голосов
/ 08 октября 2009

История развертывания зависит от вашего приложения. Вы используете Django? Тогда Apache + mod_wsgi документы по развертыванию станут хорошей отправной точкой. Затем вы можете поискать информацию в Google, например, 2-часть серия , используя pip, virtualenv, git и fabric.

Действительно, fabric, virtualenv и все эти другие инструменты предназначены для упрощения поддержки и автоматизации развертывания. Первоначально, шаги из документации, вероятно, достаточно. После того, как вы почувствуете, как все работает, вы можете вернуться к нему, чтобы улучшить свой процесс.

2 голосов
/ 08 октября 2009

Вы уже упоминали buildout, и это все, что вам нужно. Google, например, buildouts для разных частей. Требуется некоторое время, чтобы настроить его в первый раз, но затем вы можете повторно использовать настройку для разных проектов.

Пусть supervisord запускает все, а не только сервер python. Затем запустите supervisord при перезагрузке либо в режиме fron cron, либо в init.d.

2 голосов
/ 08 октября 2009

Я слышал хорошие вещи о Ткань :

Fabric - это библиотека Python и инструмент командной строки, предназначенный для оптимизировать развертывание приложений или выполнение задач системного администрирования через протокол SSH. Это обеспечивает инструменты для запуска произвольной оболочки команды (либо как обычный логин пользователь или через sudo), загрузку и загрузка файлов и пр.

...