转:apache+python+mod_python+django 编译安装指南

   2023-02-09 学习力0
核心提示:apache+python+mod_python+django 编译安装指南1、本文将知道你在 linux 下使用源码包安装apache 2.2.16python 2.7mod_python 3.3.1django svn trunk version 但是,因为无法得知编译过程中得到的出错信息,故本文默认编译过程全部顺利通过,任何疑问请在文后

apache+python+mod_python+django 编译安装指南

1、本文将知道你在 linux 下使用源码包安装

apache 2.2.16

python 2.7

mod_python 3.3.1

django svn trunk version

但是,因为无法得知编译过程中得到的出错信息,故本文默认编译过程全部顺利通过,任何疑问请在文后讨论区中进行。

2、本文中介绍的命令前面的“

”仅代表命令提示符,请不要将其连同命令一起输入。

一、安装 apache 2.2.16

1、下载请到

http://httpd.apache.org

下载最新的 httpd 服务器,只要版本跟 2.2.16 相差不大,就可以参考本文进行配置安装。

2、解压

 tar xvfz httpd-2.2.16.tar.gz

上面命令会在当前目录得到 httpd-2.2.16 目录,这个目录就是 apache 2.2.16 的源码目录。

对于解压命令的详细介绍,请看我的这篇文章:

3、Configure

编译安装源代码的过程一般都是 configure/make/make install 三步曲,apache 也遵循这个规则。

进入 httpd-2.2.4 目录:

 cd httpd-2.2.16

执行如下命令查看 configure 的帮助信息

 ./configure --help

安装的全部细节都是由 configure 以及它的参数进行控制的。

如果你刚开始尝试从源代码包安装软件,请尽快习惯 configure 之后冗长复杂的参数!

下面是我推荐的 configure 参数,它会将 apache 安装到 /opt/apache 下面,并且带所有常用的 apache Modules:

 ./configure --prefix=/opt/apache --with-config-file-path=/opt/apache/conf  --enable-mods-shared=most --enable-track-vars --enable-cgi --enable-so --enable-file-cache --enable-disk-cache --enable-cache --enable-mem-cache --enable-dumpio --enable-logio --enable-mime-magic --enable-headers --enable-usertrack --enable-version --enable-ssl --enable-http --enable-rewrite --enable-proxy --enable-proxy-connect --enable-proxy-http --enable-proxy-ftp --enable-proxy-ajp --enable-proxy-balancer

当然,安装所有扩展模块意味着将 apache 功能扩展到极限,但如果你不会配置这些模块,或者置之不理,他们很可能会给你带来不必要的麻烦或者安全隐患。

(选型中“--enable-so”参数以允许Apache使用DSO,以便稍后mod_python的编译)

4、make / make install

真正漫长的步骤开始了(我指时间上),下面命令开始编译过程:

 make

等待编译完成之后,执行:

 make install

会将 apache 安装到第三步配置的 /opt/apache 目录中。

5、配置 apache

配置 apache 的 httpd.conf 文件是一项大工程,互联网上有很多高人的文章指导你进行正确必要的配置,我在这里就不赘述了。

如何将 apache 加入到系统服务中,请看我的这篇文章:

将 apache 加入 linux 系统服务

6、已知问题及解决方法

如果你遇到类似下面的 .so 权限错误:

httpd: Syntax error on line 63 of /opt/apache/conf/httpd.conf: Cannot load /opt/apache/modules/mod_python.so into server: /opt/apache/modules/mod_python.so: cannot restore segment prot after reloc: Permission denied

说明是你的 .so 文件权限不够,很可能是你的 SELinux(如果你有装)的权限检查没有通过导致的。

