專案部署、收集靜態檔案、nginx和uwsgi實現負載均衡。
阿新 • • 發佈:2018-10-31
專案部署
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;
}
}
```