Я размещаю несколько сайтов 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) - без ссылки, я могу разместить максимум одну гиперссылку.