通过 Upstart 运行 Django 站点

Oli*_*Oli 1 django upstart

我在我的一台 Ubuntu 服务器上托管了几个 Django 站点。直到最近,我一直在使用 Cherokee HTTPd,它可以选择启动后端应用程序,如 Django 站点,但我刚刚切换到 nginx。

在 cherokee 下,我只是“运行”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
Run Code Online (Sandbox Code Playgroud)

然后我将连接到/web/mywebsite/sock. Cherokee 也以我选择的用户身份运行它,就我而言www-data

在 Cherokee 下,这种方法对我很有效,但现在我要转向 nginx,我手头上没有什么东西可以进行流程管理。

环顾四周,实际上有数百种不同的管理方式。初始化脚本、cron 检查、daemontools。但是当我在 Ubuntu 上(可能永远都是)Upstart 似乎是有道理的......但我从哪里开始呢?

有人能给我一个新贵脚本的例子,它运行上面的脚本并且如果它死了会重新生成它吗?

我有几个 django 站点/web/(它们是该目录中唯一的目录)所以如果有一种欺骗方式我可以让这个新贵脚本启动它们(使用相同的设置)并监视它们,那就是超级超级棒。

hie*_*mye 5

我使用相同的配置,/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
Run Code Online (Sandbox Code Playgroud)

控制:

start: start django or initctl start django
stop: stop django or initctl stop django
restart: restart django or initctl restart django
Run Code Online (Sandbox Code Playgroud)

我最近录制了一个关于配置 nginx 和 django(fastcgi 和 upstart)的视频 - http://linux.dyndns-work.com/video/ubuntu_server10.04_install_django_nginx_fastcgi.ogv/

但我更喜欢 nginx 和 uwsgi(也是 upstart init 脚本)——没有链接,我最多可以发布一个超链接。