HTTP сервер Apache версии 2.0
На Windows платформах Apache обычно работает как сервис Windows NT/2000/XP или как консольное приложение Windows 95/ME. Для получения более подробной информации по этому вопросу, обратитесь к документам, объясняющим работу Apache под Windows в качестве сервиса и работу Apache под Windows в качестве консольного приложения.
В Unix программа httpd
представляет собой
демон, выполняющийся в фоновом режиме и обслуживающий поступающие запросы.
О том, каким образом можно запустить httpd
и что в результате этого
получится, и рассказывается в этом документе.
Если в директиве Listen
в конфигурационном файле указано значение 80 (задаваемое по умолчанию)
или любое другое значение порта меньшее 1024, то для запуска Apache
необходимо быть привилегированным пользователем, так как Apache придется
подключаться к привилегированному порту. После того, как сервер запустился
и выполнил ряд подготовительных операций, таких как открытие своих log-файлов,
он порождает несколько процессов потомков, которые и будут выполнять
всю работу по обработке запросов от клиентов. Основной процесс httpd
выполняется с правами привилегированного пользователя, в то время как процессы
потомки имеют меньший приоритет. Все это контролируется МП-модулем, который компилируется вместе с сервером.
Для запуска демона httpd
лучше всего использовать скрипт
apachectl
. Этот скрипт устанавливает ряд
переменных окружения, необходимых для правильной работы сервера под некоторыми
операционными системами, а затем запускает исполняемый файл httpd
.
Скрипт apachectl
передаст серверу любую командную строку, так что
при вызове можно указывать в его командной строке все необходимые для сервера опции.
Вы также можете вручную внести некоторые изменения в скрипт apachectl
,
в частности, изменив значение переменной HTTPD
для запуска Apache
из другого каталога, и указав опции, которые будут передаваться серверу каждый раз
при его запуске.
Первым делом httpd
находит и считывает конфигурационный
файл httpd.conf
. Путь к этому файлу задается еще во время сборки сервера,
но его можно изменить и после этого, запустив сервер с опцией -f
, как это показано
в следующем примере
/usr/local/apache2/bin/apachectl -f
/usr/local/apache2/conf/httpd.conf
Если во время запуска не возникло никаких проблем, то сервер отсоединится
от консоли и приглашение на ввод командной строки вернется к пользователю
практически мгновенно. Это указывает на то, что сервер запустился и теперь
выполняет свою работу. Теперь вы можете, используя браузер, подключиться к
нему и увидеть тестовую страницу, находящуюся в каталоге
DocumentRoot
, а также локальную копию документации,
ссылку на которую вы найдете на той же странице.
Если во время запуска Apache произойдет какая-либо фатальная ошибка,
то перед тем, как завершить свою работу, сервер пошлет на консоль или в
ErrorLog
сообщение, описывающее
данную ошибку. Наиболее распространенным сообщением об ошибке является
"Unable to bind to Port ..."
. Подобная ошибка возникает в двух случаях:
Решение многих подобных проблем можно найти на странице FAQ.
Если вы хотите, чтобы сервер запускался автоматически после перезагрузки системы,
добавьте вызов скрипта apachectl
в системные файлы, отвечающие за загрузку
операционной среды (обычно это rc.local
или файлы в каталоге rc.N
).
Это приведет к запуску Apache от имени привилегированного пользователя.
Во избежание проблем с безопасностью системы, убедитесь, что сервер сконфигурирован правильно.
Скрипт apachectl
разработан таким образом, что он может
действовать как стандартный init-скрипт системы SysV; он может принимать
аргументы start
, restart
, и stop
и переводить их в соответствующие сигналы процессу httpd
.
Поэтому чаще всего вам достаточно сделать ссылку на apachectl
в запускном каталоге процесса init. Но прежде чем делать это, узнайте
точные требования вашей системы.
Дополнительную информацию по опциям командной строки httpd
и apachectl
, а также других
вспомогательных программ, вы можете найти на странице "Сервер
и вспомогательные программы". Имеется также документация
на все модули, входящие в дистрибутив Apache, и все директивы, которые они предоставляют.