Django Apache Windows安装配置文档

Djangowindows安装配置文档

本文只做备份,有兴趣的朋友可以查阅原文:http://isun.blog.sohu.com/88570908.html

一、软件准备:

1.1python-2.5.1.msi

1.2apache_2.2.8-win32-x86-no_ssl.msi

1.3Django-0.96.1.tar.gz

1.4mod_python-3.3.1.win32-py2.5-Apache2.2.exe

1.5MySQL-python-1.2.2.win32-py2.5.exe

二、安装步骤:

2.1安装python(运行python-2.5.1.msi即可,完成以后,设置环境变量)

2.2mysql-python(运行MySQL-python-1.2.2.win32-py2.5.exe即可)

2.3安装apache(运行apache_2.2.8-win32-x86-no_ssl.msi)

2.4安装apache的module:mod_python(运行mod_python-3.3.1.win32-py2.5-Apache2.2.exe,安装最后完成阶段,会提示让选择apache的路径,选择2.4中apache的安装路径即可)

2.5安装django

2.5.1解压缩两次,得到文件夹Django-0.96.1。把这个文件夹放到你的开发目录下,建议不要放在桌面,最好放在D:\Dev\之类的目录下,注意最好是英文,而且文件夹名不要有空格。

2.5.2在命令提示符下进入该目录,输入:cdD:\Dev\Django-0.96.1

再输入命令:pythonsetup.pyinstall

(这时屏幕会滚动显示一大堆东西,不要管它了,你也看不清)

OK了。

2.5.3先简单的测试一下。

命令提示符下,输入:python

然后输入importdjango

然后输入django.VERSION

我看到的是这样的:

>>>importdjango

>>>django.VERSION(0,96.099999999999994,None)

>>>

2.5.4设置环境变量(将../python2.5.1\Lib\site-packages\django\bin加入path的环境变量中)

2.6创建djangoproject并测试

C:\django_src>cd\

C:\>mkdirdjango

C:\>cddjango

C:\django>django-admin.pystartprojectmyproject

C:\django>cdmyproject

创建完成以后,打开settings.py文件,设置数据库(建议设置成mysql,2.2已经安装了python的mysql驱动,可以使用mysql)

DATABASE_ENGINE='mysql'#'postgresql_psycopg2','postgresql','mysql','sqlite3'or'ado_mssql'.

DATABASE_NAME='django_demo'#Orpathtodatabasefileifusingsqlite3.

DATABASE_USER='root'#Notusedwithsqlite3.

DATABASE_PASSWORD='root'#Notusedwithsqlite3.

DATABASE_HOST='10.1.120.12'#Settoemptystringforlocalhost.Notusedwithsqlite3.

DATABASE_PORT=''#Settoemptystringfordefault.Notusedwithsqlite3.

同步数据库:

在同步数据库前,需要先在mysql数据库中创建数据库django_demo,否则无法执行数据库DDL

C:\django\myproject>pythonmanage.pysyncdb

启动django自带的server:

C:\django\myproject>pythonmanage.pyrunserver

Validatingmodels...

0errorsfound.

2.7Enablemod_pythonhandlersforDjango

我们用Pythondjango-admin.pystartprojectmyproject

命令,在C盘的django目录下创建了一个Django项目myproject。我们把它引用的图片文件和css文件等静态资源都放在myproject文件夹下的media目录中。

此时,将myproject目录下的settings.py文件中的这三个参数修改一下,主要是为了从相对路径变成绝对路径:

修改的配置行

#Djangosettingsformyprojectproject.

'''

将相对路径改为绝对路径。主要有:

MEDIA_ROOT

TEMPLATE_DIRS

STATIC_PATH

'''

#Absolutepathtothedirectorythatholdsmedia.

#Example:"/home/media/media.lawrence.com/"

MEDIA_ROOT='c:/django/myproject'

STATIC_PATH='c:/django/myproject/media'

TEMPLATE_DIRS=(

#Putstringshere,like"/home/html/django_templates".

#Alwaysuseforwardslashes,evenonWindows.

'c:/django/myproject/templates',

)

切记切记,一定要保证这三个参数是绝对路径。

4:

配置Apache的httpd.conf配置文件:

首先,在“DynamicSharedObject(DSO)Support”的配置下增加一行

LoadModulepython_modulemodules/mod_python.so

这个必须手动添加。

5:

我们列出此时Apache所需要的参数分别为:

项目名:myporject

试图访问的URL为:http://localhost:80/mysite/

静态资源文件的存放目录:c:/django/myproject/media

项目文件夹路径:c:/django/myproject

好了,此时你就应该在httpd.conf文件的最后附加这段配置,以便让Apache知道到哪里去定位myproject/settings.py文件:

增加的配置行

#mysite目录路径:c:/django/myproject,

#但是对于PythonPath,必须设置成这个目录的上一级目录!

#thissiteurl:http://localhost:80/mysite/

<Location"/mysite/">

SetHandlerpython-program

PythonPath"sys.path+['c:/django']"

PythonHandlerdjango.core.handlers.modpython

SetEnvDJANGO_SETTINGS_MODULEmyproject.settings

PythonInterpretermysite

PythonDebugOn

</Location>

对于上面的配置,Limodou注释道:“上面PythonPath主要是将myproject的目录加入到sys.path,以便Django可以找到。需要使用绝对路径。

SetEvn中设置的DJANGO_SETTINGS_MODULE就对应于你的项目名.配置文件。因此为了能导入项目名.配置文件,就需要前面的PythonPath的设置。

