將Flask應用程序部署在nginx,tornado的簡單方法

來自:http://www.xuebuyuan.com/618750.htmlphp

 

在網上搜索了一下部署flask應用的方法,大部分是用wsgi部署在nginx上面,部署了好久,都沒有成功,多是我領悟能力太差,不過服務器上面的環境也夠亂的有python2,python3,最後實在折騰得不行了,將uwsgi換成tornado,很是簡單就搞定了,記錄一下步驟,供之後參考:html

 

軟件怎麼安裝就沒必要說了,說說幾個關鍵的地方:python

1。Flask的入口程序爲run.py,代碼以下:nginx

 

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

from somewhere import app  #somewhere 表示的包含Flask的實例,如app = Flask(__name__)服務器

if __name__ == "__main__":app

    app.run(debug=True)tornado

 

2。在run.py的同級目錄添加tornado應用程序tornado_server.py來託管run.py,代碼以下:oop

#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仍是很是不錯的,一直知道它的性能優秀,之後有空得好好研究一下。

相關文章
相關標籤/搜索