在apache上部署django 程序
2011-09-21 15:56:38| 分类: python & django | 标签:apache |字号 订阅
(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
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-programPythonHandler django.core.handlers.modpythonSetEnv DJANGO_SETTINGS_MODULE myblog.settings #配置项目的setttingsPythonDebug OnPythonPath "['/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-programPythonHandler django.core.handlers.modpythonSetEnv DJANGO_SETTINGS_MODULE myblog.settingsPythonDebug OnPythonPath "['/home/zhulp/workspaces'] + sys.path"PythonInterpreter myblog</Location><Location "/ad" >SetHandler python-programPythonHandler django.core.handlers.modpythonSetEnv DJANGO_SETTINGS_MODULE myproject2.settingsPythonDebug OnPythonPath "['/home/zhulp/workspaces'] + sys.path"PythonInterpreter myproject2</Location>
<Location "/media/" > #将站点的特定部分关闭mod_pythonSetHandler None</Location>
<LocationMatch "\.(jpg|gif|png)$" > # 以.jpg .gif .png 结尾的URL屏蔽掉SetHandler None</LocationMatch>
</VirtualHost>