Apache DSO mod_ssl mod_perl php mod_auth_nds mod_auth_mysql mod_fastcgi

Введение

В этом документе описывается процесс установки программы веб-сервера Apache и его модулей на веб-сервере Walla Walla College (www.wwc.edu). Этот документ может служить, как полезная рекомендация для выполнения установки. Он рассматривает процесс установки сервера. В частных случаях будут сделаны соответствующие комментарии, но основные шаги будут теми же.

Описание компонентов

Платформа, на которой был установлен веб-сервер: ОС Linux Red Hat 6.1 с ядром версии 2.2.14, запущена на машине с двумя PIII 600, RAID5 и т.п.

Веб-сервер Apache 1.3.12, со следующими модулями:
mod_fastcgi SNAP (также mod_rewrite), для работы с Zope.
Auth-MySQL 2.20
mod_ssl 2.6.2 (Open-SSL 0.9.5)
mod_perl 1.21
PHP 3.0.15
mod_auth_nds 0.3a
История создания документа
v0.91 (5 апреля 2000)
Обновление mod_fastcgi для последней версии.
v0.9 (4 апреля 2000)
Первый окончательный проект
Исправление орфографических и граматических ошибок
v0.1 (март 2000)
Начальный проект

Установка компонентов

Подготовка
Вам будет нужно следующее:
Apache 1.3.12
PHP 3.0.15
GD 1.3 (для работы с GIF файлами)
Исходные тексты
RPM
RPM-devel
GD 1.8.1 (для работы с PNG файлами)
Исходные тексты
RPM-devel
IMAP 4.5+
Исходные тексты
RPM
OpenLDAP 1.2.9+
Исходные тексты
RPM
RPM-devel
mod_perl 1.22+
Требуемые модули для Perl5
MIME::Base64
URI
HTML-Parser
Digest-MD5
libnet
libwww
mod_ssl 2.6.2+
OpenSSL 0.9.5
Исходные тексты
RPM
RPM-devel
RSAREF 2.0
MM 1.0.12
MySQL 3.22.32
mod_auth_nds 0.4
ncpfs 2.2.0.17 Примечание: ядро должно быть скомпилировано с поддержкой протокола IPX.
mod_auth_mysql 2.20
mod_fastcgi SNAP Oct06
Это схема каталогов, которая здесь используется и может быть вам рекомендована:
+ /usr/src
|
+-+ apache
|
+-+ apache-1.3.12
|
+-+ modules
| |
| +-+ mod_perl
| | |
| | +- mod_perl-1.21
| | |
| | +-+ depend
| |   |
| |   +- <модули для perl>
| |
| +-+ mod_ssl
| | |
| | +- mod_ssl-2.6.2-1.3.12
| | |
| | +-+ depend
| |   |
| |   +- openssl-0.9.5
| |   |
| |   +- rsaref-2.0
| |   |
| |   +- mm-1.0.12
| |
| +-+ mod_fastcgi_SNAP
| |
| +-+ php
| | |
| | +- php-3.0.15
| | |
| | +-+ depend
| |   |
| |   +- gd-1.3
| |   |
| |   +- imap-4.5
| |   |
| |   +- openldap-1.2.9
| |
| +-+ mod_auth_nds
| | |
| | +- mod_auth_nds-0.4
| | |
| | +-+ depend
| |   |
| |   +- ncpfs-2.2.0.17
| |
| +-+ mod_auth_mysql
|
+-+ mysql

Проверьте, все ли модули и программы установлены на вашей системе. Отсутствие некоторых компонетов не повредит, но лучше установить все. Вы можете установить и более ранние версии.
mod_ssl

Сборка и установка OpenSSL

mod_ssl требует, чтобы был установлен SSL. Естественный выбор для Linux - OpenSSL. Вы можете устанавить его из пакета RPM (как это сделал я), или скомпилировать из исходных текстов. поступайте, как хотите. Я, например, ставил готовый пакет, впрочем, компиляция из исходных текстов также достаточно проста. Наиболее вероятно, что вы установите его в каталог /usr/local, или оставите его в своем каталоге, но не забудьте указать путь приложениям, которым он необходим.

