0

(免责声明:我刚开始使用 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) 用五笔安装 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 服务器:

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

8)检查本地主机并打印“它工作!”

9) 停止 Apache HTTP 服务器:

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球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)启动阿帕奇:

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

27) 测试本地主机并打印“Hello World!”

28) 停止阿帕奇:

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)启动阿帕奇:

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

31)它打印“Hello World!” 有一个神。

32)停止阿帕奇:

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

1 回答 1

1

这个?这是众所周知的 - 我自己已经关注了几次。

于 2011-11-09T22:04:24.550 回答