Запускаем Web-сервер Apache

Алексей Кошелев

Первый раздел: глобальные настройки

Второй раздел: главные настройки

Третий раздел: виртуальные хосты

 

Вряд ли нужно долго объяснять, как удобен, нагляден и практичен Интернет. Особенно это касается WWW. Сегодня, не покидая окна браузера, вы можете рассматривать красиво оформленные страницы, слушать радио и даже смотреть фильмы. В основном все зависит от скорости вашего соединения с провайдером. Но наш рассказ имеет отношение не к пользователю, который смотрит в окно браузера, а к серверу, предоставляющему информацию. Речь пойдет об установке и начальном конфигурировании Web-сервера Apache.

Начнем с небольшого введения, не зависящего ни от платформы, ни от сервера. Основной задачей Web-сервера является обработка запросов, приходящих на 80 порт (в большинстве случаев, хотя, разумеется, возможен и любой другой), и передача информации с использованием протокола HTTP (или https). При этом желательно, чтобы сервер мог обрабатывать несколько запросов одновременно, чтобы могло работать несколько пользователей. Помимо этого сервер должен обеспечивать определенный уровень защиты, чтобы не стать причиной взлома системы. Программа, удовлетворяющая этим требованиям, уже может претендовать на название «Web-сервер».

Таких программ существует довольно много, причем около десятка из них являются весьма популярными. Мы же остановим свой выбор на сервере Apache. Почему именно он? У него есть несколько преимуществ перед многими другими серверами. Пользующийся большой популярностью и хорошо себя зарекомендовавший, Apache существует почти для всех известных платформ, он бесплатный, распространяется в виде исходного кода или уже готовых запускных модулей, имеет хорошую техническую поддержку, кроме того, все обновления, особенно связанные с безопасностью, осуществляются очень быстро. Я не ставлю целью в данной статье обсуждать, чем этот сервер лучше других. Отправной точкой здесь является наш выбор, который сделан в силу некоторых причин. Далее мы будем обсуждать вопросы установки, конфигурирования и работы с этим сервером.

Как уже было сказано, существует две возможности: взять скомпилированный набор программ или скачать исходный код. И то и другое бесплатно. Различие лишь в том, что в первом случае вы получаете наиболее полный продукт, рассчитанный на максимум вариантов настройки системы, что отразится на его размере и скорости работы. Во втором же случае вы получаете исходный код, компилируете его, причем перед компиляцией специальная программа configure соберет информацию о вашей системе, что позволит исключить из кода некоторые ненужные части. Остановимся на втором методе чуть подробнее. Сразу скажем, что в основном этот метод используется в UNIX, а не в Windows. Это связано с тем, что под UNIX (любой его разновидностью) имеется стандартизованный набор программ компиляции и сборки файлов, а также в большинстве случаев очень схожее друг с другом построение дерева каталогов. Итак, компиляция состоит из трех этапов. Во-первых, вы редактируете конфигурационный файл configuration. В основном при этом вам нужно раскомментировать модули, которые вы хотите включить в сервер. По умолчанию включаются основные модули, которые так или иначе необходимы для работы сервера или обеспечивают его безопасность. Остальные же модули закомментированы. Вам необходимо снять знак комментария, если вы хотите эти модули включить. Во-вторых, вы запускаете скрипт configure. Этот скрипт создает Makefile, основываясь на информации из файла configure. В-третьих, вы запускаете компиляцию программы командой make. В принципе, если у вас правильно установленная система, корректно установленный компилятор, то все эти этапы должны пройти без ошибок. По своему опыту могу сказать, что скрипт configure, обычно используемый для создания Makefile (это вполне стандартная процедура при установке программ из исходного кода; подобным скриптом оснащены многие программы GNU), обычно рассчитан на огромное число вариантов настройки системы и компиляторов. В результате вы получите файл httpd. Это и есть Web-сервер. Этот файл будет в директории src. Теперь можно скопировать этот файл туда, куда считаете нужным, или оставить на месте. В последнем случае вам не нужно ни о чем заботиться, а в первом ‑ необходимо скопировать директории conf, logs и icons. Conf особенно интересна для нас. В ней находятся файлы конфигурации. Для работы сервера они должны называться httpd.conf, srm.conf и access.conf. Однако в этой директории присутствуют и файлы с добавкой -dist в конце каждого имени. Эти изначальные файлы содержат наиболее стандартные настройки с подробными комментариями и указаниями того, что необходимо изменить обязательно. Также в этой директории должен быть файл mime.types, который не нуждается в редактировании. Ниже будет рассказано, что и как необходимо настроить в файлах конфигурации, но если предположить, что это сделано, то сервер готов к запуску. Для активации сервера следует дать команду (если сервер в директории /usr/local/apache):

/usr/local/apache/httpd -f /usr/local/apache/conf/httpd.conf 

Если все происходит без ошибок, то, задав в браузере URL http://localhost, вы увидите что-то типа логотипа Apache с надписью It works! Если вы хотите, чтобы сервер запускался автоматически при перезагрузке, то команду запуска сервера необходимо прописать в файле rc.local. Для остановки сервера нужно дать команду:

kill -TERM `cat /usr/local/apache/logs/httpd.pid` 

Поясним, что файл httpd.pid содержит номер процесса, под которым запущена первая копия сервера. Конечно, у этой копии есть потомки, так как это позволяет отвечать на одновременные запросы, но все они также будут убиты после удаления главного процесса (это обеспечивает параметр -TERM, который вначале инициирует закрытие дочерних процессов, а потом убивает основной процесс).

