2

我通过调用python manage.py run_gunicorn(在 virtualenv 中)开始 gunicon。

我的 Ubuntu 12.04 服务器重启后如何实现重启 gunicorn?

4

3 回答 3

3

您可以使用 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
于 2013-01-24T17:49:27.547 回答
3

由于我在 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
于 2013-01-26T14:19:29.447 回答
0

这是基于@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
于 2017-04-13T19:35:00.907 回答