Веб-сервер Apache – это служба, которая работает в фоне и у которой нет графического интерфейса. Эта служба устанавливается и запускается в командной строке.
Если вам нужен только веб-сервер без дополнительных модулей, то вы можете ограничиться базовой настройкой.
Настройка Apache на Windows
На самом деле, базовая настройка веб-сервера крайне проста – необходимо только правильно указать путь до папки, в которой помещены веб-сайты – этого будет достаточно для запуска веб-сервера.
Кстати, в конфигурационном файле уже прописаны значения многих параметров по умолчанию. К примеру, по умолчанию корневой директорией является c:/Apache24. Поэтому если папку Apache24 из скаченного архива вы разархивируете в корень диска C, то вы можете вообще без настройки запустить веб-сервер следующей командой:
c:\Apache24\bin\httpd.exe -k start
И по адресу http://localhost увидите стандартную страницу веб-сервера, которая сообщает, что он работает:
Кстати, для открытия командной строки в Windows используйте сочетание клавиш Win+x и в открывшемся окне выберите Windows PowerShell (администратор).
Настройка веб-сервера выполняется посредством редактирования текстового файла, который размещён в папке Apache24\conf\ и называется httpd.conf.
Этот файл состоит из директив с определёнными значениями. Эти директивы регулируют поведение веб-сервера. Но больше чем директив в этом файле комментариев – они начинаются с решётки (#) – комментарии нужны для человека, который настраивает веб-сервер. Сам сервер строки начинающиеся с # просто игнорирует. Т.е. вы можете просто удалить их.
Этот файл содержит не все возможные директивы – многие из них здесь отсутствуют, поскольку не требуются для большинства задач. Даже в этой заметки мы рассмотрим не все доступные в файле настройки – если описание чего-то пропущено, значит просто не нужно это трогать.
Как уже было сказано, важно установить путь до папки с веб-сайтами. Если она установлена неправильно (например, отсутствует на компьютере), то веб-сервер не запуститься.
Думаю, вы уже обратили внимание, что веб-сервер отличается от других программ для Windows. Если вы знакомы с Linux или другими аналогичными операционными системами, вам должна быть знакома работа в консоли и редактирование текстовых файлов. Пути до файлов тоже записываются не совсем обычно для Windows. Сейчас главное уяснить два правила:
- используйте абсолютные пути до файла (которые начинаются с буквы диска, затем следуют все вложенные папки), а не относительные – у сервера свои правила интерпретации относительных путей, поэтому вы можете не понять друг друга;
- всегда используйте прямые слеши, а не обратные (т.е., "c:/apache" вместо "c:\apache").
Итак, откройте файл Apache24\conf\httpd.conf любым текстовым редактором (хоть Блокнотом) и вот мы уже готовы к настройке веб-сервера.
Первой идёт директива ServerRoot – это верхняя директория дерева, в которой хранятся файлы конфигурации сервера и журналов. Не добавляйте слэш на конец пути папки.
Значение по умолчанию устанавливается двумя директивами:
Define SRVROOT "c:/Apache24" ServerRoot "${SRVROOT}"
Первая директива присваивает значение переменной SRVROOT, которое по умолчанию "c:/Apache24". Вторая директива присваивает значение переменной ${SRVROOT} настройке ServerRoot.
ServerRoot — это та папка, в которой находятся все файлы веб-сервера – поменяйте значение на то, куда вы распаковали файлы веб-сервера. Это можно сделать используя конструкцию из двух переменных:
Define SRVROOT "c:/Server/bin/Apache24" ServerRoot "${SRVROOT}"
Либо если вы не планируете снова использовать переменную ${SRVROOT} (а она по умолчанию используется далее!), то можно сократить запись из двух строк до одной строки:
ServerRoot "c:/Server/bin/Apache24"
Директива Listen позволяет вам привязать Apache к определённому IP адресу и/или порту. Значение по умолчанию:
Listen 80
Оно означает, прослушивать 80 порт на любом IP адресе (т.е. любом сетевом интерфейсе), доступном в вашей системе. Вы можете указать конкретный IP адрес, который нужно прослушивать и, следовательно, на запросы с которого отвечать:
Listen 12.34.56.78:80
Можно указать несколько портов:
Listen 80 Listen 8000
Или несколько IP и портов:
Listen 192.170.2.1:80 Listen 192.170.2.5:8000
Вы можете использовать любые сочетания, главное правило – порт на указанном интерфейсе (IP) не должен быть занят другой программой.
Значение по умолчанию вполне подходит для локального веб-сервера – т.е. здесь можно просто ничего не менять.
Далее идёт большой список модулей. Некоторые их них отключены (строки закомментированы, т.е. начинаются с #), а некоторые включены.
На самом деле, всё действительно необходимое уже включено – и для работы большинства веб-сайтов менять ничего не нужно – особенно на локальном веб-сервере. Но есть одно исключение – модуль mod_rewrite по умолчанию отключён. Это очень популярный модуль, например, все ЧПУ (понятные для человека адреса страниц) делаются с помощью него. Вы можете его включить, для этого достаточно найти строку:
#LoadModule rewrite_module modules/mod_rewrite.so
и раскомментировать её, т.е. заменить на:
LoadModule rewrite_module modules/mod_rewrite.so
Директива ServerAdmin содержит e-mail администратора, этот адрес электронной почты пишется на некоторых страницах веб-сервера, которые автоматически генерируются в случае возникновения ошибок. Подразумеваются, что по этому адресу можно связаться с администратором.
Директива ServerName – это то, как сервер сам себя идентифицирует (называет). Для локального веб-сервера поменяйте строку
#ServerName www.example.com:80
на
ServerName localhost
Конструкция
<Directory /> AllowOverride none Require all denied </Directory>
запрещает доступ к файловой системе веб-сервера (пока это не разрешено явно) и запрещает использовать файлы .htaccess (пока это не разрешено явно).
Далее идёт довольно объёмная конструкция, но если удалить из неё комментарии, то получается следующее:
DocumentRoot "${SRVROOT}/htdocs" <Directory "${SRVROOT}/htdocs"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
DocumentRoot – это директория, где по умолчанию находятся сайты. По умолчанию именно там ищутся все пришедшие на веб-сервер запросы. Укажите здесь путь до корневой папки в веб-документами. Конечный слэш писать не нужно.
Конструкция <Directory />…</Directory> нам уже встречалась. Но здесь указывается конкретная папка, для который делаются настройки. Эти настройки перезаписывают общие, которые указаны ранее.
Пути до папок в DocumentRoot и Directory не забудьте поменять на свои!
Обратите внимание, что для установки настроек вновь используется переменная ${SRVROOT}, значение которой было присвоено в самом начале. Если использовать синтаксис с ${SRVROOT}, то корневая папка документов должна обязательно находится в корневой папке сервера. Я настраиваю сервер по-другому — у меня исполнимые файлы отделены от файлов сайтов, поэтому вместо переменной, можно просто прописать пути до нужной папки с сайтами:
DocumentRoot "c:/Server/data/htdocs" <Directory "c:/Server/data/htdocs"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
Директива Options включает разные опции. По умолчанию указаны опции Indexes и FollowSymLinks. Первая (Indexes) означает показывать индексные файлы, если запрос не содержит имени файла. Допустим, пользователь открывает адрес http://localhost/site/, то если в этой папке есть индексный файл (например, index.html или index.php), то будет показан этот файл. Понятно, что если сделан запрос на определённый файл, например, http://localhost/site/page.html, то будет показана запрошенная страница.
Вторая опция (FollowSymLinks) означает следовать символьным ссылкам. Это что-то вроде ярлыков в Windows. В Linux с помощью таких ссылок можно собрать в одном сайте файлы, размещённые в различных папках файловой системы. На самом деле, для начинающих администраторов сервера это не очень нужно.
Директива AllowOverride установлена на None, это означает запрет использовать файлы .htaccess. На своём сервере я разрешаю файлы .htaccess (нужны для mod_rewrite, ограничения доступа), поэтому я заменяю её значение на All, получается так:
AllowOverride All
А директива Require all granted открывает посетителям доступ для веб-документов.
Я уже упомянул индексные файлы, перечень индексных файлов устанавливается конструкцией:
<IfModule dir_module> DirectoryIndex index.html </IfModule>
Там всего один файл — index.html. Можно дописать любое количество своих собственных. Я меняю:
DirectoryIndex index.html
на
DirectoryIndex index.php index.html index.htm
Другие настройки обычно не требуется менять для локального веб-сервера.
Смотрите также:
Ошибочка.
"DocumentRoot – это директория, где по умолчанию находятся сайты. По умолчанию именно там ищутся все пришедшие на веб-сервер запросы. Укажите здесь путь до корневой папки в веб-документами. Конечный слэш писать не нужно"
DocumentRoot "c:/Server/data/htdocs/"
<Directory "c:/Server/data/htdocs/">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Эта же ошибка встречается во многих статьях на этом сайте. Или это ошибка в описании параметра?
Приветствую, может быть «не нужно» используется в значении «необязательно». Я проверил, с последней версией работает и так и так. Зачем я упомянул этот слэш, я уже не помню — может быть, раньше с ним не работало. Сейчас подправлю инструкции, чтобы не было противоречия.
Здравствуйте!
Сделала всё по вашей инструкции, но в браузере страница не запускается.
В ошибках:
Starting the 'Apache2.4' service
[Sat Apr 30 01:33:38.946787 2022] [mpm_winnt:crit] [pid 9040:tid 372] (OS 2)Не удается найти указанный файл. : AH00378: Failed to start the 'Apache2.4' service
Подскажите пожалуйста как решить вопрос с установкой
Приветствую! Суть ошибки в том, что не найден путь, который указан в конфигурационном файле с одной из директив.
В этой инструкции упоминаются следующие директивы с путями:
Выше приведены из значения по умолчанию, но в заметке я меняю их значения под свои условия.
То есть вам нужно указать в них ваши пути куда вы распаковали Apache. Я устанавливаю веб-сервер в папку c:/Server/bin/Apache24 следовательно у меня и пути соответствующие.
Для простоты вы можете распаковать Apache в корень диска C: и тогда вам даже не придётся что-либо менять.
Скорее всего вы устанавливаете не только веб-сервер, но и СУБД, PHP и phpMyAdmin. О том, как это всё установить, какие папки создать, куда распаковать и какие настройки изменить подробно описано в инструкции «Как установить веб-сервер (Apache, MySQL, PHP и phpMyAdmin) в Windows 11».
здравстуйте. Я запустил вебсервер на локальном компьютере. Как сделать видимым сайт на моем компьтере из интренета по внешнему моему ip
Приветствую! Вам нужно убедиться, что вы используете «белый IP» а затем настроить проброску портов в роутере. Подробности об этом смотрите в статье «Apache Forwarding — проброска портов веб-сервера».
Подскажите пожалуйста, как убедится, что у меня белый IP.
Если вы спрашиваете (значит вы не арендуете отдельный IP адрес), то, скорее всего, ваш IP не белый. Чтобы убедиться что не белый, проверьте ваш текущий IP. А затем на устройстве не подключённом к вашей домашней сети (например, на мобильном телефоне), наберите этот IP в адресной строке веб-браузера. Если IP белый, то вы увидите веб страницу вашего роутера (если кабель Интернет-провайдера подключён к нему), либо вашего веб-сервера на компьютере (если провод Интернет-провайдера подключён напрямую к компьютеру).
Почему я думаю, что у вас не белый IP: диапазоны IP адресов для Интернет-провайдеров не бесплатные. А благодаря технологии NAT, Интернет-провайдер может обойтись меньшим количеством IP (сократить свои расходы) при этом большинство пользователей ничего не заметят.
Даже если по какой-то причине Интернет-провайдер не использует NAT и вам повезло иметь белый IP, то, скорее всего, он будет меняться время от времени. То есть даже если он белый, то он не статичный.
Вы можете погуглить
Например:
Результат: