[英]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.