Установка и первичная настройка веб сервера Apache на windows 7

от 2018 - 03 - 29

Apache (https://httpd.apache.org/) — это программа веб-сервер. Она предоставляет возможность запросить из сети и скачать файлы (по протоколу http), к которым вы разрешите доступ. В том числе изображения, видео, аудио файлы а так же, что характерно, html код вашего сайта / портала / блога / интернет магазина, естественно вместе с прилагающимися CSS стилями, JavaScript файлами, в общем всем необходимым для отображения странички браузером google chrome. После запуска Apache постоянно крутится в оперативной памяти компьютера (сервера, если хотите) и «слушает», ждёт входящие подключения к определённому сокету. Кстати, сокет — есть пара значений ip адрес хоста + порт на который производится подключение.

Apache — очень популярный свободно распространяемый http web server, однако есть и аналоги. В том числе nginx и Microsoft IIS. Принципы, концепции этих серверов различны, рекомендую в последствии ознакомиться для расширения кругозора. Однако сейчас речь пройдёт исключительно про Apache.
Теперь приступим к установке apache 2.4 на операционную систему, в моём случае windows 7.

Специально для детального описания процесса я развернул на ПК виртуальную машину да накатил на неё девственный windows 7, так что доклад будет чистым и подробным, с дополнениями об устранении всех преград на пути к успешно установленному и рабочему web серверу.

  1. Отправляйтесь сюда https://www.apachelounge.com/download/ и скачивайте свежую доступную версию сервера.
    На момент написания сей статьи сервер назывался Apache 2.4 binaries VC15. Для моей 64-разрядной операционной системы (ОС) windows 7 как раз подошел архив httpd-2.4.32-Win64-VC15.zip его и установлю.

    Для удобства работы с файлами советую скачать, установить, научиться работать и использовать файловый менеджер total commander.

    Только что вы загрузили архив, содержащий web server. Скоро пригодится программа архиватор — распаковать архив — естественно ею станет 7-zip.
    Теперь о главном: программа Notepad++. Это текстовый редактор с подсветкой синтаксиса и множеством плюшек для редактированию кода. Web разработчику, использующему windows, шибко полезен.

  2. Загрузите и установите «Распространяемый пакет Visual C++ для Visual Studio 2015» с сайта Microsoft.
    (https://www.microsoft.com/ru-ru/download/details.aspx?id=48145)
    Возможно у вас уже установлена свежая версия пакета, тогда установка попросту не состоится — и это хорошо, значит ничего устанавливать более не требуется.
  3. Теперь продумайте структуру каталогов вашего локального сервера. Где будет жить сам web server, где станут храниться файлы размещенных на этом веб сервере сайтов, куда вы в последствии установите препроцессор PHP и базу данных MySQL, а это всё вам пригодится, уж поверьте. Дальнейшую установку и подключение PHP и MySQL распишу в следующих документах, ссылки тут обязательно появятся.

    Было бы ошибкой не упомянуть о возможности скачать и установить уже готовую сборку всех этих программ, включая Apache. Это наверняка сэкономит несколько часов ваших жизней, но в таком случае останутся пробелы относительно того, как собрать да подружить в ОС windows Apache, PHP, MySQL. Пробелы о том, как взаимодействуют, как настраивать (конфигурировать) эти программы.
    Всё же вот ссылки на самые популярные сборки: отечественный Денвер , XAMPP, EasyPHP. Почитайте самостоятельно, вдруг понравится.

    Сам же я, не мудрствуя лукаво, решил расположить Apache HTTP web server прямо в корне диска C:\. По адресу

    C:\Apache24\ // каталог в скачанном вами архиве так и называется, можно пярмо оттуда без изменений его и копировать.

    А файлы сайтов для него (соответствующие настройки мы пропишем потом, в конфигурационном файле apache для виртуальных хостов) в отдельном каталоге

    C:\work\current\

    Мне удобно так. Как удобно вам?

    Создайте эти директории при помощи total commander например.

  4. Распакуйте архив httpd-2.4.32-Win64-VC15.zip , в нём лежит каталог Apache24, содержимое коего является веб сервером Apache, скопируйте это содержимое туда, где решили хранить сервер. Я же скопировал каталог Apache24 в корень диска C:\ не переименовывая, меня всё устраивает.
  5. Приступим к конфигурированию веб сервера. Откройте при помощи Notepad++ или своего любимого текстового редактора файл c:\Apache24\conf\httpd.conf
    Если вы пользуетесь Notepad++, то для удобства можете включить для открытого файла httpd.conf подсветку синтаксиса. (Верхнее меню — Синтаксис — выбирай, скажем, С — С++ (для языка Си), вполне сойдёт комфортно глядеть в конфиг файл)
    Строки текста начинающиеся с решетки (#) являются комментариями и не влияют на работу апача.
    Ищите строку без комментария, в которой определяют параметр ServerRoot — домашняя директория сервера. Для поиска удобно пользоваться горячими клавишами ctrl+F — поиск по тексту — быстрее найдёте ServerRoot. У меня эта строка выглядит так:

    ServerRoot "c:/Apache24"
    

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

    Так же укажите правильный каталог для параметра: DocumentRoot "c:/Apache24/htdocs"
    и следом за ним сразу <Directory "c:/Apache24/htdocs">
    оба параметра содержат путь к каталогу в котором вы будете хранить создаваемые сайты, блоги, html страницы, в общем всё то ради чего устанавливается и настраивается сейчас веб сервер.
    У меня изменены на:

    DocumentRoot "c:/work/current"
    <Directory "c:/work/current">
    

    Если не знаете, что это такое, можете сохранить как есть. Потом тогда придётся все проекты создавать внутри каталога: «c:/Apache24/htdocs».

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

    #ServerName www.example.com:80
    

    на

    ServerName localhost:80
    

    localhost после этого действия является именем сервера по умолчанию. А сама служба апач, после установки, начнёт ждать соединений от клиентов, запросивших в адресной строке браузера (существуют иные способы запросов) домен localhost (всегда это имя домена зарезервировано системой как ваш собственный ПК, носит IP адрес 127.0.0.1 — это локальный ip «петля», указывающий компьютеру в сети на самого себя, даже если к сети он не подключен).

    Важная информация: любой сайт изначально является файлом на вашем компьютере (скорее набором файлов — скриптов, но в начале жизни это один файл). Сейчас поговорим о том, как веб сервер узнаёт, какой именно файл ему запускать при обращении посетителя, гостя твоего сайта.
    В конфиге есть строка, определяющая для apache файлы, которые сервер станет демонстрировать, если пользователь в URL не указал имени файла, лишь набрал домен и остался доволен. Директива — DirectoryIndex. У меня она выглядит так:

    DirectoryIndex index.php index.html
    

    Это значит, что когда пользователь зайдёт на мой домен https://inf-o.ru/ без указания в адресной строке какого либо названия файла, вроде https://inf-o.ru/test.css, веб сервер apache глянет, что написано в DirectoryIndex, а там написано index.php index.html, следовательно, сначала он поищет файл index.php в корневой директории сайта — найдёт — покажет — не найдёт — станет дальше искать index.php и запустит, если найдёт. Последовательность указания имён файлов имеет значение, в каком порядке искать и запускать файлы.

    Напоследок, пропишите адреса файлов, куда прикажете Apache складывать логи. Логи — крайне полезная штука. Там скапливаются подробные описания кто, когда и что пытался открыть на вашем сервере. С детальными описаниями ошибок коль те имели место быть. Начинать искать неисправность чего-либо на своём веб сервере следует с прочтения логов, поиска в нём соответствующих ошибок. Значит вот:

    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" common
    

    Свои не менял. Это общие настройки логов. Потом покажу, как настраивать логи индивидуально для каждого сайта на вашем сервере.

  6. Устанавливаем сервис Apache. Для чего в windows пользователь, под которым вы авторизовались, должен являться администратором. Нажимаем (win+R) или (ПУСК — Выполнить), где пишем «cmd» и жмём Enter. Это текстовая консоль управления операционной системой. Можно создавать/удалять файлы, запускать программы, службы, рестартовать сеть, настраивать маршруты, много что можно. Вам же предстоит выполнить команду:
    c:\Apache24\bin\httpd.exe -k install
    

    При наборе текста в консоли удобно пользоваться многократными нажатиями TAB. Например, написали c:\Apa — и щелкните TAB, если существует каталог в корне диска C начинающийся со слова Apa (как мой Apache24), то остальные буквы будут дописаны автоматически. Если таких каталогов несколько, то дальнейшее последовательное нажатие TAB станет перебирать варианты, пока вы не прекратите.

    Приведу ещё несколько полезных команд для консоли:

    dir — отобразит список каталогов и файлов внутри текущей директории.
    cd — сокращение от change directory — сменить директорию. после cd через пробел надо прописать путь до искомого каталога. Например cd c:\Apache24\bin\
    А можно использовать сокращения cd .. — подняться на директорию выше текущей. (Перейдёт в родителький каталог относительно текущего)
    mkdir foo — создат там, где вы находитесь, каталог foo. (Сокращение от make directory)
    rmdir foo — удалит каталог foo там, где вы находитесь. (Сокращение от remove directory)

    Команда c:\Apache24\bin\httpd.exe -k install установит сервис Apache. Следите за сообщениями об ошибках при установке. Если что — подправьте соответствующие строки в конфиг файле апача c:\Apache24\conf\httpd.conf. Проверяйте правильность путей. Возможно ваш апач лежит вовсе не в c:\Apache24, как мой.

  7. Запуск сервера: В том же каталоге c:\Apache24\bin\ лежит программа ApacheMonitor.exe. Можете отправить ярлык для неё на рабочий стол и расположить в автозапуске, иногда удобно. Программа предоставляет графический интерфейс для управления веб сервером apache, позволяет запустить, перезапустить, остановить сервер парой кликов. После запуска разместит пёрышко в трее (стрелка вверх там, где обычно часы, развернёт «трей») — кликать туда. И далее Apache2.4 — start.
  8. После старта пёрышко в трее окрасится зелёным). Запускай свой любимый браузер google chrome, и набирай в адресной строке: http://localhost/ , ентер. Должна загрузиться html страничка от апач по умолчанию (index.html) с надписью — It works!

Всё, если вы видите надпись It works! — сервер работает.

Если нет, смотрите настройки, читайте логи, разбирайтесь, теперь вы веб программист.
Лично рекомендую проверить что указано в настройках DocumentRoot конфига, и Directory. Существует ли в реальности такой каталог, и лежит ли внутри него файл: index.html, скопированный из c:\Apache24\htdocs\

Далее рассказываю, как обещал, про дополнительные настройки в конфиге.

Самое интересное — настройка виртуальных хостов. На вашем компьютере будет разворачиваться не один проект. Наверняка их будет несколько. Предположим вы хотите создать отдельный сайт (проект), под названием test.
Для начала перейдите в домашний для всех ваших сайтов каталог — DirectoryRoot — тот, что прописали в конфиге апач (у меня c:/work/current), и создайте в нём директорию test. В дальнейшем там станут жить файлы нового проекта test, первым из которых станет index.html, содержащий html код вашей новой страницы для сайта test. Можете создать файл c:/work/current/test/index.html. Если пока не владеете HyperText Markup Language (HTML) просто напишите в нём «hello, world!».

Следующим шагом идите редактировать c:\Apache24\conf\httpd.conf , спустимся в самый конец файла, и допишем с новой строки следующее:

<VirtualHost test:80>
    DocumentRoot /work/current/test
    ServerName test
</VirtualHost>

Так вы создаёте новые виртуальный сайт, расположенный на вашем веб сервере (тот, что имеет локальный ip 127.0.0.1, обратите внимание, что сервер станет ждать входящих запросов домена test именно на 80-ом порту), сайт под названием test. Теперь test — это имя для домена. Если в браузере ввести http://test , конечно после рестарта веб-сервера Apache и некоторых доп. манипуляций, откроется вами созданная страничка с надписью hello, world!

Выше приведен минимальный набор сведений для создания виртуального хоста. Впредь можете добавить ещё настроек, например после (ниже/под) «ServerName test» дописать строку:
ErrorLog /work/current/test/logs/error.log
После чего все записи об ошибках для виртуального хоста test будут сыпаться прямо в этот файл. Проверьте существование директории /work/current/test/logs/ . Возможно размещение в любом другом каталоге вашего ПК, лишь бы существовал, под любым именем. Пропишите только правильно.

Далее вам придётся указать вашей винде, что теперь существует новый домен — test, делается это так:
Открывайте файл по адресу c:\Windows\System32\drivers\etc\hosts . В нём прописаны соответствия между именами хостов и их ip адресами. Там уже должна быть запись про localhost, примерно следующая:

127.0.0.1 localhost

На моей тестовой операционке эта строка была закомментирована. Раскоментируйте её, и допишите ещё одну, по такому же принципу:

127.0.0.1 test

Сохраняем. Перезапускам веб сервер при помощи ApacheMonitor. Пробуем открыть в браузере: http://test/, должно работать. Иначе смотрим логи.

Следом рекомендую прочесть про установку PHP на windows