Начинаем играть в индейцев.
Итак, перед Вами по тем или иным причинам встала задача сделать WEB-сервер.
Скорее всего, начальству надоело Ваше ежедневное сидение в Internet, и
оно решило, что раз уж платит за пользование сетью, то из этого надо попытаться
извлечь прибыль. Или Вы просто решили прославиться во всемирной сети, заработать
кучу денег, купить последнюю модель Mersedes ... так или иначе - но WEB-сервер
делать надо.
Первое, о чем надо позаботиться ( после того, как решены вопросы с арендой
каналов у провайдера, закупки и установки операционной системы на компьютер,
который будет использоваться в качестве WEB-сервера ), это о самой программе
WEB-сервера. То есть той самой программе, которая будет принимать запросы
у WEB-броузеров Ваших клиентов и отсылать им с любовью подготовленные Вами
WEB-странички, картинки, открытки, рекламки, значки и все, что Вам подскажет
фантазия.
Как всегда в мире Открытых Систем перед Вами две альтернативы : купить
WEB-сервер или использовать свободно-распространяемую программу аналогичной
функциональности. Первый путь в данной статье не рассматривается ( возможно,
Ваше начальство еще не созрело до того, что программы надо покупать,
может, Вы сами еще не заработали денег для покупки подобной программы,
да и автор пока не имел дело с покупными системами ), поэтому рассмотрим
второй путь.
На сегодняшний день автору известны как минимум три подобных WEB-сервера
: CERN, NCSA
и Apache. Однако на сегодняшний день сервер
CERN морально устарел и не развивается, про
NCSA ходят подобные слухи - поэтому для рассмотрения
в данной статье выбран сервер Apache, базирующийся
на ранней версии NCSA и по настойке и функциональным
возможностям сильно схож с ним.
Еще одна проблема для создателя русскоязычного WEB-сайта - проблема
русской кодировки. На сегодняшний день их как-минимум четыре : Koi-8,
CP-1251, ibm866 и iso8859-5. Можно, конечно,
весь сервер хранить в кои - и точка. Однако, на взгляд автора, это неуважение
к пользователям программы Windows. Наоборот, сервер, видный только в CP-1251
будет недоступен пользователям открытых систем. И именно Apache
поможет Вам в решении этой проблемы.
Инициативная группа под руководством Дмитрия Крюкова взяла одну
из ранних версий Apache, и пользуясь возможностью
включения в код сервера внешних модулей, начала разработку так называемого
RussianApache, позволяющего разработчику WEB-сайта
не заботиться о кодировках, а сосредоточиться на разработке содержимого
сайта, переложив заботу о кодировках на Вас ( как на администратора WEB-сервера
). И, отмечаю, RussianApache Вам в этом очень
сильно поможет. Где взять?
Итак, Вам нужен WEB-сервер, причем именно RussianApache.
Самый простой способ его достать - открыть любой WEB-броузер или воспользовавшись
программой ftp зайти по адресу ftp://apache.lexa.ru/pub/apache-rus
и взять последнюю версию WEB-сервера ( на момент написания статьи это 1.2.5rusPL21.4,
файл 'apache_1.2.5rusPL21.4.tar.gz'
).
Далее необходимо определиться, в какой директории будет находиться программное
обеспечение сервера. Группа разработчиков Apache
считает, что это будет /usr/local/etc/httpd,
автор предпочитает /usr/httpd ( чтобы
далеко не лазить ). Оба этих решения абсолютно идентичны с точки зрения
функционирования Apache, поэтому, чтобы не
заострять на этом внимания, опишем переменную окружения
www% setenv HTTP_HOME /usr/httpd
и в дальнейшем будем пользоваться этой переменной для именования файлов
Apache.
Теперь нужно собрать Apache. У вас в ${HTTP_HOME}
лежит файл apache_1.2.4rusPL21.3.tar.gz,
представляющий собой последнюю версию сервера. Перейдем в директорию /tmp
и дадим команду :
www% gzip -c -d ${HTTP_HOME}/apache_1.2.5rusPL21.4.tar.gz
| tar xvf -
Если у Вас в системе все настроено правильно, то у Вы увидете кучу файлов,
которые развернутся в директории apache_1.2.5rusPL21.4.
Зайдите в директорию apache_1.2.5rusPL21.4/src
и отредактируйте файл httpd.h : найдите
в нем строчку
#define HTTPD_ROOT "/usr/local/etc/httpd"
и замените этот путь, где будет стоять Ваш Apache
( например, /usr/httpd ).
После этого необходимо применить стандартную процедуру сборки свободно-распространяемых
программ. Для этого в текущей директории ( apache_1.2.5rusPL21.4/src
) дайте последовательность команд :
www% ./Configure
www% make
Если Вы все проделали правильно, то по экрану побегут радующие глаз
сообщения об успешной компиляции - а Вы пока можете пойти сделать себе
кофе. Процесс может длиться от 5 до 30 минут, поэтому не стоит переутомлять
свои глаза глядением в монитор за строчками, которые вряд-ли дадут Вам
какую-нибудь полезную информацию.
В результате вышеописанных действий у Вас должен получиться исполняемый
файл, называющийся httpd. Это и есть
Apache, который Вы так долго собирали. Но
расслабляться рано - Apache, как и всякая
нетривиальная программа ( а тривиальной программой можно считать программу,
вычисляющую 2 плюс 2 ) для своей работы требует настройки.
Но, прежде чем приступать к настройке, скопируем Apache
в его рабочую директорию :
www% cp httpd ${HTTP_HOME}
www% cd ..
www% cp -r LICENSE README conf htdocs icons
support ${HTTP_HOME} . Настройка.
Итак, вспомним, что же у нас есть на настоящий момент :
-
Определенная переменная окружения HTTP_HOME;
-
файл ${HTTP_HOME}/httpd, представляющий
собой собранный Apache;
-
директория ${HTTP_HOME}/conf/, в
которой будут лежать файлы конфигурации;
этого набора достаточно для успешной работы
Apache.
Создайте еще директорию
${HTTP_HOME}/logs
для лог-файлов
Apache - и в путь.
Первый файл, который нужен для работы Apache
- ${HTTP_HOME}/conf/httpd.conf. В
поставку входит пример такого файла ( ${HTTP_HOME}/conf/httpd.conf-dist
), но для того, чтобы хорошо научиться настраивать Apache,
мы создадим его сами.
Итак, создайте этот файл и загрузите его в любой редактор ( автор использует
textedit, но Вы можете воспользоваться
любым другим, включая vi ). Первое,
что нужно определить, это режим работы Apache.
Издавна повелось, что многие UNIX-сервисы запускались специальным демоном,
который называют суперсервером Internet ( inetd
). Это демон слушал порты соответствующих сервисов, и при запросе определенного
типа сервиса ( например, telnet или
ftp ) запускал программу-демона, определенную
для этого сервиса. Сделано это было в те времена, когда памяти в компьютерах
было мало - и чтобы не держать в памяти множество сложных демонов, сеть
слушал достаточно простой inetd.
Apache тоже является одним из сервисов
Internet, и, в принципе, может пускаться под управлением inetd.
Однако такой механизм работы не рекомендуется для использования даже разработчиками
Apache. Причина в том, что при старте Apache
должен прочитать несколько конфигурационных файлов - что сказывается не
лучшим образом на его производительности. Кроме того, время необходимо
и на запуск программы .... .
Итак, первой строчкой нашего файла httpd.conf
будет строка, задающая режим его функционирования :
ServerType standalone
Далее нужно задать порт, на котором Apache
будет слушать запросы. По-умолчанию, это порт 80,
и при стандартном обращении к Вашему серверу программа Netscape
использует этот порт. Поэтому следующая наша строчка имеет вид :
Port 80
Считается, что все стандартные сервисы UNIX имеют номера портов меньшие
1024. Поэтому порты с номерами меньшими 1024 называют привилегированными
портами, и открывать их позволено только суперпользователю. Сделано
это для того, чтобы программа злоумышленника не смогла замаскироваться
под стандартный сервис. Поэтому, задав для Apache
80-й порт, тем самым Вы обязали себя запускать его из-под
суперпользоваетлся. Однако для нормального функционирования Apache
вовсе не нужны привилегии суперпользвотеля. Более того, такой режим функционирования
является достаточно опасным для системы, на которой работает Apache.
Привилегии суперпользователя нужны Apache
только при старте - чтобы открыть 80-й
порт - а далее он может функционировать под именем другого пользователя.
Мы советуем Вам завести для него специального пользователя http,
входящего в группу http и максимально
уменьшить права этого пользователя в системе. В идеале, этот пользователь
должен иметь доступ только к тем директориям, которые Вы хотите сделать
видимыми через Ваш WEB-сервер. Создав пользователя, добавим в httpd.conf
строчки :
User http
Group http
обязав тем самым Apache работать от имени
этого бесправного пользователя.
Далее надо задать имя сервера, на которое будет откликаться Вас сервер.
Делается это директивой
ServerName www.your-domain.ru
Теперь необходимо задать расположение файлов, которые Вы хотите показывать
на Вашем сервере. Apache имеет богатые возможности
по конфигурированию ресурсов такого рода ( ибо основная задача Apache
как HTTP-сервера - выдавать документы, то есть файлы, хранящиеся на Вашем
диске ) - однако сейчас мы предположим, что все Ваши файлы собраны в одной
директории и имеют иерархическую структуру. Apache
нужно сказать, где расположена эта директория :
DocumentRoot /usr/httpd/htdocs
( здесь предполагается, что все Ваши документы находятся в директории
/usr/httpd/htdocs. Мы так-же рекомендуем задать имеено эту директорию,
если у Вас еще нет никаких документов - в /usr/httpd/htdocs
находится стандартное руководство в HTML-формате, поставляемое с дистрибутивом
Apache ).
В принципе, этого было бы достаточно, если бы не одна тонкость. Разработчики
Apache, понимая, что при существующих порядка
150-ти директивах указание их в одном файле сделало бы его плохо-читаемым,
решили упростить жизнь пользователям. Они предполагают, использование 3-й
файлов : httpd.conf ( общие директивы
конфигурации сервера ), srm.conf
( конфигурация ресурсов сервера - информация о том, где расположены документы,
как их обрабатывать и подобная информация ) и access.conf
( конфигурация доступа к серверу - пароли, права на определенные директории
) - однако при запуске Apache определяет только
положение файла httpd.conf. По-умолчанию,
это ${HTTP_HOME}/conf/httpd.conf,
имеется возможность переопределение местоположения этого файла. А вот расположение
остальных 2-х файлов Apache ищет в httpd.conf.
Но так как в нашей конфигурации эти файлы не нужны ( мы всю работу Apache
опишем в httpd.conf, то мы просто
отключим остальные файлы :
AccessConfig /dev/null
ResourceConfig /dev/null
Все, у нас получился работающий WEB-сервер ! Запускаем ( в этом месте
необходимо воспользоваться правами пользователя root:
www# /usr/httpd/httpd
www#
У Вас получился работающий WEB-сервер ! Можете запустить Netscape и
набрать в нем адрес сервера http://www.your-domain.ru -
и Вы увидете свои документы.
Однако это, конечно, не все. Мы освоили только простейшую настройку
Apache. О подробном конфигурировании WEB-сервера
Apache мы поговорим в следующей статье.