簡體   English   中英

如何在生產中發布Django靜態文件

[英]How to post Django static files in production

我無法讓我的Django應用程序在生產環境中獲取靜態文件。

在我已指定的settings.py中

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = '/var/www/static/'

我在INSTALLED_APPS中包含了django.contrib.staticfiles

我運行了manage.py collectstatic ,它將靜態文件移動到/ var / www / static /。

html結果顯示,例如<link rel="stylesheet" type="text/css" href="/static/myStyleSheet.css">來自django文件,其中<link rel="stylesheet" type="text/css" href="{% static 'myStyleSheet.css' %}">

在我看來它應該工作,但我顯然缺少一些東西。 我在靜態文件上遇到404錯誤。

我們在本地使用的django服務器,通過運行python manage.py runserver是一個開發服務器,不能在生產中使用。

在生產中,我們將使用一個Web服務器,它從HTTP / HTTPS端口獲取請求,並根據我們的配置,將請求轉發到運行應用服務器(例如。gunicorn)的端口,這取代了我們使用的開發服務器。

這里的問題是,默認情況下,app服務器不會呈現靜態文件。 因此,您必須配置Web服務器來處理它。

在Web服務器配置中,您必須將url /static/指向靜態根文件夾。 因此,Web服務器將從它指向的文件夾中呈現靜態文件

編輯

由於您使用的是apache,請將其添加到apache配置中以使靜態文件生效

Alias /static /home/user/myproject/static
<Directory /home/user/myproject/static>
    Require all granted
</Directory>

所以,這里我們是靜態根路徑的別名/靜態。 現在,對/static/css/my.css的請求將更改為: /home/user/myproject/static/css/my.css並將相應的文件發回

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM