在網上搜索了一下部署flask應用的方法,大部分是用uwsgi部署在nginx上面,部署了好久,都沒有成功,多是我領悟能力太差,不過服務器上面的環境也夠亂的有python2,python3,最後實在折騰得不行了,將uwsgi換成tornado,很是簡單就搞定了,記錄一下步驟,供之後參考: php
軟件怎麼安裝就沒必要說了,說說幾個關鍵的地方: html
1。Flask的入口程序爲run.py,代碼以下: python
#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,代碼以下: nginx
#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會正常運行,輸出以下: shell
* Running on http://127.0.0.1:5000/ * Restarting with reloader
可是在生產環境中得部署到性能好的nginx上去,因此我簡單測試了一下,下面把相應的nginx配置文件粘出來: flask
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 就能夠生效: app
# nginx -s reload
看來tornado仍是很是不錯的,一直知道它的性能優秀,之後有空得好好研究一下。 tornado