轉自:https://www.jianshu.com/p/14123b6b74c0
最近在學習flask,想把應用部署在樹莓派上面,我的樹莓派是2代B+,使用的是Kali linux。
部署之前先來看一下內存
現在只用了214.3M,還好。
我使用的是python3,所以所有軟件都得安裝python3版本的。
下面開始部署。
首先要安裝nginx,uWSGI,flask,uwsgi-plugin-python3
sudo apt-get install nginx uwsgi uwsgi-plugin-python3
sudo pip install flask
安裝完成後就可以開始部署了。
第一步,創建flask應用
重點是部署,所以我們只要寫一個最基本的flask應用就好了。
from flask import Flask
app = Flask(__name__)
def hello_world():
return ‘Hello World!’
if name == ‘main’:
app.debug = True
app.run()
注意,我們創建的flask實例名是app,這個需要記一下,一會讓要用這個。
寫完之後保存爲hello.py,這個名後面也需要用。
然後我們就來運行一下,看看能不能訪問。
執行
python3 hello.py
打開樹莓派的瀏覽器,訪問localhost:5000,看看能不能看到打印出來的'Hello World!',如果能看到,說明程序沒有問題。然後進入下一步。
第二步,配置nginx
nginx安裝完成後,還需要配置,才能訪問。
默認的配置文件在/etc/nginx/sites-available/default,修改它
sudo nano /etc/nginx/sites-available/default
找到server,修改成下面這個樣子
server {
listen 80;
server_name raspberry;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
}
}
修改完畢之後保存退出,然後啓動nginx服務
sudo /etc/init.d/nginx start
看到OK就表明啓動成功了。然後進入第三步。
第三步,配置uWSGI
我們需要爲我們的應用添加一個uWSGI配置文件,然後用它來啓動uWSGI服務。
在剛纔創建flask應用的目錄下,創建一個叫test_config.ini的文件,內容如下:
[uwsgi]
socket = 127.0.0.1:5000
processes = 4
threads = 2
plugins = python3
master = true
pythonpath = /home/Davidham3/python/MyBlog
#上面的pythonpath需要換成剛纔你自己創建的應用的目錄
module = hello
callable = app
memory-report = true
參數說明:
· socket:表示和Nginx通信的地址和端口,和Nginx配置裏的uwsgi_pass一致。
· processes:表示開啓多少個子進程處理請求。
· threads:每個進程的線程數。
· plugins:加載指定插件
· master:啓動主進程
· pythonpath:表示項目目錄
· module:加載項目啓動模塊,剛纔我們創建了hello.py,這裏就爲hello
· callable:flask項目的實例名稱,就是剛纔我們創建的實例名
· memory-report:內存使用報告,開啓後打印內存使用情況
創建完uWSGI配置文件之後,使用剛纔創建的test_config.ini配置文件啓動服務。
sudo uwsgi --ini /home/Davidham3/python/MyBlog/test_config.ini
啓動後,可以看到很多文字,只要不報錯就OK了,這時候我們訪問localhost即可看到剛纔部署的flask應用。即'Hello World!'。按Ctrl+C停止服務。
使用如下方法後臺運行服務。
sudo uwsgi -d /home/Davidham3/python/MyBlog/uwsgi.log --ini /home/Davidham3/python/MyBlog/test_config.ini
使用-d創建日誌文件,--ini導入配置文件,即可後臺運行應用。
此時也可以通過局域網其他機器進行訪問,輸入樹莓派的IP地址即可看到該flask應用。
這時候我們看一下內存的使用情況:
現在是384.9M,兩個服務一個應用一共使用了內存170M,這主要是因爲nginx是一款佔用內存少的輕量級web服務器。
需要注意的是,在flask的腳本上,一定要寫if __name__ == '__main__':
這句,否則會報錯。
至此爲止,使用nginx+uWSGI在樹莓派上部署flask應用就完成了。
</div>
</div>