使用下面命令可以将 .so 文件定义为共享类库文件,就可以通过权限检查:

 chcon -t texrel_shlib_t /opt/apache/modules/*.so

注意:千万别将 *.so 权限改为 777,具体原因请看我的这篇文章:解决 SELinux 带来的 PHP 权限问题

上面安装 apache 的过程讲述很详细,之后 python / mod_python 将只给出必要解释和推荐的 configure 命令。

二、安装 python 2.7

1、编译安装

www.python.org下载最新的 python 源码包,解压得到目录,进入该目录,执行:

 ./configure --prefix=/opt/python/2.7

 make

 make install

使用下面命令将 python 添加到 /usr/bin 中,并且区别其他版本的 python 执行文件,使它们可以共存

 ln /opt/python/2.7/bin/python /usr/bin/python2.7

以后可以将新版本的 python 编译到 /opt/python/[版本]中,使用上面命令生成对应版本的链接。

2、设置运行命令

这里需要注意一下执行程序,现在的 python 2.7 的执行程序是 python2.7,如果想进入 python 2.7 的 shell,需要键入 python2.7,如果想系统使用 python 2.7 执行 .py 脚本,需要在脚本第一行将 python 运行命令修改为:

!/usr/bin/python2.7

如果你觉得以后默认使用 python 2.7 就好,那么可以:

 rm -f /usr/bin/python

 ln /opt/python/2.7/bin/python /usr/bin/python

这样执行 python 进入的就是 2.7 了。

三、安装 mod_python

1、到 www.modpython.org

 下载源码包,解压得到目录,进入该目录,执行:

 ./configure --with-apxs=/opt/apache/bin/apxs --with-python=/usr/bin/python2.7

 make

 make install

------------------

注意这里有一个bug


connobject.c: In function '_conn_read':

connobject.c:142: error: request for member 'next' in something not a structure

or union

apxs:Error: Command failed with rc=65536

.

make[1]: *** [mod_python.so] Error 1

make[1]: Leaving directory `/usr/src/rpm/BUILD/mod_python-3.3.1/src'

make: *** [do_dso] Error 2

需修改mod_python-3.3.1/src/connobject.c中

!(b == APR_BRIGADE_SENTINEL(b)

!(b == APR_BRIGADE_SENTINEL(bb)


--------------

完毕之后,mod_python 会在 /opt/apache/modules 中添加 mod_python.so 库文件,并且在 /opt/python/2.7/lib/python2.7/site-packages 中添加 mod_python 包。

如果编译程序没有检测到 apache 和 python,会报错退出。

2、配置 httpd.conf

找到 /opt/apache/conf/httpd.conf 配置文件,在适当位置添加:

LoadModule python_module modules/mod_python.so

记住,modules/mod_python.so 必须有可以通过 SELinux 检查的权限,参看本文第一章第6节的内容!

四、安装 django

这次我们采用 django 的 SVN Head Version(最新开发版本)。

采用这个版本的好处是,官方的任何更新,你只需要运行 svn 进行更新就会得到最新的版本,并且更新即可用。

1、如果系统没有 Subversion,找到装上(过程略)。

2、得到最新版本的 working copy

这里有两个版本可以选择,择其一运行命令:

一是 django 全部源码(文件相当多):

 svn co http://code.djangoproject.com/svn/django

 /source/svn/django

二是 django 的当前最新版本 trunk:

 svn co http://code.djangoproject.com/svn/django/trunk

 /source/svn/django_trunk

3、将 django 源码链接到 python 的 site-packages 公共代码目录中

全部源码版本:

 ln -s /source/svn/django/trunk/django /opt/python/2.5.1/lib/python2.5/site-packages/django

最新版本 trunk:

 ln -s /source/svn/django/django /opt/python/2.5.1/lib/python2.5/site-packages/django

注意一定要带上参数 -s,否则后面调用会出错!

上面的命令只是创建了当前源码目录的一个链接到 site-packages 中,这样每次运行下面命令更新 django 之后,python 调用的都是更新之后的最新版本:

 cd /source/svn/django

 svn cleanup(如果提示locked,执行这一句)

 svn update

4、拷贝 django 管理文件

运行下面命令将管理文件拷贝到 /usr/bin 中,以便随处可以执行该文件:

cp /source/svn/django/trunk/django/bin/django-admin.py /usr/bin/

或者

cp /source/svn/django/django/bin/django-admin.py /usr/bin/

如果运行 django-admin.py 得到如下错误信息:

ImportError: No module named django.core

说明 django-admin.py 运行在了另一个版本的 python 中!

记住,我们的 django 是安装在 python 2.7 中的(/opt/python/2.7),如果你的 python 2.7 执行命令为 python2.7(参考第二章第2节),需要将 /usr/bin/django-admin.py 第一行修改为:

!/usr/bin/python2.7

或者是已经安装 django 的 python 的执行命令。

4、参考文章

官方的安装指南,请参考:

http://www.djangoproject.com/documentation/install/

如何使用 django,请参考官方指南这一部分:

http://www.djangoproject.com/documentation/modpython/

推荐使用 .htaccess 文件,而不是直接修改 httpd.conf 配置文件,因为 .htaccess 更加灵活。

记得将 httpd.conf 配置文件中 AllowOverride 配置项作相应配置(比如 AllowOverride = All)

五、总结

如果完全按照上面的安装步骤进行安装,我们会得到如下内容:

apache 2.2.16 目录:

/opt/apache

python 2.7 目录:

/opt/python/2.7

mod_python.so 位置:

/opt/apache/modules/mod_python.so

django 源码包目录:

/source/svn/django

修改过的文件:

/opt/apache/conf/httpd.conf

如果想更新 django:

 cd /source/svn/django

 svn update


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bearjb2006/archive/2010/07/30/5776462.aspx

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Apache80端口被占用解决办法
    Apache80端口被占用解决办法
    1. win+R,输入 cmd,打开命令行窗口2. 命令行输入netstat -ano3. 找到80端口及对应进程 4. 在任务管理器中的进程处查看与上述80端口对应的PID相同的进程,并关闭。如果没有PID,选择“查看”--"选择列"--勾选“PID”。4. 关闭进程。如果进程为上述系统服务,
    03-08
  • Hadoop中mapreduce运行WordCount程序报错Error:
    这个问题是因为map的方法参数与继承mapper定义的参数类型不一致导致的,应该将Mapper的key参数类型设置成Object,就可以解决这个问题 
    03-08
  • 使用 Apache Hudi 实现 SCD-2(渐变维度)
    使用 Apache Hudi 实现 SCD-2(渐变维度)
    数据是当今分析世界的宝贵资产。 在向最终用户提供数据时,跟踪数据在一段时间内的变化非常重要。 渐变维度 (SCD) 是随时间推移存储和管理当前和历史数据的维度。 在 SCD 的类型中,我们将特别关注类型 2(SCD 2),它保留了值的完整历史。 每条记录都包含有
    03-08
  • 一个用 Python 分析 Apache 日志的故事
    一个用 Python 分析 Apache 日志的故事
    介绍不久前,公司里有人告诉我“我想知道 Apache 的访问日志是否可以用来做一些事情”。数据分析,Apache,发文章,我是初学者,写的不好请见谅。访问日志分析导入模块我正在使用以下模块。# データの処理import pandas as pdimport numpy as np# グラフ表示i
    03-08
  • [转]用apache反向代理解决单外网ip对应内网多个
    用apache反向代理解决单外网ip对应内网多个web主机的问题  转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的。来源地址:http://www.itshantou.com/Servers/web/06/10/44219.html    几年前开始在学校的服务器上建网站,那时
    02-10
  • Apache service named reported the following
    apache启动失败报错:The Apache service named reported the following error: AH00451: no listening sockets available, shutting down . The Apache service named reported the following error: (OS 10055)由于系统缓冲区空间不足或队列已满,不能执行
    02-10
  • struts布局管理---SiteMesh一个优于Apache Tile
    1. SiteMesh的基本原理       一个请求到服务器后,如果该请求需要sitemesh装饰,服务器先解释被请求的资源,然后根据配置文件 获得用于该请求的装饰器,最后用装饰器装饰被请求资源,将结果一同返回给客户端浏览器。 2. 如何使用SiteMesh    这里以st
    02-10
  • linux 安装 apache2.2.31
     Linux下安装和配置Apache 概要:本文介绍在CentOS5.4 Linux中安装和配置Apache2.2.14,并且实现Apache和Tomcat6的整合。文章分为三部分,分别是删除系统自带的Apache、安装Apache2.2.14和配置Apache2.2.14。 文章中介绍的知识也可以在其它版本的Linux中
    02-10
  • Apache CXF使用Jetty发布WebService
    Apache CXF使用Jetty发布WebService
    一、概述Apache CXF提供了用于方便地构建和开发WebService的可靠基础架构。它允许创建高性能和可扩展的服务,可以部署在Tomcat和基于Spring的轻量级容器中,也可以部署在更高级的服务器上,例如Jboss、WebSphere或WebLogic。 CXF提供了以下功能:WebService
    02-10
  • apache下ab.exe使用方法。。 apache ab工具
    自己在cmd中写了半天的路径也没有写对。。最后网上的一个哥们告诉我说没有共同语言了。。。毛线啊 差距确实很大!大能猫死panda早晚干掉你,叫你丫整天嘲讽我!比如我的ab.exe在D盘的wamp文件夹下apache文件夹下bin文件夹下。那么在cmd中可以这么写:"D:\wamp
    02-10
点击排行