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