2008年07月25日

Django官方推荐的部署方式是mod_python,所以,如果没有其他理由,建议用这种部署方法。我参考了官方的文档:

http://www.djangoproject.com/documentation/modpython/。本说明基于Windows平台,其他平台也类似。

1、安装
假设Python和Django已经装好,需要安装的软件是Apache2.2和mod_python3.3,软件版本按照20080725的最新稳定版。

从http://httpd.apache.org/download.cgi下载Win32 Binary including OpenSSL 0.9.8h (MSI Installer): apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi,安装,基本按默认

就成。

从http://httpd.apache.org/modules/python-download.cgi选择Apache Mod_python 3.3.1下面的Win32 Binaries进去,会进到某个镜像,我这里是

http://apache.mirror.phpchina.com/httpd/modpython/win/3.3.1/,根据Python和Apache的版本选择需要下载的文件,我选的是mod_python-3.3.1.win32-py2.5-

Apache2.2.exe。安装,没什么好说的。

2、应用目录结构
假设开发的应用是flmn.com,文档存在E:/workspace目录下,设计目录结构如下:
flmn
–media
—-admin
——css
——img
——js
—-css
—-img
—-js
–djflmn
—-app1
——__init__.py
——admin.py
——models.py
——views.py
—-__init__.py
—-manage.py
—-settings.py
—-urls.py

解释:整个站点放在E:/workspace/flmn目录下,子目录media用来存静态文件,而djflmn就是Django应用啦,开发应用和平时一样,只是引用的静态文件要用/media/*这样的路径。在media目录里,admin目录是从C:\Python25\Lib\site-packages\django\contrib\admin\media\拷来的admin静态文件,如果你不用Django的admin功能,这个就省了,另外的css、img、js放djflmn应用的静态文件。在djflmn的settings.py里,需要:MEDIA_URL = ‘/media/’ ADMIN_MEDIA_PREFIX = ‘/media/admin/’。

3、配置

打开http.conf,在一堆LoadModule语句后加入:LoadModule python_module modules/mod_python.so。我喜欢用虚拟主机的配置,这样便于配置多个互不影响的站点,

在文件最后找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释#。

打开extra/httpd-vhosts.conf,加入:
<VirtualHost *:80>
    ServerAdmin webmaster@flmn.com
    DocumentRoot "E:/workspace/flmn"
    ServerName www.flmn.com
   
    <Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE djflmn.settings
        PythonDebug Off
        PythonPath "['E:/workspace/flmn'] + sys.path"
    </Location>
   
    <Location "/media">
        SetHandler None
    </Location>
   
    <Directory "E:/workspace/flmn">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

</VirtualHost>

这里配置是参考Django的官方网站,不多说了。官方网站上说到这个:PythonOption django.root /mysite,如果你像我一样,直接上来就放在根下,就别PythonOption django.root / 多此一举了,因为我一开始那样配,出了莫名其妙的问题。

最后,为了开发方便,修改C:\Windows\System32\drivers\etc\hosts文件,加入一行:127.0.0.1       www.flmn.com,有朝一日应用上线了,要把这行删了,要不dns不到实际的服务器。