Flask:10-專案部署(02):讓更多的朋友訪問你的裝逼利器
阿新 • • 發佈:2018-12-13
專案部署
WEB工作原理
- 客戶端(chrom) <=> WEB伺服器(nginx) <=> WSGI(uWSGI) <=> Python(Flask) <=> 資料庫(MySQL)
- Flask框架自帶一個測試伺服器,開發時直接執行即可;但是在生成環境中,必須進行完整部署。
nginx伺服器
-
安裝:
sudo apt-get install nginx
-
新增虛擬主機:
- 在
/etc/nginx/sites-available
目錄下建立虛擬主機配置檔案www.blog.com
server { listen 80; server_name
- 建立軟連結
sudo ln -s /etc/nginx/sites-available/www.blog.com /etc/nginx/sites-enabled
- 重啟nginx服務(若重啟失敗,可以關閉然後再開啟)
- 建立目錄:
/var/www/blog
,然後在目錄下建立index.html
檔案 - 新增本地域名解析,修改配置檔案
/etc/hosts
,在末尾新增如下內容:
127.0.0.1 www.blog.com 127.0.0.1 blog.com
- 在
移植部落格專案
- 將書寫好的專案拷貝到
/var/www/blog
uWSGI
-
說明:是一個實現了WSGI協議的應用程式。
-
安裝:
pip3 install uwsgi
-
配置:
http: # 以HTTP協議啟動 socket: # 以socket方式啟動 chdir: # uwsgi啟動專案的根目錄 wsgi-file: # 資料交給哪個模組處理 callable: # 具體可呼叫的物件 daemonize: # 後臺執行(指定一個日誌檔案即可) processes: # 指定程序數 threads: # 指定執行緒數
-
啟動演示(以HTTP協議啟動)
uwsgi --http 127.0.0.1:5000 --wsgi-file blog.py --callable app
-
以socket形式啟動
- nginx轉發請求
server { listen 80; server_name www.blog.com blog.com; location / { #root /var/www/blog; #index idnex.html; # 包含請求引數 include uwsgi_params; # 以socket形式轉發請求資料 uwsgi_pass 127.0.0.1:5000; } }
提醒:一定不要忘記重啟nginx。
- 啟動uwsgi
uwsgi --socket 127.0.0.1:5000 --wsgi-file blog.py --callable app
- 將啟動引數寫入配置檔案
uwsgi.ini
[uwsgi] socket = 127.0.0.1:5000 wsgi-file = blog.py callable = appp # 後臺執行 daemonize = /var/log/uwsgi.log
啟動:uwsgi uwsgi.ini
靜態資源處理
-
說明:靜態資源nginx可以自行處理,沒有必要轉發到python中。因此需要新增路由轉發規則。
-
靜態資源路由規則:
location /static { root /var/www/blog; # 等價於 alias /var/www/blog/static; }
-
測試準備:在blog目錄下建立static目錄,並拷貝一張圖片
-
在瀏覽器位址列輸入:www.blog.com/static/gyy.jpg