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