Мы знаем, что если набрать адрес сайта в браузере, то при определённых условиях на экране появится этот сайт. Чтобы он появился, на каком-то удалённом компьютере должна поработать программа, которая отвечает за выдачу этого сайта. Одна из самых распространённых программ, которая совершает эту работу, — Apache, он же «Апач». Вот сегодня о нём.
Что вообще такое сервер
Сервером могут называть две вещи:
- Компьютер или виртуальная машина, на которой запускаются программы для работы сайтов и служб.
- Сами программы, которые что-то отдают пользователю по запросу — файлы, видеоролики, музыку и т. д. Apache — это как раз программа.
Программы-сервера ещё иногда разделяют на веб-сервера, ftp-сервера, почтовые сервера и т. д. То есть если программа обрабатывает запросы на сайты — это веб-сервер. Если программа отвечает за обмен файлами по протоколу ftp — это ftp-сервер. Все эти программы могут работать на одном физическом или виртуальном компьютере, просто отвечать за свой тип запросов.
Смысл веб-сервера
Apache — это как раз веб-сервер, то есть он обрабатывает запросы и отдаёт в ответ на них сайты. Он работает примерно так:
- У него есть список портов, которые он «слушает», — представьте, что это столики, которые обслуживает официант.
- Если на какой-то порт приходит запрос, это равносильно тому, как если бы гость ресторана сделал заказ. Сервер изучает этот заказ и заглядывает в свои внутренние правила: можно ли этот заказ исполнять.
- Чаще всего внутренние правила звучат так: возьми такие-то файлы, запусти такой-то процесс, получи от него такой-то результат и передай его тому, кто этот запрос сделал.
- Иногда клиент заказывает что-то, что нельзя подавать — в правилах стоит запрет. Например, это какой-то секретный документ. Тогда сервер смотрит, как ответить клиенту в этой ситуации. Например, он покажет страницу с ошибкой.
- Когда запрос выполнен (успешно или с ошибкой), сервер снова ждёт нового запроса.
Откуда появился Апач
Первая версия этого веб-сервера появилась в 1995 году, когда браузеры стали набирать популярность. Цепочка была такая:
В интернет начали приходить простые пользователи, а не только айтишники → они стали искать и читать то, что им интересно → чтобы им это отдать, серверы напрягались, потому что раньше такой нагрузки не было → старый софт перестал справляться, и появился Апач.
Всё дело в том, что в старом софте и протоколах, которые использовались, был один слабый момент: когда нагрузка становилась большой, система не справлялась, начинала глючить и выдавать не то, не тем и не в нужное время. А название Apachе родилось как созвучное фразе «a patchy server» — сервер, который накладывает заплатки и патчи на существующие технологии.
С тех пор технологии поменялись, а название осталось.
Принцип работы Апача
Апач работает на трёх уровнях: на уровне всего сервера, виртуального хоста и каталога. Настройки каждого уровня задаются в своих файлах.
Уровень всего сервера — это по каким правилам Апач обрабатывает вообще все запросы, которые к нему приходят. Например, можно сказать ему так: на любой запрос показывай ошибку «Доступ запрещён».
👉 За этот уровень отвечает файл httpd.conf.
Уровень виртуального хоста означает, что на компьютере может жить одновременно несколько сайтов, за которые отвечает один веб-сервер. Все запросы распределяются по своим хостам (виртуальным сайтам).
Правила на этом уровне отвечают за то, как конкретный хост будет отвечать на запросы — откуда брать данные, как их обрабатывать и что с ними делать дальше.
👉 За этот уровень отвечает файл extra/httpd-vhosts.conf.
Уровень каталога регулирует, в какие каталоги у пользователя есть доступ, а в какие его пускать нельзя. Если этого не сделать, то, например, кто угодно сможет зайти в каталог с базой данных онлайн-магазина и скачать себе список всех товаров, покупателей и узнать уровень дохода и выручки.
👉 За этот уровень отвечает файл .htaccess. Мы с ним уже встречались в статьях про защиту сервера и про публикацию сайта.
Чтобы настроить Апач, нужно поменять соответствующие настройки в этих файлах. Веб-сервер в них смотрит при каждом запросе, поэтому все новые правила применяются сразу же, как вы их пропишете. Это как если шеф-повар скажет официантам: «Стейки на стопе» — это значит, что мясо на стейки закончилось, больше заказов на стейки не принимайте. Перезагружать для этого сервер не нужно.
Модули
Сам по себе Апач умеет не очень много, но если к нему подключить нужные модули, то всё сразу меняется. Есть отдельные модули:
- для кеширования данных,
- безопасности,
- распределения нагрузки,
- поддержки разных языков программирования,
- поддержки разных протоколов и запросов,
- исправления ошибок и повышения стабильности.
Опытные сисадмины собирают персональную конфигурацию Апача под свои задачи, чтобы получить нужную комбинацию возможностей. Нет смысла подключать все модули, потому что их очень много, а для работы каждого нужны память и ресурсы процессора.
Сделать свой модуль может кто угодно — у Апача открытый исходный код, поэтому можно разобраться, как он устроен и как подключить свой модуль.
В чём хорош Апач
Масштабируемость. Если нагрузка на сервер становится больше, можно запустить второй апач на другом сервере, настроить его на работу с тем же сайтом и распределить нагрузку.
Поддержка и справочная информация. Апачу уже больше 25 лет — за это время накопилось огромное количество документации, примеров использования, комплектов модулей и готовых сценариев. Если у вас есть проблема или вопрос по Апачу, то её до этого уже точно кто-то решил и выложил ответ в сеть.
Поддержка других языков программирования. Нужна поддержка PHP? Есть такое. Python? Легко. Perl? Тоже без проблем. Даже если вам понадобится запускать на сервере что-то на C++ или Java, то Апач тоже сможет с этим помочь.
А ещё у Апача есть версии вообще почти под все операционные системы. Поэтому можно поставить его на свой домашний компьютер и получить поддержку Вордпресса, PHP и остальных систем, для которых раньше нужно было всё заливать на удалённый сервер.
Минусы и недостатки
Когда посетителей на сервере много, Апач работает медленно. А всё потому, что в 1995 году высокой нагрузкой считалось, условно, 1000 посетителей в минуту, а сейчас — миллион. И когда обращений к сайту становится слишком много (а Апач обрабатывает каждое соединение по очереди) — сервер не справляется и тормозит.
Второй недостаток — уязвимость подключаемых модулей. Сам Апач проверен на надёжность и безопасность много раз, а вот в модулях могут быть проблемы. Если подключить модуль, в котором есть дыры в безопасности, то через них можно получить доступ и к серверу, и к файлам, которые на нём хранятся.
Как попробовать
Вы можете запустить собственный веб-сервер прямо на своём компьютере за пять минут. Самый простой способ — скачать MAMP: это пакет для веб-разработчика, в который встроен менеджер баз данных, веб-сервер, движок PHP и другие полезные для веба штуки. Работает так:
- Скачиваете MAMP для своей операционки.
- Устанавливаете.
- Запускаете программу и в ней говорите Start.
- MAMP скажет вам, что сервер запущен, откликается по такому-то адресу и смотрит в такую-то директорию на вашем компе (всё это можно настроить, а можно оставить так). Скорее всего, ваш веб-сервер начнёт откликаться из браузера по запросу http://localhost.
- Зайдите на http://localhost/MAMP/ — там будет вся информация о вашем сервере вплоть до ключей от базы данных и ссылки на запуск инструмента администрирования БД phpMyAdmin.
Далее можно, например, скачать дистрибутив Вордпресса, распаковать его в папку, где работает ваш сервер, и попробовать эту штуку установить. Придётся создавать БД через phpMyAdmin, но об этом в другой раз.
Обратите внимание: MAMP — это локальный сервер. Из внешнего интернета его не видно. Если хотите настроить видимый из внешнего интернета сайт, это несколько сложнее.