1.flask
项目路径 /yisa_oe/myflask
(1)安装
$ sudo pip3 install Flask # import 测试是否安装好
(2).编辑文件 manage.py
# -*- coding:utf8 -*-
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8001, debug=True)
2.uwsgi
(1)
python3.6uwsgi安装
yum install python3-devel.x86_64
pip install uwsgi
(2)vim uwsgi_config.ini
[uwsgi]
# uwsgi 启动时所使用的地址与端口,也可以使用.sock文件的方式
socket = 127.0.0.1:5000
# 指向网站目录
chdir = /yisa_oe/myflask
# python 启动程序文件
wsgi-file = manage.py
# python 程序内用以启动的 application 变量名
callable = app
# 处理器数
processes = 1
# 线程数
threads = 4
#状态检测地址
stats = 127.0.0.1:5001
#项目flask日志文件
logto = /yisa_oe/myflask/log/manage.log
3.ngnix
server {
listen 81;
server_name 127.0.0.1;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
}
}
访问 81端口就可以访问到文件了
4.supervisor
(1)安装
yum install supervisor
(2)配置
echo_supervisord_conf > /etc/supervisor/supervisord.conf
编辑 /etc/supervisor/supervisord.conf
[inet_http_server] ; inet (TCP) server disabled by default
port=0.0.0.0:9001 ; ip_address:port specifier, *:port for all iface
;username=user ; default is no username (open server)
;password=123 ; default is no password (open server)
添加
[include]
files = /etc/supervisor/conf.d/*.conf
(3)vim /etc/supervisor/conf.d/uwsgi.conf
[program: uwsgi]
#supervisor执行命令
command = uwsgi uwsgi_config.ini
#项目目录
derectory = /yisa_oe/myflask/
#开始的时候等待多少秒
startsecs = 0
#停止时等待多少秒
stopawitsecs = 0
#自动开始
autorestart = true
#程序挂了是否重启
autorestart = true
#输出的log文件
stdout_logfile = /var/log/supervisor.log
#输出的错误文件
stderr_logfile = /var/log/supervisor.err
#把 stderr 重定向到 stdout,默认 false
redirect_stderr = true
#stdout 日志文件大小,默认 50MB
stdout_logfile_maxbytes = 50MB
[supervisor]
# log 级别
loglevel = info
(4) supervisord -c /etc/supervisor/supervisord.conf
如果是已经启动的状态
supervisorctl update
页面 81 9001都能访问,删除进程能自启 就说明名没问题
5.gunicorn (uwsgi/gunicorn 二选一)
(1)安装
pip3 install gunicorn
pip3 install wheel
pip3 install gevent
(2)测试启动
gunicorn -w 4 -b 0.0.0.0:5000 -k gevent manage:app # 这样就可以启动并访问了
(3) 配置ngnix (可选,可不配)
server {
listen 83;
server_name default_server;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:5001;
}
}
(4)vim /etc/supervisor/conf.d/gunicorn.conf
# 这里注意不要重名
[program: gunicorn]
#supervisor执行命令
command = gunicorn -w 4 -b 0.0.0.0:5000 -k gevent manage:app
#项目目录
derectory = /yisa_oe/myflask/
#开始的时候等待多少秒
startsecs = 0
#停止时等待多少秒
stopawitsecs = 0
#自动开始
autorestart = true
#程序挂了是否重启
autorestart = true
#输出的log文件
stdout_logfile = /var/log/gunicorn.log
#输出的错误文件
stderr_logfile = /var/log/gunicorn.err
#把 stderr 重定向到 stdout,默认 false
redirect_stderr = true
#stdout 日志文件大小,默认 50MB
stdout_logfile_maxbytes = 50MB
[supervisor]
# log 级别
loglevel = info
加载
supervisorctl update
结果:
页面访问5000 端口发现可以访问
ps -ef | grep gunicorn 并kill掉 发现可以自动恢复
拓展:
supervisord
-c, --configuration 指定配置文件路径 (默认为/etc/supervisord.conf)
-i, --interactive 执行命令后启动交互式shell
-s, --serverurl URL upervisord服务器监听的URL(默认为“ http:// localhost:9001 ”)
-u, --username 用于与服务器进行身份验证的用户名
-p, --password 用于与服务器进行身份验证的密码
-r, --history-file 保留readline历史记录(如果readline可用)
supervisorctl
add <name> [...] 激活进程/组的配置中的任何更新
remove <name> [...] 从活动配置中删除进程/组
update 重新加载配置,然后根据需要添加和删除(重新启动程序)
clear <name> 清除进程的日志文件。
clear <name> <name> 清除多个进程的日志文件
clear all 清除所有进程的日志文件
fg <process> 进入supervisor前台模式, 按Ctrl + C退出
PID 获得supervisord的PID。
pid <name> 按名称获取单个子进程的PID。
pid all 获取每个子进程的PID,每行一个。
reread 重新加载守护程序的配置文件,无需添加/删除(无重启)
注意:restart不会重新读取配置文件。可以用reread和update
restart <name> 重新启动进程
restart <gname>:* 重新启动组中的所有进程
restart <name> <name> 重新启动多个进程或组
restart all 重新启动所有进程
start <name> 开启一个进程
start <gname>:* 启动组中的所有进程
start <name> <name> 启动多个进程或组
start all 开始所有进程
status 获取所有进程状态信息。
status <name> 按名称获取单个进程的状态。
status <name> <name> 获取多个命名进程的状态。
stop <name> 停止一个进程
stop <gname>:* 停止组中的所有进程
stop <gname> <gname> 停止多个进程或组
stop all 停止所有进程