1. 程式人生 > >專案部署、收集靜態檔案、nginx和uwsgi實現負載均衡。

專案部署、收集靜態檔案、nginx和uwsgi實現負載均衡。

專案部署

1)靜態檔案伺服器

​ 開發階段: live-server

​ 部署階段: nginx

​ 域名: www.meiduo.site

Django專案靜態檔案收集:

# 設定setting配置檔案
STATIC_ROOT = '指定收集靜態檔案的儲存目錄'

# 在終端執行收集靜態檔案的命令
python manage.py collectstatic

配置nginx伺服器提供front_end_pc目錄下的靜態檔案:

server {
        listen       80;
        server_name  www.meiduo.
site; #charset koi8-r; #access_log logs/host.access.log main; location / { # 指定網站的根目錄是html # root html; """現在指定網站的根目錄是我們收集的靜態檔案""" root /Users/smart/Desktop/sh16_code/meiduo_sh16/front_end_pc; """如果訪問的是網站的根路徑,預設返回根目錄下的index.html"""
index index.html; } # ... }
  • 啟動nginx: sudo /usr/local/nginx/sbin/nginx

  • 停止nignx: sudo /usr/local/nginx/sbin/nginx -s stop

  • 重啟nginx: sudo /usr/local/nginx/sbin/nginx -s reload

2)後端API伺服器

​ 開發階段: django提供開發的web伺服器 python manage.py runserver

​ 部署階段: uwsgi 遵循wsgi協議的伺服器

​ 域名: api.meiduo.site

uwsgi伺服器基本使用:

安裝: pip install uwsgi

配置:

"""注意這個前面的標識不能丟"""
[uwsgi]
# 使用nginx連線時使用,Django程式所在伺服器地址
;socket=127.0.0.1:8001
# 直接做web伺服器使用,Django程式所在伺服器地址
http=127.0.0.1:8001
# 專案目錄
chdir=/Users/smart/Desktop/sh16_code/meiduo_sh16/meiduo_mall
# 專案中wsgi.py檔案的目錄,相對於專案目錄
wsgi-file=meiduo_mall/wsgi.py
# 程序數
processes=4
# 執行緒數
threads=2
# uwsgi伺服器的角色
master=True
# 存放程序編號的檔案
pidfile=uwsgi.pid
# 日誌檔案,因為uwsgi可以脫離終端在後臺執行,日誌看不見。我們以前的runserver是依賴終端的
daemonize=uwsgi.log
# 指定依賴的虛擬環境
virtualenv=/Users/smart/.virtualenvs/django
  • 啟動: uwsgi --ini ‘配置檔案路徑’

  • 停止: uwsgi --stop ‘uwsgi.pid檔案路徑’

配置nginx實現負載均衡:

upstream meiduo {
        # 指定業務伺服器ip:port
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;
    }   

    server {
        listen 8000;
        server_name api.meiduo.site;
        
        location / {
            # 儲存uwsgi請求引數
            include uwsgi_params;
            # 請求轉發
            # uwsgi_pass '業務伺服器ip:port';
            uwsgi_pass meiduo;
        }
    }
    ```