Как заменить / обновить версию библиотеки экспатов, используемую Apache? - PullRequest
0 голосов
/ 10 ноября 2011

(Отказ от ответственности: я только начал использовать 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

1 Ответ

1 голос
/ 10 ноября 2011

Ищете это ? Это довольно хорошо известно - я сам пару раз следовал этому.

...