在apache上部署django 程序

来源:互联网 发布:2017最新资金盘源码 编辑:程序博客网 时间:2024/06/05 19:51

在apache上部署django 程序  

2011-09-21 15:56:38|  分类:python & django |  标签:apache  |字号 订阅

1.Apache和mod_python
(1)安装apache
下载地址: http://httpd.apache.org/
1).解压缩
  sudo tar zxvf httpd-2.2.17.tar.gz  ~/http-2.2.17
2).进入~/apache目录,执行
  sudo ./configure --prefix=/usr/server/apache2 --enable-module=so
  sudo make
(2)安装mod_python
下载地址:http://www.modpython.org/
1).解压缩文件
2).安装python的开源文件
      sudo apt-get install python-dev
3)、修改下载包中connobject.c中的BUG
需修改mod_python-3.3.1/src/connobject.c中   
!(b == APR_BRIGADE_SENTINEL(b)   为   !(b == APR_BRIGADE_SENTINEL(bb) 
4)、编译mod_Python
cd mod_python-3.3.1
./configure --with-apxs=/usr/server/apache2/bin/apxs --with-python=/usr/bin/python
5).执行
sudo make 
&sudo make install
成功后/usr/server/apache2/modules目录下应该会出现mod_python.so  sudo make install

(3)在apache中加载mod_python模块
1)、修改Apache配置文件/server/apache2/conf/httpd.conf
        首先赋权限sudo chmod 7 httpd.conf
2).增加装载mod_python.so的配置行:
    LoadModule python_module /usr/server/apache2/modules/mod_python.so
      设置MaxRequestsPerChild 1,这样可以在开发阶段不用重启Apache进行测试
3.配置根目录

<Location "/">                     #设置http://localhost:8010/  
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE myblog.settings      #配置项目的setttings
    PythonDebug On
    PythonPath "['/home/zhulp/workspaces'] + sys.path"   #配置项目的工作路径
</Location>
<Location "/media/">
     SetHandler None
</Location>
<LocationMatch "\.(jpg|gif|png)$">
    SetHandler None
</LocationMatch>
(5)修改文件根目录之后,你就可以将你的网页存放在新设的目录下了
在httpd.conf中
DocumentRoot "/home/zhulp/workspaces"
<Directory "/home/zhulp/workspaces">

(6)在同一个 Apache 的实例中运行多个 Django 程序

<VirtualHost 127.0.0.1:8010>
    ServerName 127.0.0.1:8010
     
    <Location "/myblog">
     SetHandler python-program
     PythonHandler django.core.handlers.modpython
     SetEnv DJANGO_SETTINGS_MODULE myblog.settings
     PythonDebug On
     PythonPath "['/home/zhulp/workspaces'] + sys.path"
        PythonInterpreter myblog
    </Location>
    <Location "/ad">
     SetHandler python-program
     PythonHandler django.core.handlers.modpython
     SetEnv DJANGO_SETTINGS_MODULE myproject2.settings
     PythonDebug On
     PythonPath "['/home/zhulp/workspaces'] + sys.path"
        PythonInterpreter myproject2
    </Location>

    <Location "/media/">     #将站点的特定部分关闭mod_python
SetHandler None
    </Location>

    <LocationMatch "\.(jpg|gif|png)$">  # 以.jpg .gif .png 结尾的URL屏蔽掉
        SetHandler None
    </LocationMatch>

</VirtualHost>