Nginx之美多商城前臺部署

這裏咱們採用動靜分離的方式來部署美多商城項目。

動態請求:採用uwsgi與Django進行通訊處理動態業務。css

靜態請求:採用Ngins經過socket與uwsgi進行通訊處理靜態業務html

第一步:實現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協議進行通訊。python

# 啓動
uwsgi --ini uwsgi.ini # 中止
uwsgi --stop uwsgi.pid

 日誌文件中出現如下信息即爲啓動成功。

3. 測試uwsgi是否可以和Django程序進行通訊。

利用瀏覽器向配置文件中的HTTP屬性信息發送請求便可。nginx

 經過瀏覽器發送請求,可以獲取到響應則表示uwsgi和Django程序可以正常進行通訊了。web

接來下,就是實現Nginx和uwsgi之間的通訊。

1. 修改uwsgi配置文件。

將uwsgi中的配置屬性HTTP註釋掉,啓用socket屬性。vim

[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後拼接一個/,socket

Nginx進行路由匹配後,會將http://www.meiduo.site/地址,修改爲http://www.meiduo.site/index.html地址並進行請求。

原文出處:https://www.cnblogs.com/chao666/p/12344835.html

相關文章
相關標籤/搜索