Также отметим, что в дополнение к самому серверу можно скомпилировать некоторые дополнительные программы. По умолчанию они не компилируются, но Makefile для них существуют. Все они находятся в директории support. Чтобы их скомпилировать, необходимо перейти в эту директорию и запустить make.

Теперь подробнее о настройках сервера. Для пользователя (администратора) я бы разделил их на две категории: те, что обязательно нужно поменять, и те, которые можно оставить стандартными. Первая группа – настройки, связанные со спецификой вашей конкретной системы, и их так или иначе придется установить. Например, корневой каталог сервера. Чтобы быть более конкретным, я скажу о настройках в файле httpd.conf. Остальные файлы менее значимы для работы сервера и вряд ли про них можно будет сказать что-то большее, чем прописано в описании сервера. Причем я буду отмечать только те настройки, которые обязательно следует поменять или которые заслуживают внимания. Конечно, все остальные настройки важны для работы сервера, просто в большинстве случаев они не критичны и могут быть оставлены без изменения. Итак, httpd.conf. В нем три основных раздела настроек: настройки глобальных параметров, главные настройки и настройки виртуальных хостов.

Первый раздел: глобальные настройки

ServerType – здесь вы можете задать либо inetd, либо standalone. В первом случае вы сможете управлять работой сервера, используя сервис inetd, во втором – необходимо использовать стандартные команды системы.

ServerRoot – задает местоположения директории, в которой находятся поддиректории conf, logs, icons. Важное предупреждение, которое есть и в самом файле, – не ставьте «/» в конце пути.

PidFile – файл, в котором хранится номер процесса, под которым запущен основной сервер. Как было видно выше, этот файл удобен для остановки сервера.

TimeOut – время таймаута, которое выдерживает сервер при передаче данных.

Alive – директивы с этим словом управляют самой возможностью постоянного (непрерывного) соединения и его параметрами.

Spare – директивы с этим словом задают минимальное и максимально число копий сервера.

StartServers – число создаваемых при изначальном запуске серверов. Этот параметр, так же как и предыдущий, сильно зависит от использования вашего сервера и возможностей компьютера.

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

LoadModule и AddModule – эти директивы задают набор модулей (компонентов), которые использует сервер. С их помощью удобно исключить абсолютно ненужные, что приведет к освобождению памяти и сделает работу всей системы более эффективной.

В начало В начало

Второй раздел: главные настройки

Port – первая и основная настройка, задающая порт, который будет использовать ваш сервер. Обычно (скорее  – стандартно) для Web-используется порт 80. При этом нужно иметь в виду, что если номер порта меньше 1023, то запускать первую копию сервера необходимо из-под пользователя root.

User и Group – задают имя пользователя и группу, от имени которых будут запущены остальные копии сервера. Обычно это nobody. Главное позаботиться о том, чтобы этот пользователь мог иметь доступ к файлам вашего Web-сервера.

ServerAdmin – почтовый адрес, на который в крайнем случае будут уходить письма, сообщающие о проблемах с сервером.

DocumentRoot – корневая директория содержания вашего сервера. Собственно, это то место, где лежат html-файлы, которые все остальные будут видеть при обращении к вашему серверу.

UserDir – это имя директории, которая может быть создана внутри домашней директории пользователя и будет выдаваться сервером при обращении http://host/~username/.

В начало В начало

Третий раздел: виртуальные хосты

Этот раздел нужен, если вы хотите создать на своем компьютере несколько отдельных (с точки зрения внешнего пользователя) Web-серверов. Эта возможность используется не так уж и редко, но в нашем случае, когда речь идет о первом запуске сервера, вряд ли это актуально.

После того как все указанные выше настройки прописаны или просто проверены, можно считать настроенным и запускать сервер.

Теперь поговорим об установке и начальной конфигурации сервера Apache при использовании Windows. В этом случае проще использовать скомпилированные исходные файлы. В принципе, можно скомпилировать исходник и самому – для этого необходимо использовать Visual C++ 5. Сам сервер работает на Windows NT, 2000 и даже на Windows 95/98. В последнем случае необходим Winsock 2. Для NT рекомендуется Service Pack 3 или 6. Относительно Windows 95/98 сами разработчики утверждают, что сервер не проходил полного тестирования.

По умолчанию при установке сервер создает некоторую стандартную рабочую конфигурацию, занося ее в свои файлы. Особенно важно, что корнем сервера должна быть директория htdocs в том каталоге, куда установлен Apache. Разумеется, все установки можно изменить, но для более быстрого запуска можно пользоваться и созданной. В NT или 2000 сервер может быть запущен как сервис, а в 95/98 только из командной строки в консольном окне. Даже если вы хотите использовать Apache как сервер, то необходимо в первый раз запустить его в консольном окне, выбрав команду Start Apache as console app. Далее, чтобы запустить Apache как сервис, нужно дать следующую команду:

apache -k install -n "service name" 

или с явным указанием конфигурационного файла:

apache -k install -n "service name" -f "\my server\conf\my.conf"    

Для удаления сервиса используется команда:

apache -k uninstall -n "service name" 

Так в общих чертах выглядит процесс установки и начального конфигурирования сервера Apache. Разумеется, это не все. Это только начало, правда, весьма продвинутое. То есть вы уже не используете изначальные настройки, а создаете некоторую свою конфигурацию. От себя замечу, что процедуры, описанной выше для UNIX, мне хватило, чтобы запустить сервер и поддерживать его работу в течение трех лет. Это был мой первый опыт запуска и администрирования UNIX-машины. Конечно, неосвещенными остались еще многие вопросы. Один из них – это работа сервера Apache с протоколом https (secure http). Возможно, мы рассмотрим этот вопрос в ближайших выпусках.

КомпьютерПресс 2'2001