本人也是刚接触Django,在遇到困难时在网上得到很多博客关于Django介绍的帮助,为了发扬分享的精神,特意记录一下关于Django1.7 +Apache2.4的部署过程
因为Django涉及到python、Django、Apache、mod_wsgi,所以关于版本的配合非常关键,我使用的版本分别如下:Django1.7+Apache2.4VC9+mod_wsgi‑4.4.9+python2.7+Windows7
Django | Apache | mod_wsgi | python |
1.7 | 2.4 VC9 | 4.4.9 | 2.7 |
本文假设已经在本机上实现了Django网站的搭建,所以python2.7和Django1.7的下载不说明,Django文档地址:Django文档说明
1、下载Apache2.4:
下载地址:点击打开链接,我下载的文档的具体地址:点击打开链接
Windows安装注意事项:点击打开链接,对Apache在Windows上安装做一些说明,可以忽略
我下载后的文档的名字:httpd-2.4.12-x86.zip
下载后把文档解压到:D:\Apache24,可以看到我的文件目录:
主要需要配置的文件:D:\Apache24\conf\httpd.conf,通过文档查找的方式查找需要修改的代码段,推荐使用notepad++
Define SRVROOT "D:/Apache24" ServerRoot "${SRVROOT}"
ServerName www.example.com:8086
#Listen 12.34.56.78:80 Listen 127.0.0.1:8086
启动Apache的bin/httpd.exe程序,并浏览器访问:http://127.0.0.1:8086,会在浏览器上看到Apache的欢迎界面,这样Apache就初步配置完成
2、下载mod_wsgi:
下载地址:点击打开链接,选择灰色的那个版本:
whl是python打包的一个格式,把它改为zip就可以解压了,把里面的mod_wsgi.so拷贝到D:\Apache24\modules路径下
3、配置Apache与Django
重新打开D:\Apache24\conf\httpd.conf,在文档尾部添加了以下内容,主要是配置路径,告诉Apache关于Django的static的路径等#添加mod_wsgi.so 模块 LoadModule wsgi_module modules/mod_wsgi.so #指定myweb项目的wsgi.py配置文件路径 WSGIScriptAlias / F:/Django_Project/qblog/qblog/wsgi.py #指定项目路径 WSGIPythonPath F:/Django_Project/qblog <Directory F:/Django_Project/qblog/qblog> <Files wsgi.py> Require all granted </Files> </Directory> Alias /static F:/Django_Project/qblog/static <Directory F:/Django_Project/qblog/static> AllowOverride None Options None Require all granted </Directory>然后设置Django的setting.py文件:
修改以下内容:
... DEBUG = False TEMPLATE_DEBUG = False ALLOWED_HOSTS = ['127.0.0.1', 'localhost']重新启动Apache的bin/httpd.exe程序,打开浏览器,访问http://127.0.0.1:8086/看之前的Django网页是否出来了;
到这里,部署还没有结束,通常这样在admin上显示的页面无法加载部分css和背景图片等静态文件,这是因为Apache无法找到这些静态文件,因为它们不是在我们的项目中,而是在这里:D:\Python27\Lib\site-packages\Django-1.7.1-py2.7.egg\django\contrib\admin
4、收集静态文件
怎样把D:\Python27\Lib\site-packages\Django-1.7.1-py2.7.egg\django\contrib\admin文件拷贝到我们项目的static里面呢?手动拷贝是可以的,但这样不科学,可能还会遗漏其他app所需要的静态文件,例如我自己就还遗漏了django_markdown静态文件了,根据网络搜索,解决的方法是:
①修改配置setting.py文件,把STATIC_ROOT的注释去掉,然后把STATICFILES_DIRS的os.path.join(BASE_DIR, "static")注释掉。
STATIC_URL = '/static/' #STATIC_ROOT = os.path.join(BASE_DIR, "static") TEMPLATE_DIRS = ( os.path.join(BASE_DIR, "templates"), ) STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), )修改后的效果是:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, "static") TEMPLATE_DIRS = ( os.path.join(BASE_DIR, "templates"), ) STATICFILES_DIRS = ( #os.path.join(BASE_DIR, "static"), )
②在Django项目的根目录运行 cmd命令,收集到admin&django_markdown:
F:\Django_Project\qblog>python manage.py collectstatic
③把setting.py的上一步设置还原,重新运行Apache,是否可以看到调试时的效果了,enjoy it!!
PS:在配置Apache时,可以查看log文件,这样可以非常快的找出问题的原因,主要是两个log文件:access.log &error.log
参考文档:
虫师的博客:点击打开链接
dfg727的博客:点击打开链接
原创,转载请注明出处:yingmutongxue的博客:http://blog.csdn.net/yingmutongxue/article/details/43985559
蜗牛工作站:点击打开链接