RPM установит OpenSSL в системный каталог.

Сборка и установка RSAREF 2.0

Создайте каталог для модуля rsaref-2.0 в любом месте. У меня он находится в /usr/src/apache/modules/mod_ssl-blah/depend/. Перейдите в этот каталог.
cd rsaref-2.0 cp -rp install/unix local cd local make mv rsaref librsaref.a
Эти команды должны собрать библиотеку rsaref! Оставьте все здесь и укажите в конфигурационном скрипте путь к библиотеке.

Сборка и установка MM

Распакуйте mm-1.0.12 (или более новую) в подкаталог mod_ssl-ля-ля-ля. Выполните следующие шаги:
cd mm-1.0.12 ./configure --disable-shared make
В результате должна собраться библиотека mm. Как и выше, укажите этот путь, если необходимо, или установите в системный каталог.
Сборка и установка mod_ssl (наконец-то!)
В процессе стандартной процедуры при работе с apxs сначала должен быть скомпилирован Apache, а затем используйте apxs для компиляции модулей, которые вы хотите использовать, и присоедините их к серверу. Однако, mod_ssl должен быть собран с сервером до того, как вы используете apxs. Если mod_ssl собран вместе с сервером, обновите его через apxs без полной перекомпиляции Apache.
Войдите в каталог, где Вы компилируете mod_ssl, и выполните следующую команду конфигурации для начала компиляции:

#!/bin/sh ./configure \ --with-apache=/usr/src/apache/apache_1.3.12 \ --with-ssl \ --with-rsa=../depend/rsaref-2.0/local \ --with-mm=../depend/mm-1.0.12 \ --enable-shared=ssl

Вам не нужно запускать ни 'make', ни что-то еще. Когда мы будем собирать Apache, команда сделает все за нас.

Эта команда дает два примера того, как ваша система может быть установлена. В моем случае, OpenSSL был уже установлен где-то в системе (кажется в /usr/lib или /usr/include). Поэтому я не должен был бы передавать параметры его расположения. Однако, rsa и mm не были в системе, и я собрал их сам и оставил в каталоге исходников (не запуска make вообще). В этом случае вам нужно указать команде configure на соответствующий каталог так, чтобы он нашел заголовочные файлы и библиотеки.

Идем далее, если вы не обновляете Apache (в некоторых случаях вам необходимо проделать предыдущий шаг для новой версии Apache), используйте apxs для обновления или перекомпиляции модуля mod_ssl. Вот какие параметры я дал скрипту:

./configure \ --with-apxs=/apps/apache-1.3.12/bin/apxs \ --with-ssl=../depend/openssl-0.9.4 \ --with-rsa=../depend/rsaref-2.0/local \ --with-mm=../depend/mm-1.0.12

Или команда, описанная выше. Запускаем:
make make install make distclean
и завершаем инсталляцию.
Примечания: MM не требует компиляции mod_ssl. Если у вас появились проблемы во время установки, начните с шага ./configure.
Когда я собирал mod_ssl, у меня появились ошибки, связанные с DBM. Чтобы исправить их, я добавил -lndbm в Makefile:
Запустите вышеупомянутый конфигурационный скрипт.
cd в pkg.sslmod
Отредактируйте makefile и добавте -lndbm к LIBS_SHLIB. Следующим образом:
LIBS_SHLIB=-lm -lcrypt -lndbdm
Надеюсь, это сэкономит вам немного сил.

Apache

Распакуйте архив apache-1.3.12.tar.gz в /usr/src/apache или в другое место. Затем собираем Apache со следующими модулями:
mod_ssl (Чтобы собрать mod_ssl как DSO, сначала компилируем с сервером. Затем обновляем модуль через apxs.)
mod_proxy
mod_so
mod_rewrite (Для использования с Zope)
Конфигурационный файл, который я использовал для сборки Apache:

#!/bin/sh

