我通过调用python manage.py run_gunicorn
(在 virtualenv 中)开始 gunicon。
我的 Ubuntu 12.04 服务器重启后如何实现重启 gunicorn?
您可以使用 supervisor 在启动时启动您的应用程序并在崩溃时重新启动。
安装supervisor并创建一个配置文件 /etc/supervisor/conf.d/your_app.conf
,内容如下:
[program:your_app]
directory=/path/to/app/working/dir
command=/path/to/virtualenv_dir/bin/python /path/to/manage_py/manage.py run_gunicorn
user=your_app_user
autostart=true
autorestart=true
由于我在 Ubuntu 上并且喜欢使用已包含在发行版中的工具,因此我使用Upstart在启动机器后启动 gunicorn。
我将以下代码放入/etc/init/django_sf_flavour.conf
:
description "Run Custom Script"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /home/USER/bin/start_gunicorn.sh
启动后执行此文件(/home/USER/bin/start_gunicorn.sh
):
#!/bin/bash
set -e
cd MY_PROJ_ROOT
source venv/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
exec python MY_PROJ_PATH/manage.py run_gunicorn
这是基于@j7nn7k 的答案,但有一些变化
1 - 在 /etc/init 目录中创建一个 .conf 文件以与 upstart 一起运行
cd /etc/init
nano django_sf_flavour.conf
2 - 在 django_sf_flavour 文件中放入以下行并保存。
description "Run Custom Script"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /home/start_gunicorn.sh
3 - 使用以下行在主目录中创建 start_gunicorn.sh 文件
cd /home
nano start_gunicorn.sh
4 - 将这些代码放入其中并保存。
#!/bin/bash
set -e
cd mysite
source myenv/bin/activate
test -d $LOGDIR || mkdir -p $LOGDIR
exec gunicorn —bind 0.0.0.0:80 mysite.wsgi:application
5 - 为 start_gunicorn.sh 设置可运行权限
cd /home
chmod 775 start_gunicorn.sh
** 额外的 **
使用此命令检查语法 django_sf_flavor.conf
init-checkconf /etc/init/django_sf_flavour.conf
答案应该是这样的:
File /etc/init/django_sf_flavour.conf: syntax ok
如果需要,您可以在 upstart 日志文件中看到问题:
cat /var/log/upstart/django_sf_flavour.log
像这样测试您的 django_sf_flavour.conf 文件,无需重新启动
service django_sf_flavour start
像这样测试你的 bash 文件“start_gunicorn.sh”
cd /home
bash start_gunicorn.sh
检查 django_sf_flavour 的状态
initctl list | grep django_sf_flavour