HTTP-сервер Apache — это программный проект благотворительного фонда США Apache Software Foundation (ASF), финансируемой за счет пожертвований и корпоративных спонсоров.
Соучредитель ASF Брайан Белендорф первым придумал имя «Apache» для сервера. Название «апачи» было выбрано из почтения и признательности людям и племенам, которые называют себя «апачи».
По мере того, как Apache рос из патчей (заплаток), добавляемых к одному из первых серверов стандарта HTTP/1.0, постепенно из слухов родилась легенда, что «Apache» на самом деле означает «a patchy server» (неоднородный сервер).
Apache – веб-сервер с открытым исходным кодом для современных операционных систем, включая UNIX, Windows, Mac OS/X и Netware. Написан на языке С и является одним из самых популярных в мире веб-серверов. Сайт проекта ApacheThe Apache HTTP Server Project.
Статья описывает необходимый минимум для запуска веб-сервера версии 2.4.x на одном компьютере или в локальной сети операционной системы Windows.
Apache Software Foundation на своем официальном сайте предоставляет только исходные коды, но не бинарные файлы. Чтобы создать запускаемое приложение HTTP-сервера Apache для операционной системы Windows необходимо самостоятельно скомпилировать файлы прилагаемого исходного кода.
Компиляция исходного кода может оказаться непростой задачей и поэтому можно скачать готовые скомпилированные файлы групп разработчиков, указанных на официальном сайте Apache HTTP Server Project на странице Downloading Apache for Windows. Некоторые из них предоставляют инсталляторы полных комплектов ПО для веб-программирования, другие только скомпилированные модули Апачи .
Данная статья описывает настройку сервера, собранного из скомпилированных файлов группы разработчиков Apache Lounge. Бинарные файлы, создаваемые Apache Lounge из официальных исходников, поддерживаются в актуальном состоянии и содержат последние патчи и зависимости. Для загрузки предлагается выбор двоичных файлов приложения сервера Апачи для версий Win32 и Win64. Здесь же можно загрузить дополнительные модули расширения возможностей сервера.
Дистрибутив веб-сервера Апачи можно установить в любой папке, на любом носителе локального компьютера. Затем настройки пути прописываются в файле конфигурации Папка_Установки_Apache/conf/httpd.conf. В этом же файле прописываются пути к веб-контенту базового и виртуальных хостов.
Пути к файлам хостинга можно определить также любые. Это удобно для использования общих веб-приложений, которые могут работать на разных серверах (IIS или Apache), например: phpMyAdmin.
Теоретически возможно создание нескольких папок веб-серверов Апачи с разными настройками, запускать их по отдельности или вместе (с прослушкой на разных портах), создавая специфическое тестирование работы сайтов.
Запустить веб-сервер можно только после определения основных настроек:
Директива ServerRoot
Определяет каталог, в который были инсталлированы папки и файлы сервера. Для сборки Apache 2.4 и позже путь к каталогу сервера определяется в константе SRVROOT. В дальнейшем данная константа унифицирует строку пути до корневой папки сервера и позволяет избегать ошибок при повторяющихся вводах, например:
Относительно корневого пути приложение веб-сервера Апачи получает путь к конфигурационному файлу и файлам логов (по умолчанию они находятся в подкаталогах conf/ и logs/ соответственно), к файлам модулей и другим необходимым для работы файлам.
Директива Listen
Предписывает серверу Apache прослушивать только определенные IP-адреса или порты. Listen является обязательной директивой и без ее определения запуск сервера завершится неудачей.
По умолчанию в файле конфигурации сервера Apache директива разрешает отвечать на запросы на любом IP-адресе устройства на порту 80:
Listen 80
# или так
#Listen *:80
Это значит, что сервер будет прослушивать запросы с любого адреса вашего компьютера, в том числе и от компьютеров локальной сети.
Вы можете ограничить доступ к серверу определением директивы с конкретным IP-адресом, например для определения работы сервера только на локальном компьютере:
Listen 127.0.0.1:80
В таком случае сервер будет отвечать на запросы только вашего устройства, игнорируя запросы из локальной сети.
Директива DirectoryIndex
Перенаправляет запрос к индексному файлу если запрашивается каталог. DirectoryIndex устанавливает имя файла, который будет вызваться по умолчанию:
dir_module – это идентификатор модуля mod_dir.so. Соответственно, чтобы происходило автоматическое перенаправление на индексные файлы модуль mod_dir.so должен быть включен в файле конфигурации сервера httpd.conf:
LoadModule dir_module modules/mod_dir.so
Директива AddDefaultCharset
Определяет кодировку символов по умолчанию для запросов веб-страниц. Настройка кодировки заключается в добавлении директивы в файл httpd.conf, например:
AddDefaultCharset UTF-8
После данных настроек HTTP-сервер Апачи готов к запуску. Можно использовать два варианта запуска: сервер как консольное приложение или как служба операционной системы Windows.
Вызвать окно командной строки сразу в подкаталоге bin можно набрав команду cmd в адресной строке проводника Windows при открытой папки исполняемого файла httpd.exe и нажать Enter:
Отследить работающий сервер можно по работе сайтов либо в окне Диспетчера задач. Останавливается сервер Апачи в данном варианте запуска сочетанием клавиш Control + C в окне консоли с которой был запущен сервер либо классическим закрытием окна кнопкой-крестиком Закрыть. Перезапуск сервера при изменении файла конфигурации или других настроек производится клавишами Control + Break при активном окне консоли.
Для удобства можно создать ярлык на рабочем столе, указывающий на исполняемый файл приложения сервера. Запуск сервера в режиме консольного приложения не требует прав администратора. Обратите внимание, что при запуске сервера с ярлыка появится окно консольного приложения, но не командной строки. Закрытие и перезагрузка сервера производится сочетанием клавиш Control + C и Control + Break соответственно, в окне консоли. Окно будет оставаться видимым до тех пор, пока вы не остановите Apache.
Данный вариант запуска предусматривает предварительную установку службы сервера Апачи . Для этого запускается командная строка от имени администратора, осуществляется переход в подкаталог bin и в окне набирается команда:
httpd.exe -k install
Удаление производится командой:
httpd.exe -k uninstall
Запуск, перезапуск, остановка осуществляется командами в окне командной строки находясь в подкаталоге bin установленного экземпляра Апачи :
Так же, как и для приложения, для запуска в режиме службы на рабочем столе можно создать ярлыки запуска, перезапуска и остановки серверной службы, указывая на исполняемый файл с дополнительными командами, например:
На вашем устройстве пути до исполняемого файла соответственно будут другие. Ярлыки с командами для запуска сервера как служба требуют права администратора.
В комплекте с приложением Апачи идет утилита наблюдения за службами сервера под названием Apache Service Monitor. С помощью монитора можно наблюдать и управлять состоянием всех установленных служб Apache с отслеживанием статистики запусков и перезагрузок.
Apache Service Monitor позволяет запускать, перезапускать и останавливать службу Апачи. Запущенный монитор всегда находится на панели задач в системном трее. Данная утилита применима только в режимах запуска сервера в роли службы.
Утилиту можно добавить в автозапуск при загрузке операционной системы Windows. Для этого откройте каталог установки сервера Апачи и перейдите в подкаталог bin, где находится исполняемый файл ApacheMonitor.exe, затем командой из контекстного меню создайте для него ярлык. Нажмите клавиши Windows + R, в открывшемся окне напечатайте shell:startup, затем нажмите ОК. Откроется папка Автозагрузка, скопируйте и вставьте созданный ярлык файла ApacheMonitor.exe в папку Автозагрузка.
Для отслеживания ошибок при первых стартах сервера Апачи лучше запускать его с помощью командной строки, в котором печатаются ошибки, возникшие во время старта сервера. Apache Service Monitor в таких случаях выводит окно с малополезной информацией: Error. The requested operation has failed!.
Для корректного отображения символов кириллицы в окне командной строки, предварительно выполните команду изменения кодировки:
chcp 1251
Наиболее частые ошибки при запуске сервера Апачи:
Ошибки при установке и удалении службы
Данные ошибки возникают при запуске командной строки без прав администратора.
G:\MyProjects\Hosting\Apache24\bin>chcp 1251
Текущая кодовая страница: 1251
G:\MyProjects\Hosting\Apache24\bin>httpd.exe -k install
Installing the 'Apache2.4' service
(OS 5)Отказано в доступе. : AH00369: Failed to open the Windows service manager, perhaps you forgot to log in as Administrator? (Не удалось открыть диспетчер служб Windows, возможно, вы забыли войти в систему как администратор?)
Ошибка при удалении службы:
G:\MyProjects\Hosting\Apache24\bin>chcp 1251
Текущая кодовая страница: 1251
G:\MyProjects\Hosting\Apache24\bin>httpd.exe -k uninstall
Removing the 'Apache2.4' service
(OS 5)Отказано в доступе. : AH10010: Failed to open the 'Apache2.4' service
Ошибки запуска. Сервер пытается прослушивать занятый порт 80
Ошибка случается при запуске Апачи посредством командной строки, как приложения или как службы:
G:\MyProjects\Hosting\Apache24\bin>chcp 1251
Текущая кодовая страница: 1251
G:\MyProjects\Hosting\Apache24\bin>httpd.exe
G:\MyProjects\Hosting\Apache24\bin>httpd.exe -k start
(OS 10013)Сделана попытка доступа к сокету методом, запрещенным правами доступа. : AH00072: make_sock: could not bind to address [::]:80
(OS 10013)Сделана попытка доступа к сокету методом, запрещенным правами доступа. : AH00072: make_sock: could not bind to address 0.0.0.0:80
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
При ошибке запуска на занятом порту, веб-сервер должен успешно запускаться на любом свободном номере порта от 1024 до 65535, например:
Listen 127.0.0.1:8000
Определить приложение, занимающее интересующий порт поможет утилита Windows Монитор Ресурсов, которая отображает все прослушиваемые порты операционной системы с именами и идентификаторами рабочих процессов. Вызывается утилита правой кнопкой на меню Пуск->Выполнить и в открывшемся окне напечатать команду resmon.exe, нажать кнопку Ok.
На картинке видно, что процесс System с PID 4 прослушивает порт 80, из-за чего сервер Апачи не может успешно стартовать. Под процессом System PID 4 с портами 80 могут работать:
- Службы SQL Server Reporting Services (SQLEXPRESS_XXXX) (имя службы ReportServer$SQLEXPRESS_XXXX)
- Служба веб-публикаций(имя службы W3SVC)
- Диспетчер служб IIS
Список не является исчерпывающим и зависит от конфигурации вашей операционной системы. После закрытия приложений и остановку служб занимающих порт 80 сервер Апачи запустится успешно.
Для работы на локалке с разными сайтами необходимо в конфигурационном файле веб-сервера Апачи определять виртуальные хосты и регистрировать желаемые веб-имена в файле hosts (файл hosts). Без создания виртуальных хостов все веб-имена, зарегистрированные в операционной системе Windows, будут ссылаться на документы, находящиеся в папке основного хоста DocumentRoot "${SRVROOT}/htdocs".
Для создания виртуальных хостов служит директива <VirtualHost>. . .</VirtualHost> определяющая область действия групп директив для конкретного хоста. Виртуальные хосты могут быть созданы на основе разных IP, имен сайтов и портов. Рекомендуемая форма определения директивы виртуальных хостов:
Указывая IP-адрес в атрибутах виртуального хоста, можно гарантированно ограничить область запросов, например определить виртуальные хосты для работы по локальной сети:
<VirtualHost 192.168.1.35:80>
DocumentRoot "G:\MyProjects\Hosting\IIS\localpythonsite"
ServerName localpythonsite
# Для виртуального хоста можно определить
# собственную кодировку, отличную от настроек других
# вирутальных хостов.
AddDefaultCharset utf-8
# Other directives here
<Directory />
Require all granted
</Directory>
</VirtualHost>
. . .
<VirtualHost 192.168.1.35:80>
DocumentRoot "G:\MyProjects\Hosting\IIS\localphpmyadmin"
ServerName localphpmyadmin
# Other directives here
<Directory />
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
То же самое, но область запросов ограничена собственным устройством:
Необходимо отметить, что если общее прослушивание веб-сервера Апачи определено как Listen *:80, то базовый веб-ресурс будет всегда доступен по локальной сети.
По умолчанию в файле httpd.conf установлен запрет доступа ко всем директориям, поэтому внутри директивы виртуального хоста необходимо разрешать доступ к желаемым каталогам, об этом читайте ниже.
<Directory> - группа директив, которые применяются только к указанному каталогу файловой системы, подкаталогам и их содержимому. Может определяться для каждого виртуального хоста отдельно. Основные директивы, используемые внутри <Directory>:
Require all
Require all granted – доступ всем разрешено
Require all denied – доступ всем отказан
По умолчанию в файле конфигурации httpd.conf веб-сервера Апачи установлен запрет доступа ко всем директориям:
<Directory />
AllowOverride none
Require all denied
</Directory>
Для конкретного каталога необходимо дополнительно разрешать доступ. Можно запретить доступ к отдельным каталогам, например:
# Определение сайтов на локалке
<VirtualHost 127.0.0.1:80>
DocumentRoot "${SRVROOT}/htdocs"
ServerName localhost
# Все директории доступны
<Directory />
Require all granted
</Directory>
# Но к директории /1 относительно корневого каталога доступ запрещен.
<Directory "${SRVROOT}/htdocs/1">
Require all denied
</Directory>
</VirtualHost>
AllowOverride
Директива позволяет переопределить настройки общего конфигурационного файла httpd.exe веб-сервера Apache для конкретного каталога через файл .htaccess. В нем вы можете переопределить практически все настройки веб-сайта, например: настройки PHP, создать перезапись URL-адресов и т. д.
Когда для директивы AllowOverride задано значение None, файлы .htaccess полностью игнорируются. В этом случае сервер даже не будет пытаться читать .htaccess. При значении AllowOverride All файлы .htaccess позволяют вносить изменения в конфигурацию для каждого каталога, игнорируя настройки базового файла httpd.conf.
Разработчики HTTP-сервера Apache рекомендуют полностью избегать использования .htaccess файлов, если у вас есть доступ к файлу конфигурации основного сервера httpd.conf. Использование .htaccess замедляет работу сервера, поскольку при каждом запросе URI сервер будет проверять файлы .htaccess во всех подкаталогах, встречающихся на пути до директории конечного ресурса. Например: alltech.com/moto/harley-davidson/streetbob – 4 проверки присутствия в каталогах файлов .htaccess.
Чтобы события ошибок и доступа к запрошенному URL не терялись в гуще информации общих логов сервера лучше определить собственные файлы логов для каждого виртуального хоста отдельно:
<VirtualHost 127.0.0.1:80>
# Здесь также можно определять константы
Define DR "G:\MyProjects\Hosting\IIS\localphpmyadmin"
DocumentRoot "${DR}"
ServerName localphpmyadmin
ErrorLog "${DR}\logs\error.log"
CustomLog "${DR}\logs\access.log" common
# Other directives here
<Directory />
Require all granted
AllowOverride All
</Directory>
</VirtualHost>
В качестве наглядного примера к статье прикреплен файл конфигурации http.conf, вам только необходимо прописать в нем пути до вашего каталога установки компонентов HTTP-сервера Апачи.
Скачать исходник
Тема: «Установка веб-сервера Апачи на Windows»
httpd-conf.zip
Размер:7 КбайтЗагрузки:75