1. 程式人生 > >Nginx之美多商城前臺部署

Nginx之美多商城前臺部署

這裡我們採用動靜分離的方式來部署美多商城專案。

動態請求:採用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地址並進行請