這是一篇教使用python和flask框架來(lái)部署最基本的后端服務(wù)的文章显设,適用于想用python開發(fā)后臺(tái)程序的同學(xué)私蕾。閱讀這篇文章需要python和flask的基本知識(shí),以及構(gòu)建后臺(tái)程序所需要的網(wǎng)絡(luò)常識(shí)。
文章中出現(xiàn)的概念可以看另一篇入門文章。
所需工具:
python3.4
flask
nginx
gunicorn
supervisor
系統(tǒng)環(huán)境:
Ubuntu 14.04LTS
我們先寫一個(gè)最基本的flask應(yīng)用:
demo.py
from flask import Flask app = Flask(**name**) @app.route('\') def index(): return 'Hello World.'
if __name__ == __main__: app.run()
運(yùn)行這個(gè)py文件围苫,打開瀏覽器訪問127.0.0.1:5000就能看到顯示Hello World的頁(yè)面 .
如果讓這個(gè)flask引用監(jiān)聽來(lái)自公網(wǎng)ip的請(qǐng)求,理論上你跑此程序的機(jī)器就相當(dāng)于一個(gè)服務(wù)器了撤师,然而這個(gè)服務(wù)器并不完美剂府,所以我們需要nginx和gunicorn來(lái)增加它的功能,讓它真刀真槍上生產(chǎn)環(huán)境的時(shí)候能按要求運(yùn)行剃盾。
flask自帶的WSGI框架性能很差勁腺占,只能適用于開發(fā)環(huán)境調(diào)試使用。我們用專業(yè)一點(diǎn)的gunicorn(還有很多其他優(yōu)秀的框架)替代flask自帶的WSGI框架痒谴。
配置完后湾笛,通過命令’/usr/local/bin/gunicorn -b127.0.0.1:5000‘啟動(dòng)應(yīng)用。打開瀏覽器訪問127.0.0.1:5000,同樣能夠得到返回頁(yè)面
然而gunicorn也僅僅是一個(gè)python的WSGI框架而已闰歪,要讓它真正處理來(lái)自互聯(lián)網(wǎng)的各類訪問功能還是有點(diǎn)欠缺,這時(shí)候就需要用到大名鼎鼎的nginx 服務(wù)器來(lái)替gunicorn遮風(fēng)擋雨了蓖墅。
Ubuntu下安裝nginx可以用命令
sudo apt-get install nginx
安裝后需要進(jìn)行下配置:
cd /etc/nginx/sites-available
sudo vi test (test為配置名稱库倘,可以根據(jù)自己項(xiàng)目進(jìn)行命名)
test文件的配置為:
server {
listen 80; # 監(jiān)聽80端口
location / {
proxy_pass http://127.0.0.1:5000; # 代理本機(jī)127.0.0.1:5000的服務(wù)
}
location /static {
alias /home/ubuntu/myproject/myblog/app/static; # 負(fù)載均衡
}
}cd ..
cd sites-enable
sudo ln -s ../sites-available/lwhile . (創(chuàng)建軟鏈接,別漏掉最后的.)
sudo service nginx reload
sudo service nginx restart
這樣nginx的基本配置文件就寫好了 接下來(lái)我們配置進(jìn)程管理工具supervisor supervisor可以在后面啟動(dòng)你的python進(jìn)程论矾,這樣很方便
1.cd /etc/supervisor/conf.d
2.sudo vi test.conf (test為文件名)
[program:test]
command = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py
3.sudo supervisorctl
4.reload
5.start test
如果一切正常教翩,做完這所有步驟之后,現(xiàn)在公網(wǎng)的ip訪問你的主機(jī)贪壳,就可以打開你的flask應(yīng)用了