標籤:
轉載來自
http://blackgu.blogbus.com/logs/171363164.html
略作修改
1)安裝Flask,uwsgi,nginx
Flask:sudo apt-get install python-flask
uwsgi:sudo apt-get install uwsgi uwsgi-plugin-python
nginx:sudo apt-get install nginx
2)建立Flask工程
這裡就用最簡單的HelloWorld,建立一個工程目錄:myapp,裡麵包含以下檔案:
檔案名稱:myapp.py
代碼:
from flask import Flask
app = Flask(__name__)
@app.route(‘/‘)
def hello():
return ‘Hello World‘
if __name__ == ‘__main__‘:
app.run()
3)配置uwsgi
在剛才建立的myapp目錄下建立一個uwsgi的xml設定檔myapp_config.xml:
<uwsgi>
<pythonpath>[你的工程的根目錄]</pythonpath>
<module>[模組名,這裡用myapp]</module>
<callable>[因為app是啟動整個服務的入口,所以是app]</callable>
<socket>/tmp/uwsgi.sock</socket> #註:這裡的sock檔案不是某個現成的檔案,也不需要事先建立,運行時會自動建立,檔案名稱也是自己定的,路徑也是可以自己定的
<master/>
<processes>4</processes> #註:跑幾個線程,這裡用4個線程
<memory-report/>
</uwsgi>
範例:
<uwsgi>
<pythonpath>/root/workspace_aptana/mytest/src/test/uwsgi</pythonpath>
<module>myapp</module>
<callable>app</callable>
<socket>/tmp/uwsgi.sock</socket>
<master/>
<processes>4</processes>
<memory-report/>
</uwsgi>
3)配置nginx
在/etc/nginx/sites-available/目錄下,建立一個網站檔案設定檔site:
server {
listen 80;
server_name www.myapp.com;
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock; #註:這裡的sock檔案和uwsgi的sock檔案配的是同一個檔案,因為nginx和uwsgi需要通過這個socket進行互動
}
}
或者,乾脆直接在defaut.conf裡面修改如下內容:
server {
listen 8081;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock;
}
}
然後用ln命令建立一個link到/etc/nginx/sites-enable/裡,link的名字也叫site,刪除sites-enable目錄下的default的link:
sudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/ (注意:這個是LN的小寫命令)
sudo rm /etc/nginx/sites-enabled/default
4)開始部署
1.啟動uwsgi,命令是sudo uwsgi -x myapp_config.xml,會打出很多的字,如果沒有載入工程成功可以從打出的資訊中看出,然後不要關閉該Terminal,
2.新開啟一個Terminal,在裡面啟動nginx:sudo /etc/init.d/nginx start,然後在瀏覽器裡訪問localhost(看配置的nginx裡的server監聽的連接埠,如上面的8),
3這時如果出現502頁面,可以看下日誌,我的日誌是在/var/log/nginx/error.log,如果裡面顯示是sock檔案因為許可權問題無法訪問,那隻要利用chmod命令給sock檔案賦上許可權:chmod 777 /tmp/uwsgi.sock,然後uwsgi和nginx再重啟一下,現在訪問localhost就可以看到“Hello World!”,OK!
樹莓派部署Flask+uWSGI+Nginx過程