Flask+Supervisor安裝實現後臺進程常駐

Flask+Supervisor安裝實現後臺進程常駐

本次主要嘗試雲主機運行Flask+Supervisor後臺運行
之前flask demo的運行,只能在在任務開啓時運行。爲了能夠長期在後臺運行,
必須採用Supervisor在開關機加載並維護進程才能保證本地關機網頁依然能夠打開。

步驟如下:
  1. 打開建立的flask環境,新建requirements.txt列出全部的flask組件
    pip install -r requirements.txt 以下爲內容
Flask==0.10.1
Flask-Login==0.2.11
Flask-Mail==0.9.1
Flask-Moment==0.4.0
Flask-PageDown==0.1.5
Flask-SQLAlchemy==2.0
Flask-Script==2.0.5
Flask-WTF==0.10.2
Flask-Cache==0.13.1
Flask-Restless==0.15.0
Flask-Uploads==0.1.3
Jinja2==2.7.3
Mako==1.0.0
Markdown==2.5.1
MarkupSafe==0.23
SQLAlchemy==0.9.8
WTForms==2.0.1
Werkzeug==0.9.6
html5lib==1.0b3
itsdangerous==0.24
six==1.8.0
awesome-slugify==1.6
  1. 裝 uwsgi / gunicorn

    pip install uwsgi
    pip install gunicorn

  2. 退回到Flask項目目錄下建立uwsgi.ini(這是爲了使用uwsgi的,但是gunicorn更簡單貌似)

[uwsgi]

# uwsgi 啓動時所使用的地址與端口
socket = 0.0.0.0:5000

# 外網訪問端口,如果直接用uWSGI外網,這裏由於使用了Nginx,故註釋掉
# http= :80

# 指向網站目錄
chdir = /root/projects/flask_car/

# python 啓動程序文件
wsgi-file = server.py

# python 程序內用以啓動的 application 變量名
# app 是 manage.py 程序文件內的一個變量,這個變量的類型是 Flask的 application 類
callable = app

# 處理器數
processes = 4

# 線程數
threads = 2

#狀態檢測地址
stats = 0.0.0.0:9191

daemonize=/var/log/uwsgi.log
  1. 運行命令安裝配置

    uwsgi config.ini

  2. 安裝 Supervisor
    supervisor就是作爲一種進程守護,來監聽web服務,一旦web掛掉,supervisor會讓其自啓。確保web服務器不會處於掛掉狀態
    (1) 退出環境deactivate
    (2)安裝擴展倉庫sudo yum install -y epel-release
    (3)安裝yum install -y supervisor
    (4)檢查安裝的位置rpm -ql supervisor
    (5)找到/etc/superisord.conf
    在這裏插入圖片描述
    (6)修改這個文件vim superisord.conf
    mkdir /etc/supervisor
    (7)通過運行echo_supervisord_conf程序生成supervisor的初始化配置文件
    echo_supervisord_conf > /etc/supervisor/supervisord.conf
    (8)打開/etc/supervisor/supervisord.conf最後一行可以看到
    就是這個目錄下的ini都會加載,那就在/etc/supervisor.d下面增加一個

;[include]
;files = relative/directory/*.ini 
# 增加如下
[include]
files = conf.d/*.conf

(9)增加一個配置文件flask_car.conf到conf.d目錄下

[program:flask_car]
# 啓動命令入口
# command=flask/bin/uwsgi    ./uwsgi.ini
command=flask/bin/gunicorn -w 4 -b 0.0.0.0:5000 server:app
# command=flask/bin/python3  ./server.py

# 命令程序所在目錄
directory=/root/projects/flask_car/
#運行命令的用戶名
user=root

autostart=true
autorestart=true
#日誌地址
stdout_logfile=/root/projects/flask_car/logs/uwsgi_supervisor.log
priority=1
killasgroup=true
stopasgroup=true

(10)啓動supervisor
supervisord -c /etc/supervisor/supervisord.conf
(11)查看啓動情況
ps -ef | grep supervisord
在這裏插入圖片描述
(12)如果已經啓動相關進程則殺掉再啓動
kill -s SIGTERM 31333 殺掉第一個進程 這裏可以看到啓動情況
在這裏插入圖片描述
(13)配置Supervisor開機啓動

       新建(如果存在就改寫)/usr/lib/systemd/system/supervisord.service
				   
			```
			# dservice for systemd (CentOS 7.0+)
			# by ET-CS (https://github.com/ET-CS)
			[Unit]
			Description=Supervisor daemon
			
			[Service]
			Type=forking
			ExecStart=/usr/bin/supervisord  -c /etc/supervisor/supervisord.conf
			ExecStop=/usr/bin/supervisorctl shutdown
			ExecReload=/usr/bin/supervisorctl reload
			KillMode=process
			Restart=on-failure
			RestartSec=42s
			
			[Install]
			WantedBy=multi-user.target
			```

(14) 開啓並驗證是否正確開啓

			-執行命令
			systemctl enable supervisord
			-或重載
			systemctl daemon-reload
			-驗證命令
			systemctl is-enabled supervisord	

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章