Django 关闭DEBUG模式后,就相当于是生产环境了。Django官网上指出如果Django框架一旦作为生产环境,它的静态文件访问接口就不应该从Django框架中走了,必须在Django框架前端部署nginx或者其他web服务器来提供静态访问入口,首推nginx 。
nginx配置如下:
server { listen 80; server_name 127.0.0.1 charset UTF-8; access_log /var/log/nginx/django_pro01_access.log; error_log /var/log/nginx/django_pro01_error.log; client_max_body_size 75M; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; uwsgi_read_timeout 2; } location /static { #这里做了访问静态目录不走uwsgi expires 30d; autoindex on; add_header Cache-Control private; alias /usr/share/nginx/django_pro01/static/; } }
在nginx中要单独做访问/static/目录的路由。
所有静态文件都应该从“/usr/share/nginx/django_pro01/static/”这个目录中(也就是上面定义的STATIC_ROOT)获取。
运行 python manage.py collectstatic
这个命令的执行目的,就是将在开发模式中定义的静态目录,统一拿到STATIC_ROOT目录下,对外提供“/static”(STATIC_URL)为访问URL:
1.首先从Django的扩展包中,将admin管理后台的jss 和css等静态文件拷贝到配置文件中的STATIC_ROOT目录下。
2.然后将STATICFILES_DIRS 列表中所有目录下的内容也拷贝到STATIC_ROOT目录下
django STATIC_URL STATIC_ROOT STATICFILES_DIRS的区别
原文地址:http://blog.51cto.com/wenguonideshou/2089955