如何部署簡(jiǎn)單python + flask應(yīng)用

這是一篇教使用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)行下配置:

  1. cd /etc/nginx/sites-available

  2. sudo vi test (test為配置名稱,可以根據(jù)自己項(xiàng)目進(jìn)行命名)

  3. 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ù)載均衡
    }
    }

  4. cd ..

  5. cd sites-enable

  6. sudo ln -s ../sites-available/lwhile . (創(chuàng)建軟鏈接,別漏掉最后的.)

  7. sudo service nginx reload

  8. 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)用了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容