
Цель урока: Познакомиться со вторым по популярности веб-сервером в мире - Apache HTTP Server (часто его называют просто Apache). Мы установим его, разберем базовую структуру конфигурации, которая идеологически отличается от Nginx, и запустим на нем простую веб-страницу.
Часть 1: Теория. Что такое Apache и чем он отличается от Nginx?
Apache - это ветеран мира веб-серверов, он появился гораздо раньше Nginx и долгое время был абсолютным лидером. Это невероятно мощный, гибкий и модульный сервер.
Ключевые отличия от Nginx:
-
Архитектура:
-
Nginx: Работает по асинхронной, событийно-ориентированной модели. Один рабочий процесс может эффективно обслуживать тысячи соединений, "переключаясь" между ними. Идеально для статики и большого количества одновременных подключений.
-
Apache: Классически работает по процессной/потоковой модели. На каждое новое соединение (или группу соединений) создается новый процесс или поток. Это потребляет больше оперативной памяти, но может быть проще для некоторых типов приложений.
-
-
Конфигурация:
-
Nginx: Имеет централизованные конфигурационные файлы. Все правила описываются в .conf файлах в /etc/nginx/.
-
Apache: Поддерживает как централизованные файлы, так и децентрализованные файлы .htaccess.
-
-
.htaccess - главная "фишка" и проблема Apache:
-
.htaccess - это специальный конфигурационный файл, который можно положить прямо в папку с сайтом. Правила из этого файла применяются только к этому каталогу и его подкаталогам.
-
Плюс: Это невероятно удобно для веб-разработчиков и виртуального хостинга. Разработчик может сам управлять правилами (например, mod_rewrite для ЧПУ), не имея доступа к главным конфигам сервера.
-
Минус: Это медленнее. При каждом запросе Apache должен искать и читать .htaccess файлы по всему пути к запрошенному файлу. Nginx читает свою конфигурацию один раз при старте и держит ее в памяти, что гораздо быстрее.
-
Когда Apache может быть лучше?
-
На традиционном виртуальном хостинге, где пользователям нужно давать возможность самим управлять настройками своих сайтов через .htaccess.
-
Для некоторых старых веб-приложений и CMS, которые сильно завязаны на модули Apache и .htaccess.
Часть 2: Практика. Установка и проверка Apache
Шаг 1: Останавливаем и отключаем Nginx
Поскольку и Nginx, и Apache по умолчанию хотят использовать порт 80, они не могут работать одновременно. Давайте остановим и временно отключим Nginx, чтобы освободить порт.
# Останавливаем службу
systemctl stop nginx
# Отключаем ее из автозагрузки
systemctl disable nginx
Шаг 2: Установка Apache
Пакет Apache в Debian/Ubuntu называется apache2.
apt update
apt install -y apache2
Как и Nginx, Apache автоматически запустится и добавится в автозагрузку после установки.
Шаг 3: Настройка файервола
Apache также регистрирует свои профили в ufw.
# Смотрим список профилей
ufw app list
# Вы увидите 'Apache', 'Apache Full', 'Apache Secure'
# Разрешаем 'Apache' (только порт 80)
ufw allow 'Apache'
# На всякий случай удалим старое правило для Nginx, чтобы не было путаницы
ufw delete allow 'Nginx HTTP'
# Проверяем статус
ufw status
Теперь в списке разрешенных должен быть Apache.
Шаг 4: Проверка в браузере
Откройте в браузере IP-адрес вашего сервера: http://ВАШ_IP_АДРЕС.
Вы увидите стандартную страницу Apache для Debian/Ubuntu с заголовком "Apache2 Debian Default Page" и текстом "It works!".

Часть 3: Практика. Структура конфигурации Apache
Структура Apache идеологически похожа на Nginx, но названия другие.
-
/etc/apache2/: Главный каталог.
-
/etc/apache2/apache2.conf: Основной глобальный конфиг.
-
/etc/apache2/sites-available/: Аналог sites-available в Nginx. Здесь хранятся конфиги виртуальных хостов. По умолчанию там лежит 000-default.conf.
-
/etc/apache2/sites-enabled/: Аналог sites-enabled. Здесь лежат симлинки на "включенные" сайты.
-
/etc/apache2/mods-available/ и /etc/apache2/mods-enabled/: Каталоги для управления модулями. Apache - очень модульный, и многие функции (перезапись URL, SSL и т.д.) включаются/выключаются отдельными модулями.
-
/var/www/html: Корневой каталог для файлов сайта по умолчанию (да, здесь путь совпадает с Nginx в Debian/Ubuntu).
Часть 4: Практика. Создаем виртуальный хост в Apache
Давайте сделаем то же самое, что и для Nginx: настроим наш сайт project-one.local. Структура каталогов и файл index.html у нас уже созданы.
Шаг 1: Создание конфигурационного файла
Имена конфигов в Apache принято заканчивать на .conf.
nano /etc/apache2/sites-available/project-one.local.conf
Вставьте в редактор следующий код:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName project-one.local
ServerAlias www.project-one.local
DocumentRoot /var/www/project-one.local/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Разбор директив:
-
<VirtualHost *:80>: Начало блока виртуального хоста, который слушает порт 80 на всех IP-адресах.
-
ServerName: Аналог server_name в Nginx. Основное доменное имя.
-
ServerAlias: Дополнительные имена (псевдонимы).
-
DocumentRoot: Аналог root в Nginx. Корневой каталог сайта.
-
ErrorLog, CustomLog: Пути к файлам логов ошибок и доступа для этого конкретного сайта.
Сохраните (Ctrl+O, Enter) и выйдите (Ctrl+X).
Шаг 2: Включение/выключение сайтов и модулей
В Apache для управления сайтами и модулями есть специальные утилиты, которые делают работу с симлинками удобнее:
-
a2ensite (Apache 2 enable site) - включить сайт (создает симлинк).
-
a2dissite (Apache 2 disable site) - выключить сайт (удаляет симлинк).
-
a2enmod, a2dismod - аналогичные утилиты для модулей.
Давайте выключим дефолтный сайт и включим наш:
# Выключаем дефолтный сайт
a2dissite 000-default.conf
# Включаем наш новый сайт
a2ensite project-one.local.conf
Шаг 3: Проверка конфигурации и перезагрузка
У Apache тоже есть встроенная проверка синтаксиса.
apache2ctl configtest
Если все в порядке, вы увидите Syntax OK. Только после этого перезагружаем:
systemctl reload apache2
Шаг 4: Финальная проверка
Откройте в браузере http://project-one.local. Вы должны увидеть ту же самую страницу "Добро пожаловать на Project One!", но на этот раз ее вам отдает веб-сервер Apache.
Часть 5: Заключение
Сегодня мы познакомились со вторым гигантом веба - Apache. Хотя он используется реже для новых проектов, понимание его работы является обязательным для разностороннего администратора. Вы научились:
-
Понимать ключевые идеологические отличия Apache от Nginx (модульность, .htaccess).
-
Устанавливать Apache и управлять его работой.
-
Работать со структурой его конфигурационных файлов.
-
Создавать простые виртуальные хосты.
-
Использовать утилиты a2ensite/a2dissite для удобного управления сайтами.
На следующем, 45-м уроке, мы проведем прямое сравнение Nginx и Apache, подытожим их сильные и слабые стороны и обсудим популярные сценарии их совместного использования, когда Nginx выступает как "фасад", а Apache - как "бэкенд".
Перейти к просмотру - УРОК №45.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

