Установка Midgard

Автор: Александр Боковой.

Введение. Что такое Midgard.

Midgard представляет собой независящую от платформы среду, управляемую веб-сервером Apache и доступную посредством браузера. Это делает его идеальным для провайдеров и Интернет-компаний, нуждающихся в средствах для создания и поддержки динамических веб-приложений, хранящих информацию в базе данных и контролируемых сценариями на языке PHP. Midgard хорош как для поддержки небольших сайтов, так и крупных серверов: тестирование, проведенное Jean-Pierre Arneodo, показало, что Midgard прекрасно справляется с базами данных, содержащими более 800,000 статей.

Основная задача, которую позволяет решить Midgard, может быть сформулирована так: эффективное взаимодействие веб-дизайнера, программиста, редактора и поставщика информации при создании и поддержке часто обновляемого веб-сайта. Midgard позволяет отделить оформление сайта (стиль) от его структуры (адресное пространство) и содержимого (публикуемые документы). Ответственность за воссоединение трех составных частей он берет на себя, позволяя каждой группе разработчиков действовать независимо друг от друга.

Технически Midgard реализован в виде трех модулей:

  1. Библиотека libmidgard, реализующая промежуточный слой между сервером баз данных (в версии 1.2.5 - это MySQL, в 2.0 будет ODBC-совместимость) и ответственная за разграничение доступа, выборку из базы отдельных блоков - статей, разделов, страниц, стилевых элементов, пользователей и др.
  2. Модуль Midgard для PHP3 и специальное расширение синтаксиса PHP для упрощения вывода значений переменных PHP прямо в HTML-коде служат для написания активных страничных элементов и выборки публикуемых материалов из базы данных. Этот модуль в версии 2.0 можно будет заменить на аналогичный для, например, Perl или Java, и использовать совершенно другой язык сценариев на страницах сайта.
  3. Модуль mod_midgard для Apache, который преобразует запросы пользователя в виде URI в обращения к базе данных черех libmidgard и, собственно и занимается сборкой страниц из стилевых элементов и последующим исполнением получившегося блока как сценария на PHP.

Для того, чтобы не писать все вызовы вручную, создана Система Администрирования 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).


 Main  Books  Ukraine  Immigration  Search  Разное  SYSTEM


Украинская баннерная сеть

Hosted by   elektrod.com.ua