我設法部署了我的 Django 應用程式,但我無法使用 Nginx 傳遞靜態檔案。我已按照部署到生產環境的所有說明進行操作。當我檢查頁面時,我看到的只是空的靜態檔案夾有人能發現錯誤嗎?
非常感謝
nginx.conf
10 upstream app_upstream {
9 server app:8080;
8 }
7
6 server {
5 listen 80;
4 listen 443;
1 server_name #######;
2
3 location /static/ {
4 alias /static/;
5 }
6
7 location /media/ {
8 alias /media/;
9 }
10
11 location / {
12 proxy_set_header Host $host;
13 proxy_pass http://app_upstream;
14 }
15 }
設定.py
14
13 STATIC_URL = '/static/'
12 STATIC_ROOT = '/static/'
碼頭工人-compose.yml
....
12 app:
13 build: .
14 ports:
15 - 8000:8000
16 - 8080:8080
17 env_file:
18 - db_${RTE}.env
19 volumes:
20 - .:/app/
21 - static:/static/
22 - media:/media/
23 depends_on:
24 - db
25
26 nginx:
27 build: nginx/
28 ports:
29 - 443:443
30 - 80:80
31 volumes:
32 - ./nginx/${RTE}/conf.d/:/etc/nginx/conf.d/
34 - static:/static/
35 - media:/media/
36 depends_on:
37 - app
38
39 volumes:
40 static:
...
docker-compose 時出現錯誤訊息:
nginx_1 | 2022/01/10 16:26:17 [error] 10#10: *8 open() "/static/custom.css" failed (2: No such--More
--More--
uj5u.com熱心網友回復:
遇到過類似的問題(但不使用 Docker),也許這可能會有所幫助。
如果你的根專案中有一個用于專案級靜態檔案的靜態檔案夾,并且如果你還有一個命令可以python manage.py collectstatic --noinput在你的 docker-compose 或 Dockerfile 中運行,這對 Docker 不太了解,我認為你在生產中仍然需要,那么也許在 settings.py 中重命名 STATIC_URL 和 STATIC_ROOT 會有所幫助,因為該命令會嘗試將所有應用程式中的所有靜態檔案收集到一個檔案夾中。嘗試這樣的事情:
STATIC_URL = '/staticfiles/'
STATIC_ROOT = str(BASE_DIR.joinpath('staticfiles'))
STATICFILES_DIRS = [str(BASE_DIR.joinpath('static'))]
請注意,您還必須更新您的 Nginx 檔案,即
server {
...
location /staticfiles/ {
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/409326.html
標籤:
下一篇:無效的HTTP_HOST標頭:“subdomain.domain.com”。您可能需要將“subdomain.domain.com”添加到ALLOWED_HOSTS
