Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Редактор vi
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!

Сборка mod_python

Общие замечания

Современный mod_python не поддерживает Apache 1.3. Вам понадобится Apache старше 2.0.

Сборка mod_python

В сборке mod_python очень прост.

Наиболее ценными являются две опции конфигурирования:

./configure --prefix=$inst_pref \
            --with-apxs=$ap_pref/bin/apxs

Опция --prefix понадобится вам для установки компонентов mod_python в нестандартную директорию. (Даже при её указании модули Python'а будут установлены в дерево библиотек Python'а, имейте это ввиду.)

Опция --with-apxs понадобится, если ваш сервер установлен в нестандартную директорию.

Трудности

Ничего не работает

Mod_python требует поддержки нитей. Если сервер собран без поддержки нитей, то при старте вы увидите грозное сообщение об ошибке на подобии этого:

Cannot load /usr/home/c/local/modules/mod_python.so into server:
 /usr/home/c/local/modules/mod_python.so:
 Undefined symbol "pthread_attr_init"

(Оно выдаётся в одну строку.)

Решается проблема очень просто: вам надо заставить Apache загрузить библиотеку libc_r.so. Для этого вы можете установить переменную окружения:

export LD_PRELOAD=/usr/lib/libc_r.so

Или просто добавить эту инструкцию в скрипт envvars (который выполняется скриптом apchectl перед запуском сервера) или, на худой конец, непосредственно в apchectl.

Сервер запустился но пример из документации не работает

Mod_python снабжён превосходной документацией, но компактность изложения не прощает невнимательности. Если вы пробежитесь по документации и попытаетесь запустить пример со страницы http://www.modpython.org/live/current/doc-html/inst-testing.html, то скорее всего вы получаете в окне браузера ошибку:

...
ImportError: No module named mptest

Это значит, что модуль не может быть найден. Выхода два: либо разместите модуль там, где Python сможет его найти, либо добавьте в пути для поиска модулей каталог, где размещаете свои скрипты. Второй способ представляется мне более разумным. Просто добавьте в конфигурационный файл сервера инструкцию:

PythonPath "sys.path + ['/usr/home/a/work/python/lib']"

(Путь, естественно, замените на свой.)

Всё. Думаю, что тестовый пример у вас заработал. Можно двигаться дальше.

Apxs не работает

Утилита apxs написана на Perl, если в системе нет Perl, то Apache соберётся, Python соберётся, но вот apxs работать не будет и mod_python не соберётся. Самое простое решение: поставить Perl.

Эта страница набрала немалую популярность, её посещает множество людей, поэтому я решил провести небольшое исследование. Если у вас есть комментарий, если вы сочли полученную информацию полезной, не полной, или вообще бесполезной, вы можете высказать своё мнение, пожелания, дополнения.

Если вы ожидаете получить от меня ответ или разъяснение, пожалуйста укажите e-mail.
Ваше сообщение не появится на странице, а просто отправится мне.

© 1999 − 2010 Мичурин Алексей — http://www.michurin.com.ru/