Flask:10-項目部署(02):讓更多的朋友訪問你的裝逼利器
阿新 • • 發佈:2018-10-07
margin server tmm sax -s static solid -m 請求
項目部署
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
Flask:10-項目部署(02):讓更多的朋友訪問你的裝逼利器