安装pyenv虚拟环境:
https://www.jianshu.com/p/1defa6a3015b
安装uwsgi
进入虚拟环境安装
pip install uwsgi
查看版本:
uwsgi --version
查看python版本:
uwsgi --python-version
在项目目录创建uwsgi.ini文件
[uwsgi]
#uwsgi的监听端口,访问地址和端口号
#http = 127.0.0.1:5000
socket = 127.0.0.1:5000
#虚拟环境路径
virtualenv = /home/deepin/.pyenv/versions/3.6.9/envs/flask-3.6.9
#virtualenv = /home/deepin/.pyenv/versions/flask_3.6.9
#项目flask地址
chdir = /home/deepin/Desktop/flask3
#启动文件
wsgi-file = manage.py
#开启的进程数量
processes = 4
#运行线程
threads = 2
#设置用于uwsgi包解析的内部缓存区大小为64k。默认是4k
buffer-size = 32768
#启动主进程,来管理其他进程,其它的uwsgi进程都是这个master进程的子进程,如果kill这个master进程,相当于重启所有的uwsgi进程。
master = true
#程序变量名
callable = app
uwsgi常用参数详细https://blog.csdn.net/Miss_Audrey/article/details/81874038
指定日志目录:
如果安装supervisor就不用创建了,不用supervisor就创建一个日志吧
daemonize=/var/log/uwsgi/my_flask_app.log
启动uwsgi:
uwsgi uwsgi.ini
查看进程:
pa aux | grep uwsgi
或ps -a
退出uwsgi
ctrl+c
或sudo killall 进程号
安装nginx:
安装nginx仿照网址:https://www.jianshu.com/p/d2da31b95a55
安装nginx
sudo apt install nginx
nginx配置文件:
编辑sudo vim /etc/nginx/sites-enabled/default
server {
# 服务器监听端口
listen 80;
# 这里写域名或者IP
server_name 192.168.0.111;
# 编码
charset utf-8;
# 最大上传文件
client_max_body_size 75M;
location / {
# 导入uwsgi配置
include uwsgi_params;
# 转发端口,需要和uwsgi配置当中的端口一致
uwsgi_pass 127.0.0.1:5000;
# 虚拟环境路径
uwsgi_param UWSGI_PYTHON /home/deepin/.pyenv/versions/3.6.9/envs/flask_3.6.9;
# 项目根目录
uwsgi_param UWSGI_CHDIR /media/deepin/_dde_data/PythonProject/flask3;
# 项目的主程序(启动文件):重要的参数app
uwsgi_param UWSGI_SCRIPT manage:app;
}
}
nginx默认是开机自启的
日志:
服务器接收的请求日志:
/var/log/nginx/access.log
错误日志:
/var/log/nginx/error.log
指定日志文件目录在/etc/nginx/nginx.conf
中设置
命令:
启动:
sudo nginx
sudo service nginx start
停止:
sudo nginx -s stop
sudo service nginx stop
重新启动:
sudo service nginx restart
平滑启动:(不停止nginx的情况下,重启nginx,重新加载配置文件)
sudo nginx -s reload
测试nginx:
sudo service nginx configtest
查看nginx是否应用配置文件(查错):
nginx -t
强制停止:
sudo pkill -9 nginx
查看版本:
nginx -v
安装supervisor
让supervisor管理uwsgi,可以在uwsgi发生意外的情况下,会自动的重启。
supervisor不是在Flask所在的Python的虚拟环境中安装的
配置Superviso(不支持Python3,安装在虚拟环境以外)
安装supervisor:
pip install supervisor
生成配置文件:
echo_supervisord_conf > /supervisord.conf
注:以分号(;)开头,表示该行已被注释
配置文件:
# supervisor的程序名字
[program:flask3]
# supervisor执行的命令,uwsgi在python目录同级
command=/home/deepin/.pyenv/versions/3.6.9/envs/flask_3.6.9/bin/uwsgi --ini /media/deepin/_dde_data/PythonProject/flask3/uwsgi.ini
# 项目的目录
directory = programdir
# 开始的时候等待多少秒
startsecs=0
# 停止的时候等待多少秒
stopwaitsecs=0
# 自动开始
autostart=true
# 程序挂了后自动重启
autorestart=true
# 输出的log文件
stdout_logfile=programdir/log/supervisord.log
# 输出的错误文件
stderr_logfile=programdir/log/supervisord.err
[supervisord]
# log的级别
loglevel=info
# 使用supervisorctl的配置
[supervisorctl]
# 使用supervisorctl登录的地址和端口号
serverurl = http://127.0.0.1:9001
# 登录supervisorctl的用户名和密码
username = admin
password = admin
[inet_http_server]
# supervisor的服务器
port = :9001
# 用户名和密码
username = admin
password = admin
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
启动:
sudo supervisord -c /supervisord.conf
操作命令:
sudo supervisorctl -c /etc/supervisord.conf
上面这个命令会进入 supervisorctl 的 shell 界面,然后可以执行不同的命令了:
status # 查看程序状态
stop usercenter # 关闭 usercenter 程序
start usercenter # 启动 usercenter 程序
restart usercenter # 重启 usercenter 程序
reread # 读取有更新(增加)的配置文件,不会启动新添加的程序
update # 重启配置文件修改过的程序
上面这些命令都有相应的输出,除了进入 supervisorctl 的 shell 界面,也可以直接在 bash 终端运行:
supervisorctl status #查看程序状态
supervisorctl stop usercenter #停止程序
supervisorctl start usercenter #开启程序
supervisorctl restart usercenter #重启程序
supervisorctl reread #重新启动配置中的所有程序
supervisorctl update #配置文件修改后可以使用该命令加载新的配置
启动多个Flask进程
https://www.cnblogs.com/oulala/p/9641715.html
Django+uwsgi+nginx+supervisor部署
https://www.jianshu.com/p/23762bd086e1
uwsgi报错
https://www.cnblogs.com/BugQiang/p/4764674.html