- 作者:
- 分类:知识&开发->Web->后端
- 阅读:944
- 点赞:0
- 版权:CC BY-SA 4.0
- 创建:2019-10-13
- 更新:2019-10-19
Flask 部署
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/19
原文链接(持续更新):https://neucrack.com/p/19
一
pip3 install uwsgi
uwsgi --version
如果找不到执行程序,可以搜索一下安装到哪里了,然后软链接一下就好了
sudo find / -name uwsgi
sudo ln -s /home/neucrack/.local/bin/uwsgi /usr/bin/uwsgi
工程目录创建一个文件deploy.py
:
from file_server import create_app
app = create_app()
其中
app
是一个flask.Flask
对象
uwsgi -s 0.0.0.0:5000 --protocol=http -w deploy:app
然后即可访问
二
- 同样建立
deploy.py
- 建立
uwsgi.ini
[uwsgi]
module = deploy:app
master = true
processes = 10
threads = 2
chdir = /root/software/file_server
socket = /root/software/file_server/instance/file_server.sock
socket =127.0.0.1:5000
logto = /root/software/file_server/instance/file_server.log
chmod-socket = 660
vacuum = true
stats=%(chdir)/instance/uwsgi/uwsgi.status
pidfile=%(chdir)/instance/uwsgi/uwsgi.pid
- 启动
uwsgi
$ uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
当然,这条命令需要在后台执行,比如
$ (uwsgi --ini uwsgi.ini &)
如果配置文件中没有写threads
,nginx
的连接可能被拒绝导致无法访问,
比如报
111: Connection refused
这报错信息来自nginx的log
$ uwsgi --ini uwsgi.ini --enable-threads
- 停止
uwsgi
:
uwsgi --reload instance/uwsgi/uwsgi.pid
uwsgi --connect-and-read instance/uwsgi/uwsgi.status
# 这个命令返回一个json串,显示进程和worker的详细状态
uwsgi --stop instance/uwsgi/uwsgi.pid
- 编辑nginx配置文件
vim /etc/nginx/nginx.conf
server {
listen 8000;
server_name dl.sipeed.com;
client_max_body_size 20m;
# access_log /tmp/nginx.log;
# error_log /tmp/nginx2.log;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5001;
}
}
uwsgi -s /tmp/file_server.sock --manage-script-name --mount /file_server=file_server:create_app
-s
/--socket
绑定一个socket到文件,而不是到ip和端口
session 使用注意
当给session赋值为list时不要直接对其操作,比如:
session["list1"] = [1]
session["list1"].append(2)
看起来没问题,实际上对session
的修改并没有生效,需要对session["list1"]
再赋值一遍:
session["list1"] = [1]
session["list1"].append(2)
session["list1"] = session["list1"]
或者为了让代码看起来更好看使用中间变量
session["list1"] = [1]
tmp = session["list1"]
tmp .append(2)
session["list1"] = tmp
- 开机启动需要注意
注意设置的用户,比如添加到rc.local
时,如果不想是root
, 则
/bin/su neucrack -c "cd /home/neucrack/soft/mklife && (uwsgi --ini instance/uwsgi.ini > instance/mklife.log 2>&1 &)"
这里用户名为
neucrack