文档章节

让Nginx处理Django的静态文件

 我的去哈哈
发布于 2014/03/31 17:37
字数 627
阅读 6140
收藏 11

上次的《Django静态文件的配置》,说的主要是针对开发环境的配置。在开发中难免要处理网站的css js image等静态文件,不用顾及性能,安全的问题,交给Django内部处理好了;但如果正式部署到服务器的时候,这样的配置就会影响到性能和安全性了,这时怎么办呢?嗯,交给Nginx处理好了。


假如项目的目录结构如下:
myproject
--app1
--app2
--media
----css
----js
----images
--templates
--setting.py
--urls.py
--manage.py

--...

解释:通常项目文件夹下有若干个app应用,如app1 app2
我们把静态文件方在项目的根目录下,起名为media(这个可以任意起名,但顾名思义,起个明了的名字),media文件夹里分别新建 css,js,images文件夹,用他们放置样式,脚本,图片等用途。
剩下的就是Django生成的settings urls manage配置文件了。


这回计划在开发环境中,使用Django处理静态文件,而正式部署后使用Nginx来处理他们。


首先在urls.py文件中最后加上以上代码
if settings.DEBUG:    
    urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': os.path.join(settings.SITE_ROOT,'media')},name="media"),
    )


具体的意思是:如果是开发环境,让Django的django.views.static.serve来处理,而正式部署时,Django不做任何事情,让Nginx来处理,后面会讲到Nginx的配置问题。




settings.DEBUG其实就是开发和部署的标示变量,部署的时候在settings里给DEBUG变量赋值False,让Django Templates屏蔽一切Debug;赋值True时,相反,是开启Debug,开发中出错以便查看一些错误信息。


开发环境中,settings的配置如下:
import os
DEBUG = True
TEMPLATE_DEBUG = DEBUG


SITE_ROOT=os.path.abspath(os.path.dirname(__file__))


MEDIA_ROOT = os.path.join(SITE_ROOT,'media')


MEDIA_URL = '/media/'


正式部署的时候,把变量DEBUG改成False即可。



正式部署的时候,Nginx的静态文件配置很关键,先看代码:


location ~ ^/media/ {         
        root /home/http/django_project/myproject/; 
expires 24h;
access_log   off;
    }


如项目实际路径是:/home/http/django_project/myproject/,那以上的配置代码会到 /home/http/django_project/myproject/ 路径找 media文件夹。一两点值得注意的:

1 刚开始一直没有配置成功,原因是root的没配置正确,写成 root /home/http/django_project/myproject/media/ 了, 导致Nginx老找不到media文件夹。

2 还有一个值得注意的是:location ~ ^/media/  要和实际的静态文件夹对应哦,如果写成location ~ ^/static/  那肯定不行的

(完)

http://2goo.info/blog/detail/533/

© 著作权归作者所有

粉丝 3
博文 57
码字总数 55253
作品 0
东城
私信 提问
加载中

评论(2)

leeyi
leeyi

location ~ ^/static/ {
root /root/www/reviewboard/htdocs;
}
或者
location ~ ^/static/ {
root /root/www/reviewboard/htdocs/static/;
}
http://192.168.3.3/static/rb/css/common.min.10f5994b0319.css
都报错 403 Forbidden
leeyi
leeyi

location ~ ^/static/ {
root /root/www/reviewboard/htdocs;
}
或者
location ~ ^/static/ {
root /root/www/reviewboard/htdocs/static/;
}
http://192.168.3.3/static/rb/css/common.min.10f5994b0319.css
都报错 403 Forbidden
django 中式用静态文件(css,javascript)

Django模板中使用css, javascript 测试环境 (r'^css/(?P.*)$', 'django.views.static.serve', {'document_root': '/var/www/django-demo/css'}), (r'^js/(?P.*)$', 'django.views.static.ser......

晨曦之光
2012/03/01
1K
0
Ubuntu上通过nginx部署Django笔记

Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。今天在Ubuntu上使用Nginx部署Django服务,虽然不是第一次搞这个了,但是发现还是跳进了好多坑,google了好久才...

j_hao104
2016/11/16
115
0
使用uwsgi和nginx部署django应用

概述 文章是uwsgi关于django部署的学习笔记,过程中涉及: 浏览器 nginx服务器 linux socket uwsgi服务 django应用 最终各个组件之间的关系是 当浏览器访问web页面时,如果请求的是静态文件,...

alazyer
2016/03/02
150
0
Django1.11+Uwsgi+Nginx的生产环境部署

思路:使用runserver可以使我们的django项目很便捷的在本地运行起来,但是这只能在局域网内访问。正式环境部署的话比较安全,而且静态文件的处理方式会比较友好。nginx作为服务器的最前端,负...

M玺
2018/05/10
0
0
Django + Uwagi + Nginx部署,亲自实验

Django + Uwsgi + Nginx 的生产环境部署 使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了。比如静态...

静水大智
2017/10/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka 原理和实战

本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/bV8AhqAjQp4a_iXRfobkCQ 作者简介:郑志彬,毕业于华南理工大学计算机科学与技术(双语班)。先后从事过电子商务、开放平...

vivo互联网技术
今天
17
0
java数据类型

基本类型: 整型:Byte,short,int,long 浮点型:float,double 字符型:char 布尔型:boolean 引用类型: 类类型: 接口类型: 数组类型: Byte 1字节 八位 -128 -------- 127 short 2字节...

audience_1
今天
9
0
太全了|万字详解Docker架构原理、功能及使用

一、简介 1、了解Docker的前生LXC LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。相当于C++中的NameSpa...

Java技术剑
今天
21
0
Wifiphisher —— 非常非常非常流氓的 WIFI 网络钓鱼框架

编者注:这是一个非常流氓的 WIFI 网络钓鱼工具,甚至可能是非法的工具(取决于你的使用场景)。在没有事先获得许可的情况下使用 Wifiphisher 攻击基础网络设施将被视为非法活动。使用时请遵...

红薯
今天
90
1
MongoDB 4 on CentOS 7安装指南

本教程为CentOS x86_64 7.x操作系统下,MongoDB Community x86_64 4.2(GA)安装指南。 安装方式一:yum repo在线安装 [此方式较为简单,官方推荐] Step1:新建MongDB社区版Yum镜像源。 # vim ...

王焱君
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部