Nginx之美多商城前臺部署
阿新 • • 發佈:2020-02-22
這裡我們採用動靜分離的方式來部署美多商城專案。
動態請求:採用uwsgi與Django進行通訊處理動態業務。
靜態請求:採用Ngins通過socket與uwsgi進行通訊處理靜態業務。
第一步:實現uwsgi與Django通訊。
1.在Django程式中,專案根路徑建立uwsgi.ini檔案,用來編寫配置檔案。
[uwsgi] # 使用Nginx連線時使用,Django程式所在伺服器地址 # socket=192.168.0.105:8001 # 直接做web伺服器使用,Django程式所在伺服器地址 http=192.168.0.105:8001 # 專案目錄 chdir=/home/python/Desktop/meiduo_rest/meiduo_mall # 專案中wsgi.py檔案的目錄,相對於專案目錄 wsgi-file=meiduo_mall/wsgi.py # 程序數 processes=4 # 執行緒數 threads=2 # uwsgi伺服器的角色 master=True # 存放程序編號的檔案 pidfile=uwsgi.pid # 日誌檔案 daemonize=uwsgi.log # 指定依賴的虛擬環境 virtualenv=/home/python/.virtualenvs/Py3_Django1.11
2. 啟動uwsgi
uwsgi:遵循wsgi協議的程式,需要使用http協議進行通訊。
# 啟動 uwsgi --ini uwsgi.ini # 停止 uwsgi --stop uwsgi.pid
日誌檔案中出現以下資訊即為啟動成功。
3. 測試uwsgi是否能夠和Django程式進行通訊。
利用瀏覽器向配置檔案中的HTTP屬性資訊傳送請求即可。
通過瀏覽器傳送請求,能夠獲取到響應則表示uwsgi和Django程式能夠正常進行通訊了。
接來下,就是實現Nginx和uwsgi之間的通訊。
1. 修改uwsgi配置檔案。
將uwsgi中的配置屬性HTTP註釋掉,啟用socket屬性。
[uwsgi] # 使用Nginx連線時使用,Django程式所在伺服器地址 socket=192.168.0.105:8001 # 直接做web伺服器使用,Django程式所在伺服器地址 # http=192.168.0.105:8001 # 專案目錄 chdir=/home/python/Desktop/meiduo_rest/meiduo_mall # 專案中wsgi.py檔案的目錄,相對於專案目錄 wsgi-file=meiduo_mall/wsgi.py # 程序數 processes=4 # 執行緒數 threads=2 # uwsgi伺服器的角色 master=True # 存放程序編號的檔案 pidfile=uwsgi.pid # 日誌檔案 daemonize=uwsgi.log # 指定依賴的虛擬環境 virtualenv=/home/python/.virtualenvs/Py3_Django1.11
2. 配置Nginx
通過編寫Nginx的配置檔案,實現Nginx與uwsgi進行通訊。
# 跳轉到配置檔案目錄 cd /etc/nginx/sites-enabled/ # 建立一個配置檔案 sudo vim meiduo
編寫配置檔案程式碼:
upstream meiduo { server 192.168.0.105:8001; } server{ server_name www.meiduo.site; listen 80; location / { # 匯入uwsgi使用的變數 include uwsgi_params; # 通過負載均衡設定uwsgi uwsgi_pass meiduo; }
測試並重新載入Nginx配置資訊。
# 測試 sudo nginx -t # 重新載入 sudo nginx -s reload
3. 通過瀏覽器測試,是否能夠使用Nginx實現部署。
通過以上步驟,已經初步實現了美多商城專案動態請求的部署。
美多商城部署進階部分:靜態請求部署
1. 實現主頁靜態檔案請求
修改Nginx配置檔案,即可實現。
upstream meiduo { server 192.168.0.105:8001; } server{ server_name www.meiduo.site; listen 80; location / { include uwsgi_params; uwsgi_pass meiduo; } location /static { alias /home/python/Desktop/meiduo_rest/meiduo_mall/static/; } }
2. 實現商品詳情頁面靜態化
upstream meiduo { server 192.168.0.105:8001; } server{ server_name www.meiduo.site; listen 80; location / { include uwsgi_params; uwsgi_pass meiduo; } # 主頁靜態檔案:css、js等 location /static { alias /home/python/Desktop/meiduo_rest/meiduo_mall/static/; } # 詳情頁面 location /detail { alias /home/python/Desktop/meiduo_rest/meiduo_mall/static/detail/; } }
3. 實現主頁靜態化
upstream meiduo { server 192.168.0.105:8001; } server{ server_name www.meiduo.site; listen 80; location / { include uwsgi_params; uwsgi_pass meiduo; } # 首頁路由 location = /{ root /home/python/Desktop/meiduo_rest/meiduo_mall/static; index index.html; } # 首頁靜態化 location = /index.html{ root /home/python/Desktop/meiduo_rest/meiduo_mall/static; index index.html; } # 主頁靜態檔案:css、js等 location /static { alias /home/python/Desktop/meiduo_rest/meiduo_mall/static/; } # 詳情頁面 location /detail { alias /home/python/Desktop/meiduo_rest/meiduo_mall/static/detail/; } }
首頁靜態化配置,可以理解為當用戶在瀏覽器輸入www.meiduo.site時,瀏覽器會自動在url後拼接一個/,
Nginx進行路由匹配後,會將http://www.meiduo.site/地址,修改成http://www.meiduo.site/index.html地址並進行請