來自:http://www.xuebuyuan.com/618750.html
在網上搜索了一下部署flask應用的方法,大部分是用wsgi部署在nginx上面,部署了很久,都沒有成功,可能是我領悟能力太差,不過服務器上面的環境也夠亂的有python2,python3,最后實在折騰得不行了,將uwsgi換成tornado,非常簡單就搞定了,記錄一下步驟,供以后參考:
軟件怎么安裝就不必說了,說說幾個關鍵的地方:
#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還是非常不錯的,一直知道它的性能優秀,以后有空得好好研究一下。