上篇   可以完美部署flask ,但是视乎在结合gevent+apscheduler 实现异步非阻塞后台和定时任务的时候视乎不是那么完美。请教了前辈,决定使用flask+gevent+nginx+gunicorn+supervisor部署

Nginx

Nginx 是高效的 Web 服务器和反向代理服务器,可以用作负载均衡(当有 n 个用户访问服务器时,可以实现分流,分担服务器的压力),与 Apache 相比,Nginx 支持高并发,可以支持百万级的 TCP 连接,十万级别的并发连接,部署简单,内存消耗少,成本低,但 Nginx 的模块没有 Apache 丰富。Nginx 支持 uWSGI 的 uwsgi 协议,因此我们可以将 Nginx 与 uWSGI 结合起来,Nginx 通过 uwsgi_pass 将动态内容交给 uWSGI 处理。

官方文档在

最好的 Nginx 教程在

Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。

  准备工作,首先呢,我们先去安装我们需要的包,首先呢  我这里是我新装的系统,所以没有pip,所以我先来去安装pip
sudo apt-get install python-pip

使用 下面命令去安装flask

pip install flask

安装后呢,我们可以去测试下,

import flask

没有报错证明我们的flask 是安装成功的。那么接下来我们要做的就是安装ngnix

sudo apt-get install nginx

安装好以后,我们可以先启动下, nginx start 直接命令行启动,简单粗暴

这样我们的nginx就启动成功了,接下来,我们就是利用pip 去安装uwsgi

我们安装好后,那么接下来就开始开干吧,

首先我在hellowflak下创建一个app的python的包,

#app/__init__.py
from flask import Flask
app = Flask(__name__)
from app import view

接下来我们去创建view.py

from app import app
@app.route('/')
def index():
return 'hellow'

那么我们去在app同级目录创建hello.py

from app import app
if __name__ == "__main__":
app.run()

,那么我们可以在本地利用Python去调试我们的程序,

那么我们可以在浏览器去看看,输入地址,可以得到这个,这么来看我们flask程序是没有问题的。

那么我们接下来要做的就是让nginx去承担web服务。

我这里做的是简单粗暴直接删除nginx的配置文件

$ sudo rm /etc/nginx/sites-enabled/default

接下来,我在FXTtest下创建的一个配置文件

server {
listen 80;
server_name 47.104.199.225 ;
charset utf-8;
client_max_body_size 75M;
location / {
proxy_pass http://127.0.0.1:8000;
}
}

稍作解释:server_name 可以是域名,也可以写 ip 地址

那么我们接下来去软连我们的这个配置到nginx中去。

sudo ln -s /home/FXTest/flaskapi.conf /etc/nginx/conf.d/
这样我们再去启动我们的nginx,
sudo /etc/init.d/nginx restart

平滑重启可以用用,重新加载配置文件,用新的工作进程代替旧的工作进程。
sudo nginx -s reload

我们可以正常去访问了我们的服务

完工之后,感觉还是很简单的 有问题那么就去看log,只要log配置得当,那么排除错误是很快的。

我已经成功的把我写的部署到了阿里云上面。 

增加supervisor管理,当chrash了,可以自动重启

安装后/etc/supervisor/conf.d/ 配置一个文件,如下 简单配置

command=gunicorn -b :8000 -w 2 manage:app
autostart=ture
autorestart=true
stdout_logfile=/home/FXTest/supervisor.log
user=root

配置后启动

service supervisor start

终止服务

service supervisor stop

有疑问可以加我qq:952943386或者我的qq群194704520

希望大家一起冲菜鸟飞到更高

