Цель урока: Познакомиться со вторым по популярности веб-сервером в мире - 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. Корневой каталог сайта.

  • ErrorLogCustomLog: Пути к файлам логов ошибок и доступа для этого конкретного сайта.

Сохраните (Ctrl+OEnter) и выйдите (Ctrl+X).

Шаг 2: Включение/выключение сайтов и модулей

В Apache для управления сайтами и модулями есть специальные утилиты, которые делают работу с симлинками удобнее:

  • a2ensite (Apache 2 enable site) - включить сайт (создает симлинк).

  • a2dissite (Apache 2 disable site) - выключить сайт (удаляет симлинк).

  • a2enmoda2dismod - аналогичные утилиты для модулей.

Давайте выключим дефолтный сайт и включим наш:

# Выключаем дефолтный сайт
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

авторское право цифровые решения

Помог ли вам данный ответ? 0 Пользователи считают это полезным (0 голосов)