SSL_BASE=../depend/openssl-0.9.4 \
RSA_BASE=../depend/rsaref-2.0/local \
EAPI_MM=../depend/mm-1.0.12 \
./configure \
--enable-module=ssl \
--enable-module=proxy\
--enable-shared=proxy\
--enable-module=rewrite \
--enable-shared=rewrite \
--prefix=/apps/apache-1.3.12 \
--enable-shared=ssl \
--enable-rule=SHARED_CORE \
--enable-rule=SHARED_CHAIN \
--enable-module=so
Затем запустим
make make certificate make install
Apache должен теперь быть собран и установлен в какой-нибудь каталог. Проверьте, что он запускается с помощью.
/path/to/apache/bin/apachectl start
или
/path/to/apache/bin/apachectl startssl
Надеюсь, все пройдет гладко. Если нет, вернитесь назад и проверьте, что вы ничего не забыли.

MySQL

php также как mod_auth_mysql и возможно mod_perl потребуют, чтобы MySQL был установлен и запущен на вашей системе. Подробности установки MySQL находятся вне контекста этого документа. Скачайте архив и следуйте рекомендациям по установке из файла(ов) INSTALL. Впрочем, это довольно простая процедура. Что-то вроде этого:
./configure make make install
Все должно установиться так, что вы сможете собирать другие модули Apache.

PHP 3.0.15

Мы будем компилировать php-3.0.15, как DSO (отдельный модуль, который может быть загружен и выгружен сервером). В результате, процесс обновления php становится более простым (без перекомпиляции всего (что может быть ужасно, если вы используете много модулей с Apache)).
GD
Наш php использует библиотеку gd для создания изображений. Я использовал старую версию gd (установленную из RPM). Таким образом, мы можем использовать вывод GIF файлов. Это не очень хорошо -, могут быть проблемы с авторскими правами, и таким образом Вы можете использовать версию более новую, чем 1.3, которая поддерживает только PNG файлы.

Чтобы установить компонент в системе, можно взять его из пакета RPM (rpm -i gd*.rpm) или собрать из исходников.
IMAP

Эта процедура похожа на установку gd. Я использовал RPM, т.к. у меня система Red Hat, но установка из исходников тоже очень проста - ./configure;make;make install.
OpenLDAP

Опять мы можем установить OpenLDAP из RPM или из исходников. Я выбрал компиляцию исходных текстов, т.к. последней версии нет в RPM.

./configure make make install
или rpm -i openldap*.rpm

Сборка и установка PHP 3.0.15

Как только вышеупомянутые компоненты установлены и работают, мы можем идти дальше и собрать PHP, как DSO. Процесс очень простой.
cd /usr/src/apache/modules/php/php-3.0.15
./configure \
--with-apxs=/apps/apache/bin/apxs \
--with-config-file-path=/apps/etc \
--with-gd \
--with-imap \
--with-mysql=/apps/mysql \
--with-ldap=/apps \
--with-zlib \
--enable-track-vars
Если некоторые из ваших библиотек не установлены в /usr/local или в /usr, то не забудьте добавить параметр =/путь/ для того, чтобы скрипт configure обнаружил все необходимые библиотеки.
make
make install

Если все проходит должным образом, то 'make install' будет использовать apxs для установки libphp3.so в /apache/libexec/libphp3.so и добавит надлежащие строки в httpd.conf, чтобы активизировать php3.
mod_perl

Этот раздел описывает установку модуля mod_perl, как DSO для Apache. Ряд модулей perl (в дополнение, конечно, к perl5, который, я думаю, вы уже установили) должны быть добавлены до компиляции mod_perl. Если вы не установите эти модули, mod_perl сообщит вам об их отсутствии.

Есть некоторый порядок, в котором модули должны быть установлены. Одни зависят от других, и таким образом я перечислю порядок установки, который использовал без всяких проблем.

Требуемые модули Perl

Perl модули могут быть получены из мест, упоминаемых далее в этом документе. Загрузите их и поместите туда, куда хотите, или туда, куда положил я (см. схему каталогов). Установка модуля проста. После распаковки модуля в каталог (обычно при помощи tar xvfz), просто перейдите в каталог с исходными текстами и выполните следующие команды:

