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 杀掉第一个进程 这里可以看到启动情况
在这里插入图片描述
端口占用 可看,如果有占用就用kill 进程号就可以

netstat -lntp   # 查看端口,如果没有就先安装net-tools再输入就好了
yum -y install net-tools
(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	

在这里插入图片描述

你可能感兴趣的:(云主机安装Flask,Demo,阿里云ECS服务器)