最近想学Django,搭建环境就花了我整整两天时间。
网上很多教程,但由于Django的版本对不上,所以会有很多bug。
这里特别点明我用的版本是Django 1.6,Python2.7,Apache2.2。希望没有误导到大家。
检查Django版本:
import django
django.VERSION
Django 1.6下载地址 https://www.djangoproject.com/download/1.6.5/tarball/
解压缩后在cmd进入到django目录,输入python setup.py install即可
一、用Django新建一个网站
我们打开cmd,到E:/website/目录
输入django-admin.py startproject myweb
创建一个新的名为myweb的工程
进入myweb目录,运行python manage.py runserver
(这个是Django自带的小型服务器,用于调试)
然后登录127.0.0.1:8000,发现工程创建成功。
然后ctrl+break退出。下面我们将这个网页配置到apache上。
二、配置Django文件
Django配置apache有mod_python和mod_wsgi两个方法,不过前者已经不再更新。
现在主要是用mod_wsgi来配置apache。
Django1.6已经默认支持mod_wsgi,我们生成一个新的django工程,里面会有一个wsgi.py文件
(在E:/website/myweb/myweb目录,内容如下)。
这个是Django较新版本才有的特性,它给我们配置mod_wsgi+apache带来很大的方便。
我们要在wsgi.py文件里加上一行sys.path.append(r'E:/website/myweb/'),否则会出bug。
"""
WSGI config for myweb project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
"""
import os,sys
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myweb.settings")
sys.path.append(r'E:/website/myweb/') #Django创建wsgi.py的时候没有这句话,我们必须自己加上
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
三、配置apache和wsgi
mod_wsgi的下载地址:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi
下载到的mod_wsgi.so复制到apache安装目录下的modules目录
然后打开apache安装目录的conf文件夹,打开httpd.conf文件
1、找到LoadModule那一段,添加:
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / "E:/website/myweb/myweb/wsgi.py"
2、找到Directory的配置区域,添加如下的一段配置:
<Directory "E:/website/myweb/">
Order deny,allow
allow from all
</Directory>
所有的配置都已完成。
这时只要重启apache服务器,登录127.0.0.1(不是127.0.0.1:8000)
可见我们成功地把网站配置到apache。
配置成功后,重启apache相当于我们在命令行python manage.py runserver。
平时调试的时候可能后者更方便,不过如果我们要架设大型网站,最后还是要用apache。所以还是建议初学者学习一下怎么配置Django到apache。
最后是一些debug的经验:
配置Django+apache+mod_wsgi出现Internal Server Error
如果是按照本文配置的,多半是因为没有修改默认的wsgi.py文件
我们只要在wsgi.py前面加上一句sys.path.append(r'E:/website/myweb/')
希望这篇博客能给初学Django1.8的人一点帮助!
参考文献: