Написание сайта с использованием mod_python состоит из двух этапов: конфигурирование сервера (apache) и собственно написание кода.
Вначале установим модуль, если его еще нет:
aptitude install libapache2-mod-python
a2enmod python
Подредактируем, например, на Debian файл /etc/apache2/sites-available/default :
1. Конфигурация сервера:
Вначале установим модуль, если его еще нет:
aptitude install libapache2-mod-python
a2enmod python
Подредактируем, например, на Debian файл /etc/apache2/sites-available/default :
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /var/www/> Options Indexes MultiViews AllowOverride None Order allow,deny allow from all AddHandler mod_python .py #говорит апачу передавать обработку файлов *.py в mod_python PythonHandler index #говорит, в каком файле находится обработчик хэндлеров. DirectoryIndex index.py #указывает, какой файл отображается по-умолчанию в директории </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On #включает выведение ошибок в браузер - удобно пр иотладке DirectoryIndex index.py CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Активируем виртуалхост (если он не активен) и перезапускаем веб-сервер, чтобы изменения встепили в силу:
a2ensite default
service apache2 restart
a2ensite default
service apache2 restart
2. Написание кода:
from mod_python import apache #импорт класса apache def handler(req): #функция обработки хэндлера req.content_type = "text/html" #задаем тип содержимого веб-страницы req.send_http_header() #посылка дефолтового хэдера html-страницы req.write("Hello World!") #отправляем Hello World! на страницу return apache.OK #рендеринг страницы с кодом ОК
Называем файл index.py и сохраняем в директорию виртуал-хоста (в нашем примере это /var/www), не забывая сменить хозяина файла на www-data. Перед проверкой нужно удалить дефолтовый файл index.html из директории виртуалхоста и удалить русскоязычные буквы из питоновского файла - иначе будет ругаться.
Вот так выглядит Hello World на mod_python:
Вот так выглядит Hello World на mod_python: