nginx 部署Django專案時,Admin後臺管理CSS樣式丟失
阿新 • • 發佈:2021-01-14
技術標籤:python
nginx 部署Django專案時,Admin後臺管理CSS樣式丟失
解決方法 : 需要配置 專案中的目錄路徑 和 nginx代理
文章目錄
前言
部署採用的是ubuntu+Django+uwsgi+nginx
一、專案settings.py檔案配置
在settings.py裡面最後一行新增:
STATIC_URL = '/static/' --nginx 會通過static為開頭訪問指定靜態資原始檔
STATIC_ROOT = os.path.join(BASE_DIR, 'static' ) #指定樣式收集目錄
或者
STATIC_ROOT = '/datadrive/workspace/django_site/static/' -- 我們手動指定目錄
上面是配置靜態資原始檔到指定專案目錄的,不然 預設static會在Django的安裝目錄下
python manage.py collectstatic --在專案根目錄 執行此命令 生成static相關靜態資原始檔
二、配置nginx 代理
nginx除了提供反向代理,負載均衡以外,還提供了靜(html, css, js)動(檢視,模板需要進行解析執行的,或者操作資料庫的)分離的功能。
nginx為什麼只從配置路徑中尋找靜態資源:
因為處理靜態和處理動態資源所消耗的效能和是不一樣的。原本靜態和動態都是在django專案中,而且django專案執行在uwsgi中,所以動靜態都是由uwsgi處理。有了nginx之後,靜態資源我們交給nginx處理,nginx處理靜態資源的效能極高。
原本django專案中的靜態資源存放在static資料夾中,其中包含我們自己的html,css,js等。
admin模組擁有的靜態資源沒有在static資料夾下,nginx中配置的會從static目錄下尋找靜態資源。
在nginx配置檔案中 新增server 欄位下 新增以下內容
location /static {
# 指定靜態檔案存放的目錄
alias / datadrive/workspace/django_site/static/;
}
然後 重啟nginx和uwsgi即可