资讯专栏INFORMATION COLUMN

flask笔记:部署flask

Kylin_Mountain / 2518人阅读

摘要:网上有很多种发布部署的方式,这里我使用的是发布。但当我部署成功后,我发现了一个问题。再说回问题当我用的命令启动服务时,发现的正则表达式的路径转发规则发生了问题。导致访问地址发生跳转不正常和错误的现象。,下面说回正题,介绍如何部署。

网上有很多种发布部署flask的方式,这里我使用的是Gunicorn、nginx发布flask。

先说明一下为什么不使用supervisor,之前我也是按照一些文章中的推荐采取nginx、gunicorn和supervisor的方式部署。但当我部署成功后,我发现了一个问题。

写到这里先介绍一下supervisor是什么:网上正规的解释为supervisor是linux进程管理的工具。而我将其理解为其对gunicorn命令封装后的工具(当然不只是针对gunicorn,像nginx也可以用其管理,这里是为了方便理解)。

如果用supervisor启动flask,那么可以看成:supervisor调用gunicorn把flask的服务启动。

再说回问题:当我用supervisor的命令启动服务时,发现nginx的正则表达式的url路径转发规则发生了问题。导致访问url地址发生跳转不正常和404错误的现象。当然错误的原因不排除我安装配置的原因,这里不做详细的解释,只是我没有解决其问题。但就像之前介绍的supervisor只是对进程的管理工具(也可以理解为对gunicorn命令的封装),并不对服务本身有什么影响,只是日常启动、重启、停止服务时命令行多了一些而已罢了。

ok,下面说回正题,介绍如何部署flask。

1.安装python、virtualenv、flask、nginx

这些前置工作这里就不介绍了,网络上有很多文档和详细的步骤可以参考。

2.创建项目

创建一个文件夹test,在该文件夹创建test.py文件

mkdir test
cd test
touch test.py

编写一个简单的例子

#encoding:utf-8

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "hello woody"

@app.route("/test/")
def test():
    return "test"

@app.errorhandler(404) 
def page_not_found(error): 
    return "sorry that is my 404"

#if __name__ == "__main__":
#    app.run(host="0.0.0.0",port=5000,debug=True)
3.安装gunicorn

最新版的virtualenv自带了gunicorn,如果没有,请在虚拟环境手动安装

 pip install gunicorn
4.启动flask

进入刚创建的项目文件夹下,用命令行启动

cd test
gunicorn -w2 -b0.0.0.0:9016 test:app
-w指的是worker(启动的进程),后面跟的数字是worker的数量

-b指的是bind(绑定ip),后面是ip:port地址和端口号,0.0.0.0代表所有地址

test指的是入口文件的文件名

app指的是入口文件中Flask()对象的变量名,这里上面的程序中是app

注:如果想静默启动(后台启动),可以在后面加个 -D 的参数

gunicorn -w2 -b0.0.0.0:9016 test:app -D
5.nginx配置
location /api/ {
    proxy_pass http://127.0.0.1:9016/;
    #proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44566.html

相关文章

  • Python学习笔记:Web后端开发一览

    摘要:试想,在多线程服务器中,多个线程同时处理不同客户端发送的不同请求时,每个线程看到的对象必然不同。多线程服务器会创建一个线程池,再从线程池中选择一个线程用于处理接收到的请求。 框架 Django flask flask是一个轻量的web开发应用示例开发一个小应用 from flask import Flask app = Flask(__name__) @app.route(/) d...

    DrizzleX 评论0 收藏0
  • 我的第一本 gitbook: Flask Web 开发笔记

    摘要:月份发布了第版,收到不少网友的良好建议,所以又抽空进行了完善,当然也拖了不少时间。本书主要介绍的基本使用,这也是我一开始在学习过程中经常用到的。第章实战,介绍了如何开发一个简单的应用。声明本书由编写,采用协议发布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 书籍地址 head-f...

    KevinYan 评论0 收藏0
  • Web 开发学习笔记(4) --- 重定向与HSTS

    摘要:回顾通过前几篇文章的内容我们已经搭建了基于框架的一个简单的应用的代码如下此外我们还为其申请了公网和域名并且部署了的证书现在当我们在浏览器地址栏输入即可访问我们的网站不过我们的网站目前还存在几个问题无法访问每次都需要用户手动输入前缀以制定形式 回顾 通过前几篇文章的内容, 我们已经搭建了基于 Flask 框架的一个简单的 Web 应用, server.py 的代码如下 from f...

    kevin 评论0 收藏0
  • 如何在 virtualenv 环境下搭建 Python Web

    摘要:生产环境下,自带的服务器,无法满足性能要求。配置前面我们已经在系统环境下安装了安装好的二进制文件放在文件夹下,接下来使用来管理。参考文章探针安装部署部署笔记在生产环境上部署使用详解本文系工程师编译整理。 由于字数的限制,其实本篇文章的全标题为 《如何在 virtualenv 环境下 Django + Nginx + Gunicorn+ Supervisor 搭建 Python Web》...

    roland_reed 评论0 收藏0
  • 如何在 virtualenv 环境下搭建 Python Web

    摘要:生产环境下,自带的服务器,无法满足性能要求。配置前面我们已经在系统环境下安装了安装好的二进制文件放在文件夹下,接下来使用来管理。参考文章探针安装部署部署笔记在生产环境上部署使用详解本文系工程师编译整理。 由于字数的限制,其实本篇文章的全标题为 《如何在 virtualenv 环境下 Django + Nginx + Gunicorn+ Supervisor 搭建 Python Web》...

    godiscoder 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<