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


來自: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還是非常不錯的,一直知道它的性能優秀,以后有空得好好研究一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM