Apache+DSO+mod_ssl+mod_perl+php+mod_auth_nds+mod_auth_mysql+mod_fastcgi

Ray Van Dolson

Перевод: Александр Ермолаев, ASPLinux

Аннотация

Здесь описывается инсталляция и настройка веб-сервера Apache для работы с DSO, а также сборка и установка различных модулей, включая mod_perl, mod_ssl и php.


Содержание
Legal Stuff
Авторские права
Введение
Установка компонентов
Заключительные слова

Legal Stuff

Apache+mods mini-HOWTO for Linux Systems

Copyright (C)2000 Ray Van Dolson.

This document is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This document is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You can get a copy of the GNU GPL at at http://www.gnu.org/copyleft/gpl.html.


Авторские права

Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу


Введение

В этом документе описывается процесс установки программы веб-сервера 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)

  • Начальный проект


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

Подготовка

Вам будет нужно следующее:

Это схема каталогов, которая здесь используется и может быть вам рекомендована:

+ /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:

  1. MIME::Base64

  2. URI

  3. HTML::Parser

  4. Digest-MD5

  5. libnet

  6. 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 для описания его использования.


Заключительные слова

Многое из данной информации может быть взято из файлов README и INSTALL, идущих с различными модулями. Однако, этот документ полезен в случаях, когда что-то работает не так, как ожидалось. Кроме того, последовательный документ более прост для просмотра и понимания, чем множество README файлов.


Благодарности

Phillip R. Wilson <pwilson@drew.edu>, автору mod_auth_nds, помог мне собрать и установить mod_auth_nds при помощи apxs. John Ash <jash@wwc.edu>, моему начальнику, за все виды помощии, конечно же, за работу. Marcus Faure <marcus@faure.de>, автору Apache SSL PHP/FI frontpage mini-HOWTO.


Контактная информация

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

Ray Van Dolson Email: IRC: DALnet, #Bludgeon (nick Variant)


Дополнительно

Все упомянутое в этом документе будет в конечном счете доступно с ftp ftp.wwc.edu/pub/apache. Я буду размещать там этот текст и кое-какие инсталляционные скрипты, позволяющие установить все разом.