在之前的文章中,我们讲过使用nginx和Gunicorn来部署网站,如果已经成功完成了前两步,那么你的网站已经可以通过域名或者IP进行访问了。
但是,你会注意到,在Gunicorn的启动后,它会一直在服务器上挂着,如果你关闭页面,或者服务器重启崩溃等,就会导致Gunicorn不再运行,可以尝试在后台启动Gunicorn,但是也有可能在服务器崩溃后,无法自行启动,下面,我们使用一个软件,supervisor来为我们执行启动的和维持的功能。
- 安装
在虚拟环境下,执行:
pip install supervisor
- 创建surpervisor的管理目录
创建一个~/etc的目录:(注意,这个目录名字很像ubuntu系统下的/etc,但是不是,请注意这个 ~/etc的目录是在/home/user下的一个路径,不要搞错)
mkdir ~/etc
继续创建
mkdir -p ~/etc/supervisor/conf.d
mkdir -p ~/etc/supervisor/var/log
然后,进入~/etc目录:
cd ~/etc
生成 Supervisor 的配置文件:
echo_supervisord_conf > supervisord.conf
修改 supervisord.conf,让 Supervisor 进程产生的一些文件生成到上面我们创建的目录下,而不是其默认指定的地方:
vim supervisord.conf
首先找到 [unix_http_server] 版块,将 file 设置改为如下的值:
file=/home/user/etc/supervisor/var/supervisor.sock
修改 [supervisord] 板块下的 logfile 和 pidfile 文件的路径,还有 user 改为系统用户:
logfile=/home/user/etc/supervisor/var/log/supervisord.log
pidfile=/home/user/etc/supervisor/var/supervisord.pid
user=user#user前面如果有;,去掉;
还有 [supervisorctl] 板块下:
serverurl=unix:///home/user/etc/supervisor/var/supervisor.sock
[include] 版块:
files = /home/user/etc/supervisor/conf.d/*.ini#去掉include和files前面的;号
ok后,:wq保存退出。
接下来,进入conf.d:
cd supervisor/conf.d
vim blog.ini
创建 blog.ini文件,并写入:
[program:blog]#程序名称
command=gunicorn --bind unix:/tmp/IP或者域名.socket 项目.wsgi:application #此为gunicorn启动命令
directory=/home/user/+项目路径
autostart=true
autorestart=unexpected
user=user
stdout_logfile=/home/user/etc/supervisor/var/log/blog-stdout.log
stderr_logfile=/home/user/etc/supervisor/var/log/blog-stderr.log
#log 为日志,后面supervisor启动出错的话,可以cat+日志查看报错原因
注意,以上注释,不需要填入文件中,可能会引起错误,完成后:wq保存退出
启动surpervisor:
supervisord -c ~/etc/supervisord.conf #-c 指定 Supervisr 启动时的配置文件
supervisorctl -c ~/etc/supervisord.conf #进入 supervisorctl 进程管理控制台:
进入后,输入update,进行更新,后输入quit,退出
这样,就可以在浏览器中输入你的域名或者ip了,首页就出现了