如何替换/更新Apache使用的expat库的版本?

时间:2011-11-09 21:50:51

标签: python apache segmentation-fault mod-wsgi expat-parser

(免责声明:我刚开始使用Linux,并且在配置Apache和Python方面没有太多经验。)

我有一个相当普遍的问题,在这里有更深入的解释http://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary。基本上,我99%确定我的主要问题是我的Apache使用的是expat库的1.95.7版本,而我的Python使用的是expat库的2.0.1版本;因此,当我一起使用它时,我会遇到分段错误。

正如页面最底部的链接所解释的那样,我需要将Apache使用的expat库的版本替换/更新为Python使用的版本。我该怎么做? (请记住,我对这类事情缺乏经验。)

编辑:此问题已得到解决。下面我记录了我为安装Apache所做的一切,从源代码构建Python,安装mod_wsgi,并为我的参考以及遇到类似问题的其他人解决了可怕的expat问题。

1)用Wubi安装Ubuntu

安装Apache

2)在Ubuntu上,下载了Apache Unix Source httpd-2.2.21.tar.gz

3)从Apache HTTPDd tarbell中提取源代码:

gzip -d httpd-2.2.21.tar.gz
tar xvf httpd-2.2.21.tar

4)从解压缩目录中配置Apache HTTPd源树:

sudo ./configure --prefix=/usr/local/apache2

5)构建构成Apache HTTPd包的各个部分:

sudo make

6)在我在步骤4中指定的目录下安装了包

sudo make install

7)启动Apache HTTP Server:

sudo /usr/local/apache2/bin/apachectl -k start

8)检查了localhost并打印出“It works!”

9)停止了Apache HTTP Server:

sudo /usr/local/apache2/bin/apachectl -k stop

从源代码安装Python

10)获取构建任何东西所需的所有常见包(例如编译器等)

sudo apt-get install build-essential

11)在/ etc / apt中编辑sources.list文件,将文件中包含的完全相同的“deb”行添加到结尾,除了“deb-src”:

sudo nano /etc/apt/sources.list

12)更新了apt-get以识别变化:

sudo apt-get update

13)获取构建Python所需的所有库:

sudo apt-get build-dep python2.7

14)下载了python源代码Python-2.7.2.tgz,将其解压缩,并从目录中运行以下内容:

sudo ./configure --enable-shared --prefix=/usr/local

15)构建Python:

sudo make

16)已安装的Python:

sudo make install

安装mod_wsgi

17)下载mod_wsgi源代码tar ball mod_wsgi-3.3.tar.gz

18)从解压缩目录中解压缩并配置了python:

sudo ./configure --with-apxs=/usr/local/apache2/bin/apxs \
  --with-python=/usr/local/bin/python2.7

19)构建配置包:

sudo make

20)安装在Apache模块中:

sudo make install

21)下载了Django-1.3.1.tar.gz

22)提取的文件:

tar xzvf Django-1.3.1.tar.gz

23)从目录中安装了Django项目:

sudo python setup.py install

24)编辑Apache httpd.conf文件:

sudo nano /usr/local/apache2/conf/httpd.conf

在文件末尾添加了以下指令:

LoadModule wsgi_module /usr/local/apache2/modules/mod_wsgi.so
WSGIScriptAlias / /usr/local/lib/python2.7/site-packages/django/test.wsgi
<Directory /usr/local/lib/python2.7/site-packages/django>
Order deny,allow
Allow from all
</Directory>

25)在django项目目录中创建了一个测试文件:

sudo nano /usr/local/lib/python2.7/site-packages/django/test.wsgi

在文件中添加了以下内容:

def application(environ, start_response):
    status = '200 OK'
    output = 'Hello World!'
    response_headers = [('Content-type', 'text/plain'),
    ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

26)启动Apache:

sudo /usr/local/apache2/bin/apachectl -k start

27)经过测试的localhost,它打印出“Hello World!”

28)停止了Apache:

sudo /usr/local/apache2/bin/apachectl -k stop

测试可怕的外籍人士问题:

29)编辑test.wsgi文件:

sudo nano /usr/local/lib/python2.7/site-packages/django/test.wsgi

在文件顶部添加了以下内容:

import pyexpat

30)启动Apache:

sudo /usr/local/apache2/bin/apachectl -k start

31)打印出“Hello World!”有一位上帝。

32)停止了Apache:

$ sudo /usr/local/apache2/bin/apachectl -k stop

1 个答案:

答案 0 :(得分:1)

正在寻找this?这是众所周知的 - 我自己已经这样做了几次。