flask部署(flask部署到windows云服务器)
本篇文章给大家谈谈flask部署,以及flask部署到windows云服务器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、关于ubuntu下 nginx+uwsgi部署flask的坑,有大佬知道为什么吗?
- 2、阿里云服务器部署flask项目
- 3、如何部署简单python + flask应用
- 4、部署flask应用时,为什么会需要gunicorn/uWSGI
- 5、通过Nginx部署flask项目和静态站点
关于ubuntu下 nginx+uwsgi部署flask的坑,有大佬知道为什么吗?
当你在Ubuntu下使用nginx和uwsgi部署flask时,uwsgi服务器的默认配置可能会导致问题。uwsgi默认会创建一个主进程和一个或多个工作进程,而当nginx代理请求时,它可能会将请销禅轿求发送到已经关闭的工作进程,导致超时错误。使用killall -s INT uwsgi命令杀袭茄掉uwsgi进程可以解决这个问题,因为这个命令会向uwsgi主进程发送SIGINT信号,通知它关闭所有工作进程。然后,当你再次启动uwsgi时,它会重新创建一组新的工作进程,这些工作进程应该都能够正常工作。
为了避免这种情况,你可以修改uwsgi的配置,使它只创建一个工作进程。这样,当nginx代理请求时,它就只会将请求发送到一个工作进程,而不亏肆会出现超时错误。你可以在uwsgi配置文件中添加processes = 1来实现这一目的。例如:
==============
[uwsgi]
socket = /tmp/uwsgi.sock
chdir = /path/to/your/app
wsgi-file = app.py
callable = app
processes = 1
==============
希望这些信息能够帮助你解决问题。
[img]阿里云服务器部署flask项目
当我们执行下面的hello.py时,使用的flask自带的服务器,完成了web服务的启动。在生产环境中,flask自带的服务茄尺器,无法满足性能要求,我们这里采用Gunicorn做wsgi容器,来部署flask程序。Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器。从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器与各种Web框架兼容,实现非常简单,轻量级的资源消耗。Gunicorn直接用命令启动,不需要编写配置文件,相对uWSGI要容易很多。
区分几个概念 :
WSGI:全称是Web Server Gateway Interface(web服务器网关接口),它是一种规范,它是web服务器和web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。
uwsgi:是一种好纳辩传输协议,用于定义传输信息的类型。
uWSGI:是实现了uwsgi协议WSGI的web服务器。
我们的部署方式: nginx + gunicorn + flask
web开发中,部署方式大致类似。简单来说,前端代理使用Nginx主要是为了实现分流、转发、负载均衡,以及分担服务器的压力。Nginx部署简单,内存消耗少,成本低。Nginx既可以做正向代理,也可以做反向代理。
正向代理 :请求经过代理服务器从局域网发出,然后到达互联网上的服务器。
特点 :服务端并不知道真正的客户端是谁。
反向代理 :请求从互联网发出,先进入代理服务器,再转发给局域网内的服务器。
特点 :客户端并不知道真正的服务端是谁。
区别 :正向代理的对象是客户端。反向代理的对象是服务端。
查看命令行选项 : 安装gunicorn成功后,通过命令行的方式可以查看gunicorn的使用信息。
直接运行 :
指定进程和端口号 : -w: 表示进程(worker)。 -b:表示绑定ip地址和端口号(bind)。--access-logfile:表示指定log文件的路径
作为守护进程后台运行 :
阿里云服务器默认安装到 /user/sbin/ 目录,进入目录,启动 ngnix:
Ubuntu 上配置 Nginx 也是很简单,不要去改动默认的 nginx.conf 只友缺需要将/etc/nginx/sites-available/default文件替换掉就可以了。
新建一个 default 文件,添加以下内容:
修改完成后重启nginx即可。
Ubuntu 上配置 Nginx 另一种方法,cd 到 /etc/nginx/conf.d 文件夹,新建 xxx.conf 文件(xxx 可以是项目名,只要是 .conf 文件即可),写入以下内容:
需要监听 https 请求时,写入以下内容:
如何部署简单python + flask应用
我们先写一个最基本的flask应用:
demo.py
from flask import Flask
app = Flask(**name**)
@app.route('\')
def index():
return 'Hello World.'
if __name__ == __main__:
app.run()
运行这个py文件,打开浏览器访问127.0.0.1:5000就能看到显示Hello World的页面 .
如果让这个flask引用监听来自公网雀孝ip的请求,理论上你跑此程序的机器就相当于一个服务器了,然而这个服务器并不完美,所以我们需要nginx和gunicorn来增加它的功能,让它真刀真枪上生产环境的时候能按要求运行。
flask自带的WSGI框架性能很差劲,只能适用于开发环境调试使用。我们用专业一点的gunicorn(还有很多其他优秀的框架)替代flask自带的WSGI框架。
配置完后,通过命令’/usr/local/bin/gunicorn -b127.0.0.1:5000‘启动应用。打开浏览器访问127.0.0.1:5000,同样能够得到返回页面
然而gunicorn也仅仅是一个python的WSGI框架而已,要让它真正处理来自互联网的各类访问功能还是有点欠缺,这时候就需要用到大名鼎鼎的nginx 服务器来替gunicorn遮风挡雨了。
Ubuntu下安装nginx可以用命令
sudo apt-get install nginx
安装后需要进行下配置:
cd /etc/nginx/sites-available
sudo vi test (test为配置名称,可以根据自己项目进行命名)
test文件的配置为:
server {
listen 80; # 监听80端口
location / {
proxy_pass ; # 代理本机127.0.0.1:5000的服务
}
location /static {
alias /home/ubuntu/myproject/myblog/app/static; # 负载均衡
}
}
cd ..
cd sites-enable
sudo ln -s ../sites-available/lwhile . (创建软链接,别漏掉最后顷告稿的.)
sudo service nginx reload
sudo service nginx restart
这样nginx的基本配置文件就写好了 接下来我们配置进程管理工具supervisor supervisor可以在后面启动你的python进程,这样很方便友者
1.cd /etc/supervisor/conf.d
2.sudo vi test.conf (test为文件名)
[program:test]
command = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py
3.sudo supervisorctl
4.reload
5.start test
如果一切正常,做完这所有步骤之后,现在公网的ip访问你的主机,就可以打开你的flask应用了
部署flask应用时,为什么会需要gunicorn/uWSGI
Flask ,Django 自带的web server的目的如段就是用于开发,而不是生产环境。他们俩本身是web framework而不是web
server. 他们自带的server应该都只能开如橡告单进程。而像gunicorn是
prefork模式,从nginx每发过来一个请渣明求,它就fork一个进程去处理这个请求,并buffer相关的数据。wsgi服务器都是专门为生产环境
开发的,能配置更多从而处理更复杂的请求状况,从性能和稳定性来说,都更好。
通过Nginx部署flask项目和静态站点
安装nginx
安装supervisor( 官方文档 )
安装uwsgi( 官方中文文档 )
启动服务
nginx 日志(默认)
supervisor 日志(默认)
supervisor 查看启动的进程
supervisor相关命令
一般配置文件在 /etc/nginx 目录下
全局配置文件为 nginx.conf ,一般需要改的是下面两项,其他的保持默认就好了
我们要添加配置只需修改 sites-enabled/default
或在 conf.d/ 下面添加配置文件即可,因为在 nginx.conf 中会导基祥入这两个地方的配置文件
静态web服务器只需要有静态文件(html+css+js)和配置Nginx即可
假设我的静态文件在 /home/moco/www/html 目录下
接下来我们来配置nginx
这里为了简单,直接修改 sites-enabled/default
如果要同时配置多个呢?
说下root 和 alias的区别:
alias指定的目录就是要访问的目录,root是要森咐访问目录的上此锋纯级目录,使用root时,
静态文件的实际路径等于root+location的路径,如上面的第二个location,
站点文件必须在 /home/moco/other/tool/ 下, 而使用alias,则静态文件的路径
就是alias路径,即第三个location站点文件就在 home/moco/www/tool/ 下。
项目路径: /home/moco/www/myflask/
/home/moco/www/myflask/manage.py
虚拟环境: /home/moco/.local/share/virtualenvs/myflask-XuRgNXhR
在虚拟环境中安装 flask 和 uwsgi (pip install uwsgi)
在项目路径下创建uwsgi的配置文件(也可以统一在一个地方创建,如 /etc/uwsgi/ )
uwsgi_config.ini
启动虚拟环境中的uwsgi
配置Nginx 配置文件中的 sites-enabled/default
启动nginx
/home/moco/www/flask_hello/uwsgi_config.ini
/home/moco/www/flask_world/uwsgi_config.ini
因为要启动多个uwsgi的配置文件,这里就用supervisor工具统一启动管理
在 /etc/supervisor/conf.d/ 下分别添加
flask_hello.conf
flask_world.conf
启动supervisor
Nginx配置
下面是flask_hello的访问示例:
关于flask部署和flask部署到windows云服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。