来自:http://www.xuebuyuan.com/618750.html

在网上搜索了一下部署flask应用的方法,大部分是用wsgi部署在nginx上面,部署了很久,都没有成功,可能是我领悟能力太差,不过服务器上面的环境也够乱的有python2,python3,最后实在折腾得不行了,将uwsgi换成tornado,非常简单就搞定了,记录一下步骤,供以后参考:

软件怎么安装就不必说了,说说几个关键的地方:

1。Flask的入口程序为run.py,代码如下:

#coding=utf-8
#!/usr/bin/python

from somewhere import app  #somewhere 表示的包含Flask的实例,如app = Flask(__name__)

if __name__ == "__main__":

app.run(debug=True)

2。在run.py的同级目录添加tornado应用程序tornado_server.py来托管run.py,代码如下:

#coding=utf-8
#!/usr/bin/python

from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from run import app

http_server = HTTPServer(WSGIContainer(app))
http_server.listen(5000)  #flask默认的端口
IOLoop.instance().start()

3.如果直接运行python tornado_server.py会正常运行,输出如下:

* Running on http://127.0.0.1:5000/
 * Restarting with reloader

但是在生产环境中得部署到性能好的nginx上去,所以我简单测试了一下,下面把相应的nginx配置文件粘出来:

server {
        listen   80;
        server_name  abc.com;
        rewrite ^(.*) http://www.abc.com$1 permanent;
}

server{
        listen 80;

#listen [::]:80 default_server;
        #access_log  /var/log/nginx/win2003_access.log  main;
        #include header_proxy.inc;

server_name www.abc.com;

#root   /var/www/abc;

location / {
            #index  index.html index.htm index.php;
            #include uwsgi_params;
            #uwsgi_pass unix:/tmp/uwsgi.sock;
            proxy_pass http://localhost:5000;    #关键一点就是这里,意思是所有对http://www.abc.com:80的访问都会重定向到本机的5000端口上
        }

}

这里只是测试,别的一些优化比如静态文件暂没有让 nginx代理

配置好后只需要重载一下nginx 就可以生效:

# nginx -s reload

看来tornado还是非常不错的,一直知道它的性能优秀,以后有空得好好研究一下。

将Flask应用程序部署在nginx,tornado的简单方法的更多相关文章

  1. 采用flask+uwsgi+nginx架构将flask应用程序部署在腾讯云

    最近一星期加班为学校做了一个教师发展中心平台,在此总结一下部署经验 环境:Centos7.0  python2.7.5 1.安装nginx 命令行输入指令:sudo yum install nginx ...

  2. 部署项目Nginx+Tornado+Supervisor

    http://www.jianshu.com/p/9bebb99368ea Tornado Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻 ...

  3. 解决IE apk变成zip:Android 手机应用程序文件下载服务器Nginx+Tomcat配置解决方法

    APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...

  4. 一次请求中,经过 nginx+uWSGI+flask应用程序搭建服务的执行过程

    Flask框架有自带的http server,但是缺点非常明显,并发能力,及时响应非常差,只适合开发时自测使用. 在我接触过的项目中,生产环境使用nginx+uWSGI+flask应用程序进行部署服务 ...

  5. nginx+uwsgi+flask+supervisor 项目部署

    环境 - Linux: Ubuntu 16.04 - uWSGI 2.0.18 - Flask 1.0.2 - supervisor 3.2.0 - nginx/1.8.1 首先区分几个概念 WSGI ...

  6. 从docker到docker-compose部署一个nginx+flask+mysql+redis应用

    目的是把一个flask项目的mysql数据库.redis数据库.flask应用.nginx服务分别装到四个容器中,然后用docker-compose命令同时启动与关闭 一.安装docker Docke ...

  7. Flask测试和部署

    一 蓝图Blueprint 为什么学习蓝图? 我们学习Flask框架,是从写单个文件,执行hello world开始的.我们在这单个文件中可以定义路由.视图函数.定义模型等等.但这显然存在一个问题:随 ...

  8. Flask—10-项目部署(02)

    项目部署 WEB工作原理 客户端(chrom) <=> WEB服务器(nginx) <=> WSGI(uWSGI) <=> Python(Flask) <=& ...

  9. tms web core程序部署

    tms web core程序部署 笔者把已经开发好的TMS WEB CORE程序部署到阿里云服务器上面,来作为例子. 1)复制TMS WEB CORE前端程序到服务器的c:\room\ 2)复制TMS ...

随机推荐

  1. html笔记4

    <html> <body> <p>这是列表标签</p> <ul> <li>xxx</li> </ul> ...

  2. 51 Nod 1028 大数乘法 V2【Java大数乱搞】

    1028 大数乘法 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A ...

  3. c++工程重复编译与重复定义

    #ifndef #define #endif防止的是"重复编译",而不是"重复定义"重复编译可能造成重复定义,但重复定义的来源不只有重复编译从代码变成可执行的程 ...

  4. 使用 SVG 和 JS 创建一个由星形变心形的动画

    序言:首先,这是一篇学习 SVG 及 JS 动画不可多得的优秀文章.我非常喜欢 Ana Tudor 写的教程.在她的教程中有大量使用 SVG 制作的图解以及实时交互 DEMO,可以说教程的所有细枝末节 ...

  5. [国嵌攻略][069][Bootm命令移植]

    Bootloader作用 1.初始化软硬件 2.启动操作系统 内核分类 1.zImage 不加信息头的内核 2.uImage 加信息头后的内核,用bootm命令来启动 bootm作用 1.检测信息头: ...

  6. PHP 正则表达式匹配函数 preg_match 与 preg_match_all

    preg_match() preg_match() 函数用于进行正则表达式匹配,成功返回 1 ,否则返回 0 . 语法: 1 int preg_match( string pattern, strin ...

  7. zoom:1是什么意思

    当一个容器内元素都浮动后,它将高度将不会随着内部元素高度的增加而增加,所以造成内容元素的显示超出了容器. overflow:auto;是让高度自适应, zoom:1;是为了兼容IE6,也可以用heig ...

  8. PHP 常用的header头部定义汇总

    http://www.jb51.net/article/68159.htm

  9. ACTION_NAME等常量 不能在模板里直接取值?

    在控制器里可以取得,显示模板之前需要向模板传递. condition 下用$Think.const.MODULE_NAME 在模板里要用{$Think.ACTION_NAME}

  10. iOS 极光推送 如何点击推送消息跳转页面

    假如你已经集成完了极光,恰好有这个问题不知如何解决,可以看看这篇文章,这篇是针对远程通知的,本地通知大同小异吧. 根据我项目的要求,极光推送跳转指定页面分为两种情况:app在后台情况和app在杀死的情 ...