Midgard представляет собой независящую от платформы среду, управляемую веб-сервером Apache и доступную посредством браузера. Это делает его идеальным для провайдеров и Интернет-компаний, нуждающихся в средствах для создания и поддержки динамических веб-приложений, хранящих информацию в базе данных и контролируемых сценариями на языке PHP. Midgard хорош как для поддержки небольших сайтов, так и крупных серверов: тестирование, проведенное Jean-Pierre Arneodo, показало, что Midgard прекрасно справляется с базами данных, содержащими более 800,000 статей.
Основная задача, которую позволяет решить Midgard, может быть сформулирована так: эффективное взаимодействие веб-дизайнера, программиста, редактора и поставщика информации при создании и поддержке часто обновляемого веб-сайта. Midgard позволяет отделить оформление сайта (стиль) от его структуры (адресное пространство) и содержимого (публикуемые документы). Ответственность за воссоединение трех составных частей он берет на себя, позволяя каждой группе разработчиков действовать независимо друг от друга.
Технически Midgard реализован в виде трех модулей:
Для того, чтобы не писать все вызовы вручную, создана Система Администрирования Midgard, которая написана на самом Midgard и позволяет создавать и поддерживать сайты удаленно, используя любой броузер (вплоть до текстового Lynx).
Все рекомендации были проверены на SuSE Linux разных версий (6.0, 6.1, 6.2), GNU/Debian 2.0 и RedHat Linux 6.1.
1. Установка Apache. Хотя поддержка русского языка интегрирована в основной код Midgard, сама система не занимается перекодировками текстов. При использовании обычного Apache могут возникнуть несколько серьезных проблем: от непроставления Charset в Content-Type документов, до смешения кодировок в базе данных из-за отсутствия механизма обратного перекодирования пришедших от пользователя данных. Так что я настоятельно рекомендую для русской версии использовать Russian Apache Алексея Тутубалина.
Apache должен быть скомпилирован с поддержкой модуля mod_so, чтобы разрешить динамическую загрузу модулей. Соответственно, компиляция динамических модулей Midgard'а будет опираться на утилиту apxs из Apache.
2. Установка MySQL. В версии 1.2.5 Midgard умеет работать только с одним сервером баз данных - MySQL. Эта ситуация должна измениться с выходом ODBC-совместимой версии Midgard 2.0. А пока - проследите внимательно, чтобы в вашей установке MySQL присутствовала библиотека libmysqlclient.so.6, которая нормально создается при сборке MySQL из исходных текстов, но может отсутствовать в некоторых RPM-ах. Проверить это очень просто:
$ ldconfig -p | grep libmysqlclient
При установке MySQL из исходных текстов не забудьте включить путь к созданным библиотекам в /etc/ld.so.conf и запустить /sbin/ldconfig как root для обновления кэша библиотек.
3. Установка libmidgard. Сейчас можно начать установку базовой библиотеки Midgard - libmidgard. Для этого необходимо набрать:
$ ./configure $ make $ make install
Для поддержки русского языка ./configure нужно передать опцию --with-midgard-lang=russian и Midgard автоматически настроится на работу с русскоязычными документами.
После установки (make install) библиотека libmidgard окажется в /usr/local/lib, если вы не указали другой --prefix в опциях ./configure. Так что нужно еще раз обновить кэш библиотек.
4. Установка mod_midgard. Установка модуля для Apache:
$ ./configure $ make $ make install $ make conf
Последняя команда дополняет конфигурационный файл Apache опциями Midgard. Если ./configure не находит Apache и libmidgard, то можно ему подсказать опциями --with-apache=DIR (apxs должен быть в DIR/bin) и --with-midgard=DIR (midgard.h должен быть в DIR/include, а библиотека - в DIR/lib).
После установки в каталоге libexec Apache окажутся mod_midgard.so и midgard-root.php3. Если ваш каталог с модулями называется иначе (в RedHat 6.1 - modules), то необходимо подправить файл конфигурации Apache:
MidgardRootfile libexec/midgard-root.php3,причем этот файл должен быть доступен для чтения пользователю, под которым исполняется Apache. На RedHat 6.1 пришлось прописать
MidgardRootfile /usr/lib/apache/midgard-root.php3из-за того, что каталог modules оказался символической ссылкой, по которой пользователю nobody было запрещено обращаться.
На этом этапе проблемы могут быть только с отсутствием libmidgard и libmysqlclient в кэше библиотек (проверьте /etc/ld.so.conf и перезапустите /sbin/ldconfig).
Midgard добавляет дополнительный модуль в стандартную поставку PHP (сейчас версии 3.0.12) и в синтаксический и лексический анализаторы PHP, поэтому необходимо полностью заменить имеющийся в системе PHP на версию с поддержкой Midgard. Вся функциональность PHP при этом сохранится. Единственное известное несогласование касается обработки последовательности &<? в HTML-коде, что встречается в PHPMyAdmin - при возникновении ошибки нужно переставить местами параметры скрипта PHPMyAdmin в
<a href="sql.php3?sql_query=<?php echo urlencode("SELECT * FROM
$table");?>&pos=0&<?php echo $query;?>"> ... </a>
на
<a href="sql.php3?<?php echo $query;?>&sql_query=<?php echo
urlencode("SELECT * FROM
$table");?>&pos=0"> ... </a>
потому что в противном случае в результирующий HTML-код уйдет такая строка:
sql.php3?sql_query=SELECT+%2A+FROM+country&pos=0&<?php echo $query;?>
Установку Midgard-PHP лучше всего производить через утилиту setup, отвечая на вопросы установочного скрипта. Необходимо ответить положительно на компиляцию модуля для Apache через apxs, на включение модуля Midgard и для русской версии выбрать язык Midgard'а russian (при этом автоматически включится поддержка mod_charset, входящий в состав Russian Apache. Если это не нужно, то отредактируйте ./do-conf, упоминаемый ниже, и перезапустите конфигурацию). Также не забудьте включить поддержку MySQL.
$ ./setup $ make $ make install
Конкретный набор параметров для ./configure после запуска ./setup будет сохранен в файле ./do-conf, которые и рекомендуется впоследствии использовать для переконфигурирования PHP.
6. Создание базы данных. Для начала работы необходимо создать базу данных в MySQL. Для этого предназначен пакет midgard-data, который содержит слепок базы данных с системой администрирования и демострационным сайтом. Если устанавливается русскоязычная версия, то необходимо использовать пакет russian-midgard с локализованной версией системы администрации (попутно с исправленными ошибками, найдеными после выпуска английской версии и улучшенной поддержкой адресного пространства). Последовательность действий:
$ mysqladmin create midgard $ mysql midgard <midgard.sql (или <midgard-ru.sql)
Теперь создадим пользовательскую запись для Midgard в MySQL с привилегиями для выполнения SELECT, INSERT, UPDATE и DELETE:
$ mysql mysql
mysql> INSERT INTO db VALUES( 'localhost', 'midgard', 'midgard',
'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', 'N');
mysql> INSERT INTO user VALUES( 'localhost', 'midgard', Password('midgard'),
'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');
После этого база готова к доступу с localhost под именем midgard и паролем midgard. Эти умолчания, конечно, следует поменять, но обязательно согласовать их с соответствующими настройками в httpd.conf Apache.
В пакете midgard-data также находятся изображения, необходимые для системы администрирования и демо-сайта. Их нужно поместить в каталог c документами Apache.
7. Настройка Apache. Последний шаг перед запуском системы - настройка веб-сервера Apache. Если вы не планируете использовать Midgard в виртуальных серверах, то настройка такова:
1) Имя сервера, указанное в директиве ServerName файла конфигурации Apache, должно быть помещено в базу данных Midgard вместо установленного там по умолчанию localhost:
$ mysql midgard mysql> UPDATE host SET name='имя-сервера',prefix='/имя-каталога' WHERE id=1; mysql> exit;
2) Параметры доступа к базе данных, установленные на предыдущем шаге, должны быть повторены в директиве MidgardDatabase в файле конфигурации Apache:
MidgardDatabase имя-базы имя-пользователя пароль
По умолчанию, если вы ничего не меняли, имя-базы, имя-пользователя и пароль равны midgard.
Все тоже самое можно выполнить и для виртуальных серверов, только поместив соответствующие директивы внутри каждого блока VirtualHost.
Теперь можно запускать Apache и обращаться браузером по адресу http://имя-сервера/имя-каталога.
Поскольку система администрирования требует авторизации доступа, то необходимо
указать имя пользователя и пароль (изначально в системе есть только администратор,
чьи имя и пароль - admin и password).
|
|