(Отказ от ответственности: я только начал использовать Linux и у меня нет большого опыта по настройке Apache и Python.)
У меня довольно распространенная проблема, которая более подробно объясняется здесь http://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary. По сути, я на 99% уверен, что моя главная проблема заключается в том, что мой Apache использует версию 1.95.7 библиотеки экспатов, тогда как мой Python использует версию 2.0.1 библиотеки экспатов; таким образом, когда я использую их вместе, я получаю ошибку сегментации.
Как объясняется в ссылке в самом низу страницы, мне нужно заменить / обновить версию библиотеки экспатов, которая используется Apache, до версии, используемой Python. Как бы я это сделал? (Имейте в виду, я очень неопытен с такими вещами.)
РЕДАКТИРОВАТЬ: Эта проблема была решена. Ниже я задокументировал все, что я сделал для установки Apache, сборки Python из исходного кода, установки mod_wsgi и решения страшной проблемы с экспатом для моей справки и для тех, кто сталкивается с подобной проблемой.
1) Установленная Ubuntu с Wubi
Установка Apache
2) В Ubuntu скачал Apache Unix Source httpd-2.2.21.tar.gz
3) Извлечен источник из tarbell Apache HTTPDd:
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) Запущен HTTP-сервер Apache:
sudo /usr/local/apache2/bin/apachectl -k start
8) Проверено localhost и напечатано "Это работает!"
9) Остановлен HTTP-сервер Apache:
sudo /usr/local/apache2/bin/apachectl -k stop
Установка Python из исходного кода
10) Получил все общие пакеты, необходимые для сборки чего-либо (например, компилятор и т. Д.)
sudo apt-get install build-essential
11) Отредактировал файл sources.list в / etc / apt, добавив в конец точно такие же строки «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