Назад | Перейти на главную страницу

Запуск сайтов Django через Upstart

Я размещаю несколько сайтов Django на одном из моих серверов Ubuntu. До недавнего времени я использовал Cherokee HTTPd, у которого есть возможность запускать серверные приложения, такие как сайты Django, но я только что перешел на nginx.

Под чероки я просто "запускаю" сайты Django (сайты хранятся в /web/):

cd /web/mywebsite/; python manage.py runfcgi workdir=/web/mywebsite method=threaded socket=/web/mywebsite/sock pidfile=/web/mywebsite/pid maxspare=3 maxrequests=500

А потом я подключился к розетке в /web/mywebsite/sock. Cherokee также запускает это как пользователь по моему выбору, в моем случае www-data.

Этот подход хорошо сработал для меня в Cherokee, но теперь я перехожу на nginx, у меня нет чего-то, что держало бы меня за руку для управления процессами.

Оглядываясь вокруг, можно увидеть буквально сотни различных способов справиться с этим. Скрипты инициализации, проверки cron, daemontools. Но поскольку я использую Ubuntu (и, вероятно, всегда будет), Upstart имеет смысл ... Но с чего мне начать?

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

У меня есть несколько сайтов django, сидящих в /web/ (и это единственные каталоги в этом каталоге), поэтому, если есть хитрый способ получить этот один сценарий выскочки, чтобы запустить их все (с одинаковыми настройками) и контролировать их, это было бы супер-экстра-круто.

Я использую ту же конфигурацию, /etc/init/django.conf:

description "Django FastCGI /web site"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
exec python /web/manage.py runfcgi socket=//web/mywebsite/sock pidfile=/var/run/django.pid

контроль:

start: start django or initctl start django
stop: stop django or initctl stop django
restart: restart django or initctl restart django

Недавно я записал видео о настройке nginx и django (fastcgi и upstart) - http://linux.dyndns-work.com/video/ubuntu_server10.04_install_django_nginx_fastcgi.ogv/

Но я предпочитаю nginx и uwsgi (также скрипт инициализации upstart) - без ссылки, я могу разместить максимум одну гиперссылку.