(免责声明:我刚开始使用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