perl Makefile.PL make make install

Если все идет нормально, происходит настройка, сборка и установка модуля perl. Конечно, вы можете прочитать README для каждого модуля, если что-то работает не так, как ожидалось.

Вот порядок, в котором я устанавливал модули, необходимые для mod_perl:
MIME::Base64
URI
HTML::Parser
Digest-MD5
libnet
libwww
Сборка и установка mod_perl 1.2x
После установки модулей perl, мы готовы к сборке и установке mod_perl в Apache. Перейдите в каталог, куда вы распаковали mod_perl, и запустите следующую команду:

perl Makefile.PL \ USE_APXS=1 \ WITH_APXS=/path/to/apache/bin/apxs \ EVERYTHING=1

Она настроит ваш Makefile и сообщит mod_perl, чтобы он собрал себя, как DSO, используя apxs (расположение которого вы должны определить). После этого просто запустите

make
make install
mod_perl будет перемещен в соответствующий каталог, и необходимая строка будет добавлена в файл httpd.conf.
mod_auth_mysql

mod_auth_mysql позволяет веб-серверу Apache использовать аутентификацию пользователя MySQL. Установка модуля, как DSO, не точно описана в README, но это можно поправить.

Во-первых, перейдите в каталог с исходными текстами mod_auth_mysql. Я предполагаю, что у вас уже установлен MySQL (вместе с заголовками, и т.д). Убедитесь, что Вы знаете расположение библиотек и заголовочных файлов MySQL. Если сомневаетесь, проверьте /usr/lib/mysql и /usr/include/mysql.
Чтобы собрать mod_auth_mysql, переименуйте файл 'config.h' на 'auth_mysql_config.h'. Я не знаю, почему этот файл не был правильно назван. Просто запустите следующую команду:

cp config.h auth_mysql_config.h

И последний шаг:

/path/to/apache/bin/apxs -i -a -I/usr/include/mysql -L/usr/lib/mysql \ -lmysqlclient -c mod_auth_mysql.c

Вам нужно зайти в систему, как root, для чтения/записи в каталог Apache.

mod_auth_nds

В моей школе сеть под Windows была Netware. Она существует уже долгое время, и пока это все еще основная сеть в университетском городке для доступа к общим файлам и почте. Каждый студент имеет вход на сервер Netware, на котором хранятся его личные файлы (включая веб-странички). Мы подключаем эти каталоги на сервер Linux, но некоторые из них защищены именем и паролем Netware. С этим модулем Apache может подтверждать права непосредственно на сервере Netware.
ncpfs
Чтобы компилировать mod_auth_nds, мы должны иметь установленный ncpfs (наряду с его заголовками). Перед сборкой ncpfs, вы должны гарантировать, что ваше ядро имеет поддержку IPX. Если дело обстоит так, просто выполните

./configure make make install (необязательно)

В результате соберутся (и установятся) библиотеки.
Сборка и установка mod_auth_nds
Сустановленным ncpfs выполнение следующей команды должно собрать mod_auth_nds как DSO:

/path/to/apache/bin/apxs -c -lncp -L/usr/lib -I/usr/include mod_auth_nds.c /path/to/apache/bin/apxs -i mod_auth_nds.so
После добавьте следующие строки в файл httpd.conf:
LoadModule nds_auth_module libexec/mod_auth_nds.so AddModule mod_auth_nds.c
И перезапустите Apache!
mod_fastcgi
Установка mod_fastcgi необходима, если Вы хотите обеспечить доступ к серверу Zope через Apache. Это полезно просто потому, что Apache является более безопасным и гибким, чем сервер Zope.
Текущая версия mod_fastcgi - 2.2.2, однако эта версия не работает с Zope, как надо. Вы должны получить SNAP от 6 октября. Ссылка дана выше.
Перейдите в каталог mod_fastcgi и запустите следующие команды:
/path/to/apache/bin/apxs -o mod_fastcgi.so -c *.c /path/to/apache/bin/apxs -i -a -n fastcgi mod_fastcgi.so
Смотрите документацию mod_fastcgi для описания его использования.