flask部署(flask部署到windows云服务器)

本篇文章给大家谈谈flask部署,以及flask部署到windows云服务器对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

关于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云服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

标签列表