PythonDebug和PythonAutoReload建议在生产时设为Off。”

为了让图片、css、script能够被Apache成功加载,还需要在httpd.conf最后附加这段配置:

增加的配置行

#Alias/site_media是用来将myproject的静态文件设置一个URL访问的别名。

Alias/site_mediac:/django/myproject/media

<Location"/site_media/">

SetHandlerNone

</Location>

#Alias/media是将DjangoAdmin的静态文件设置一个URL的访问别名。

Alias/mediac:/Django-0.95/django/contrib/admin/media

<Location"/media/">

SetHandlerNone

</Location>

#配置静态文件权限,让apache有权访问

<Directory"E:/program/python2.5.1/Lib/site-packages/django/contrib/admin/media">

AllowOverrideNone

OptionsNone

Orderallow,deny

Allowfromall

</Directory>

#设置不缓存,这样修改python源代码以后,可以自己加载,正式发布的时候,这个要去掉

MaxRequestsPerChild1

#filetypeswewanttoservestatically

#caseinsensativematch

<LocationMatch"(?i)\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">

SetHandlerNone

</LocationMatch>

三、常见错误

3.1常见错误现象1

关键词:clientdeniedbyserverconfiguration。

表象:访问了http://localhost:80/mysite/后,假如发现图片没有加载,或者css没有应用上,并且httpd.conf文件中Location的配置绝对路径肯定没错。

解释:

第一,首先检查httpd.conf配置Alias的配置,

看看Alias设置的路径是否正确,

Alias/site_mediac:/django/myproject/media

请保证您附加的这个路径肯定是你的图片或者css存放的路径。

其次,请检查您的django项目myproject目录下的settings.py,保证MEDIA_ROOT、STATIC_PATH、TEMPLATE_DIRS这三个参数指向的绝对路径正确无误。

最后,如果上面的参数都没错,却还是不行。那么请您检查Apache的日志文件

Apache2.2\logs\error.log

如果您发现有这样的错误提示:

错误日志

[MonNov2017:27:082006][notice]Child4172:Startingthreadtolistenonport80.

[MonNov2017:27:082006][error][client127.0.0.1]clientdeniedbyserverconfiguration:c:/Django/myproject/media/css/global.css,referer:http://localhost:80/mysite/

那么说明是因为对这些资源文件的访问被拒绝了。

此时,请您浏览http://localhost:80/site_media/css/global.css,如果遇到了HTTP403错误,就说明是权限问题。

此时,请到httpd.conf,增加如下配置来允许静态资源文件夹被访问:

增加的配置行

#对需要访问的区域,可以增加正确的Directory块

#否则会得到这样的错误:clientdeniedbyserverconfiguration:c:/Django/myproject/media/css/global.css,referer:http://localhost:80/mysite/

<Directory"c:/Django/myproject/media/">

OrderDeny,Allow

Allowfromall

</Directory>

重启Apache服务。

3.2常见错误现象2

关键词:EnvironmentError:Couldnotimportsettings。

表象:访问了http://localhost:80/mysite/后,直接页面报告如下错误:

页面错误输出

1.Mod_pythonerror:“PythonHandlerdjango.core.handlers.modpython”

Traceback(mostrecentcalllast):

File“C:\Python24\Lib\site-packages\mod_python\apache.py”,line299,inHandlerDispatch

result=object(req)

File“c:\django_src\django\core\handlers\modpython.py”,line163,inhandler

returnModPythonHandler()(req)

File“c:\django_src\django\core\handlers\modpython.py”,line125,in__call__

ifsettings.ENABLE_PSYCO:

File“c:\django_src\django\conf\__init__.py”,line27,in__getattr__

self._import_settings()

File“c:\django_src\django\conf\__init__.py”,line54,in_import_settings

self._target=Settings(settings_module)

File“c:\django_src\django\conf\__init__.py”,line82,in__init__

raiseEnvironmentError,“Couldnotimportsettings‘%s’(Isitonsys.path?Doesithavesyntaxerrors?):%s”%(self.SETTINGS_MODULE,e)

EnvironmentError:Couldnotimportsettings‘myproject.settings’(Isitonsys.path?Doesithavesyntaxerrors?):Nomodulenamedmyproject.settings

这是开始配置django+apache最容易遇到的问题,:D。

解释:

这是因为apache在系统目录下找不到myproject/settings.py文件。

首先检查PythonPath设置的路径是否正确:

PythonPath"sys.path+['c:/django']"

注意,这个'c:/django'路径实际是我们的项目路径c:/django/myproject的上一级目录!不要写错了。

增加的配置行

#mysite目录路径:c:/django/myproject,

#但是对于PythonPath,必须设置成这个目录的上一级目录!

#thissiteurl:http://localhost:80/mysite/

<Location"/mysite/">

SetHandlerpython-program

PythonPath"sys.path+['c:/django']"

PythonHandlerdjango.core.handlers.modpython

SetEnvDJANGO_SETTINGS_MODULEmyproject.settings

PythonInterpretermysite

PythonDebugOn

</Location>

3.2常见错误3

在使用django里面使用sqlite数据库的时候,由于采用的是文件数据库,在启动apache的时候,由于apache的用户权限问题,导致无法正确加载数据库文件,在访问http://localhost:80/mysite/的时候,可能会报找不到session表的错误。

懒得折腾文件权限问题,直接将django的数据库改用mysql即可。

相关推荐