python flask部署_python flask应用部署

本文记录了使用uwsgi部署Flask应用时遇到的问题及解决方案,包括ini配置错误、视图函数未生效等问题。最终通过切换到gunicorn成功部署,详细介绍了gunicorn的配置和nginx的简化配置。
摘要由CSDN通过智能技术生成

失败版本:flask+uwsgi

ini配置文件

[uwsgi]

callable = app ;//程序内启用的application变量名

home = /home/jcuan/code/python/project/venv ;如果是venv环境下,一定要设置路径

pythonpath = /home/jcuan/code/python/project/venv ;可以设置pythonpath的路径,flask命令行会自动设置一些路径(比如我的自动设置了: /home/jcuan/code/python/project/venv),注意这个不会

socket = /tmp/uwsgi.sock ; 启动程序时所使用的地址和端口,可以采用端口或者unix socket

wsgi-file = /home/jcuan/code/python/project/venv/application/__init__.py ;flask程序的启动文件,这个文件里不需要有app.run(),有了反而会出错

processes = 4 ;//处理器个数

threads = 2 ;//线程个数

不知道是有什么特殊原因:1,callable不能在ini文件里配置,不管配置什么都是默认的application;2,chmod-sock在ini里配置无效

运行

uwsgi --plugin python --ini uwsig.ini --callable app --chmod-sock=666

nginx的文件配置大概如下(location是/,不会分别配置。。):

location / {

include uwsgi_params;

uwsgi_pass unix:/tmp/uwsgi.sock;

}

虽然可以运行,不过我在__init__.py里面import的视图函数统统没有起作用,虽然绑定了,但是访问对应的url是404,只有定义在__init__.py的视图函数才起作用

成功版本flask+gunicorn

gunicorn.conf的基本配置,注意字符串都要用引号包含起来

注意这个地方也有坑,不要把sock文件放在/tmp目录下,最好放/run等目录下,因为服务器的原因,/tmp目录下文件可能只对特定的服务可见。

your system probably using namespaced temporary directories, which means every service can only see its own files in /tmp

workers = 3 #进程数

timeout = 30 #超时

bind = 'unix:/tmp/flask.socks' #nginx监听位置

backlog = 1000 #监听队列长度

然后又进入了一个坑,nginx那边的超简化版配置应该像这样

server {

listen 80;

server_name 127.0.0.1;

location / {

include proxy_params; #这里边设置了一些代理需要转换的头,比如得到真实ip, proxy_set_header X-Real-IP $remote_addr;

proxy_pass http://unix:/tmp/flask.sock; #很奇葩,我一直写的是unix:/tmp/flask.sock,然后一直都不对

}

}

运行l类似下边的命令就可以了gunicorn --config application/gunicorn.conf application:app。application:我的应用所在包的名字,app,flask启动文件中Flask实例变量的名字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值