flask +gevent+nginx+Gunicorn+supervisor部署flask应用的更多相关文章

  1. Nginx+Gunicorn+Supervisor部署Flask应用

    Flask 内置了简单的 Web 环境,让我们在开发的时候只需要专注于应用实现,而真正要在生产环境运行时这个简单的 Web 环境就不够用了,还需要一系列操作才能让 Web 应用高效的运行起来.现在记录 ...

  2. CentOS 下部署Nginx+Gunicorn+Supervisor部署Flask项目

    原本之前有一部分东西是在Windows Server,但是由于Gunicorn不支持Windows部署起来颇为麻烦.最近转战CentOS,折腾一段时间,终于简单部署成功.CentOS新手,作为一个总结 ...

  3. 2020最新nginx+gunicorn+supervisor部署基于flask开发的项目的生产环境的详细攻略

    本攻略基于ubuntu1804的版本,服务器用的华为云的服务器,python3(python2已经在2020彻底停止维护了,所以转到python3是必须的)欢迎加我的QQ6398903,或QQ群讨论相 ...

  4. Python基础 - Ubuntu+Nginx+uwsgi+supervisor部署Flask应用

    网上找了许多讲关于Flask应用部署的文章几乎都是一个helloworld的Demo,按照helloworld来部署都没问题,但实际项目部署时还是遇到了不少问题.在这里简单写下自己成功部署的过程,防止 ...

  5. flask部署:Ubuntu下使用nginx+uwsgi+supervisor部署flask应用

    之前一直用的Centos或者Red hat,自从使用Ubuntu后,发现Ubuntu使用起来更方便,自此爱上Ubuntu. 一.从github上下载flask应用 1.我已经成功将自己编写好的应用上传 ...

  6. 给我一台全新的服务器,使用nginx+gunicorn+supervisor部署django

    0.准备工作 在一台全新的服务器中新建用户以及用户的工作目录,之后的操作都以这个用户的身份进行,而不是直接用root. 举个栗子: 在服务器下新建用户rinka并赋予sudo权限 1) root登陆, ...

  7. Nginx+uwsgi+supervisor+Ubuntu+flask

    Nginx+uwsgi+supervisor+Ubuntu+flask Nginx+uwsgi+supervisor在Ubuntu上部署flask应用 网上找了许多讲关于Flask应用部署的文章几乎都 ...

  8. 在Mac上使用Nginx和FastCGI部署Flask应用

    最近在学习Flask,本文介绍一下如何部署Flask开发的应用,同时也学习一下Nginx的使用,这只是在Mac上的一个实验. 应用 这里使用的应用就是官方的文档中给出的Flaskr. 安装Nginx ...

  9. CentOS 下用 Nginx 和 uwsgi 部署 flask 项目

    前几天利用flask 写了几个调用salt-api 的接口,需要上线到正式环境,搜了一下 都是 用 nginx + uwsgi 来部署,这里记录下关键的配置项. 1.首先将代码上传到服务器上目录为: ...

随机推荐

  1. Servlet的三个域对象

    我们在开发javaweb项目的时候,经常会遇到jsp和Servet之间互相传值,既然有传值,就要有对象来传,这里先说Servlet的三大域对象,request,session,application他 ...

  2. eclipse异常解决:Errors occurred during the build.........

    在MyEclipse下编辑文件保存时,编译java工程,出现以下弹出提示.每次保存都会弹出,不堪其扰. "Errors occurred during the build.......... ...

  3. Maven-11: 从命令行调用插件

    mvn -h显示mvn命令帮助: usage: mvn [options] [<goal(s)>] [<phase(s)>] Options: -am,--also-make ...

  4. freemarker 类型转换

    操作字符串函数  1. substring(start,end)从一个字符串中截取子串  start:截取子串开始的索引,start必须大于等于0,小于等于endend: 截取子串的长度,end必须大 ...

  5. spring boot 1.x.x 到 spring boot 2.x.x 的那些变化

    spring boot1 到 spring boot2的配置变化很大,迁移项目到spring boot2过程中发现以下变化 1.java 的 redis 配置添加了属性jedis 旧版 spring: ...

  6. 鹅厂优文 | 怎样用AI运维

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由 织云平台团队 团队发布在腾讯云+社区 诞生背景 最近这些年,运维行业提出了不少概念,各种各样的"XX运维"可以说 ...

  7. JAVA读取Excel中内容(HSSF和Workbook两种方法)

    内容添加,以前是用的HSSF,前几天帮同学写一个统计表用了Workbook,现在码一下. ---新内容(Workbook)--- 同学要统计一个xls表格,让表1里面的某一列内容对表2里面的每列进行匹 ...

  8. [福大软工] W班 软件产品案例分析

    作业要求 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1300 评分细则 第一部分 调研,评测 (3 ...

  9. 201621123040《Java程序设计》第十一周学习总结

    1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结多线程相关内容. 2.书面作业 2.1源代码阅读:多线程程序BounceThread 2.1.1BallRunnable类有什么用?为什 ...

  10. DNS协议(一)

    在互联网上要想与另外一台主机通信,要知道对方的IP地址,但是IP地址是很难记忆的, 比如百度的一台服务器的IP地址为115.239.210.27,我们在浏览器中输入http://115.239.210 ...