文章目錄
所使用的操作系統與環境
操作系統:centos6.5
Python環境:3.7.0
本文前提
- uwsgi+nginx部署Django項目已經完成,並能在瀏覽器中訪問
本文的目的
用supervisor管理uwsgi進程,當uwsgi進程因爲某種原因掛掉的時候進行重啓
下載並安裝
從如下地址中下載得到.whl包,在本地使用pip install安裝
https://pypi.org/project/supervisor/#files
爲了方便全局使用還需要鏈接到/usr/bin下
sudo ln -s /home/zeng/anaconda3/bin/supervisor /usr/bin/supervisor
sudo ln -s /home/zeng/anaconda3/bin/supervisord /usr/bin/supervisord
sudo ln -s /home/zeng/anaconda3/bin/supervisorctl /usr/bin/supervisorctl
使用supervisor來啓動項目
配置supervisor
先創建log文件夾
mkdir log
修改之前的uwsgi文件,去掉daemonize(已經不需要這個了)
在django項目中新建一個supervisor的配置文件spider_supervisor.conf,填入如下內容(根據程序做一些修改)
# supervisor的程序名字
[program:spider]
# supervisor執行的命令
command=uwsgi --ini spider_uwsgi.ini
# 項目的目錄
directory = /home/zeng/cnr/spider
# 開始的時候等待多少秒
startsecs=0
# 停止的時候等待多少秒
stopwaitsecs=0
# 自動開始
autostart=true
# 程序掛了後自動重啓
autorestart=true
# 輸出的log文件
stdout_logfile=/home/zeng/cnr/spider/log/supervisord.log
# 輸出的錯誤文件
stderr_logfile=/home/zeng/cnr/spider/log/supervisord.err
[supervisord]
# log的級別
loglevel=info
# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登錄的地址和端口號
serverurl = http://127.0.0.1:9001
# 登錄supervisorctl的用戶名和密碼
username = zengraoli
password = 123456
[inet_http_server]
# supervisor的服務器
port = :9001
# 用戶名和密碼
username = zengraoli
password = 123456
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
啓動supervisor和關閉supervisor
如果之前啓動了uwsgi,那麼首先kill掉
使用命令啓動supervisor
supervisord -c spider_supervisor.conf
supervisord啓動的進程依然可以使用kill殺掉
其他的一些操作
使用命令進入管理控制檯
supervisorctl -c spider_supervisor.conf
在控制檯中使用命令stop、start分別啓動和停止項目spider
當然還可以通過瀏覽器進入(端口、用戶名和密碼均在配置文件中)
殺掉uwsgi進程看看效果
只要supervisord進程還存在,uwsgi就會重啓
那正確的停止流程應該是
- 1、supervisorctl中stop對應的項目,比如supervisorctl中stop spider
- 2、kill掉剩下的uwsgi進程
- 3、kill掉的supervisord進程