部署 flask 应用到 nginx 和 tornado
2013-09-30 11:20
267 查看
在网上搜索了一下部署flask应用的方法,大部分是用uwsgi部署在nginx上面,部署了很久,都没有成功,可能是我领悟能力太差,不过服务器上面的环境也够乱的有python2,python3,最后实在折腾得不行了,将uwsgi换成tornado,非常简单就搞定了,记录一下步骤,供以后参考:
软件怎么安装就不必说了,说说几个关键的地方:
1。Flask的入口程序为run.py,代码如下:
2。在run.py的同级目录添加tornado应用程序tornado_server.py来托管run.py,代码如下:
3.如果直接运行python tornado_server.py会正常运行,输出如下:
但是在生产环境中得部署到性能好的nginx上去,所以我简单测试了一下,下面把相应的nginx配置文件粘出来:
这里只是测试,别的一些优化比如静态文件暂没有让 nginx代理
配置好后只需要重载一下nginx 就可以生效:
看来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还是非常不错的,一直知道它的性能优秀,以后有空得好好研究一下。
相关文章推荐
- Nginx 关于 Rewrite 执行顺序详解
- nginx+gunicorn
- Nginx+FastCGI参数传递
- nginx ngx_conf_read_token详细分析
- MacOS 安装 nginx
- nginx 添加几十个域名后报错server_names_hash
- nginx图片缓存
- Nginx高并发负载的优化(1)
- (总结)Nginx配置文件nginx.conf中文详解
- MySQL负载均衡-2:nginx 实现mysql的负载均衡
- linux下nginx uwsgi方式部署django
- Linux下面安装nginx(REAL)
- nginx去掉单个目录和多个目录PHP执行权限方法
- nginx+pam+mysql实现基于数据库的用户认证
- nginx+pam+mysql实现基于数据库的用户认证
- Nginx主配置文件参数详解
- nginx为目录或网站加上密码认证 [转]
- 一次Nginx和php-fpm自启动设置和排错
- NGINX-RTMP复杂度分析
- VPS小内存LNMP服务器Nginx 502 Bad Gateway故障自动恢复解决办法