Apache — один из старейших и наиболее распространённых веб-серверов в мире. За десятилетия активного развития он обзавёлся богатой экосистемой модулей, гибкой системой конфигурации и поддержкой практически любых сценариев веб-хостинга — от небольших личных сайтов до крупных корпоративных порталов.
В этом руководстве мы разберём установку Apache на Ubuntu 22.04: настроим брандмауэр, изучим базовые команды управления службой и создадим виртуальные хосты для размещения нескольких сайтов на одном сервере.
Содержание
- Предварительные требования
- Шаг 1. Установка Apache
- Шаг 2. Настройка брандмауэра
- Шаг 3. Проверка работы веб-сервера
- Шаг 4. Управление службой Apache
- Шаг 5. Настройка виртуальных хостов
- Шаг 6. Важные файлы и директории
Предварительные требования
Для работы по этому руководству вам понадобится сервер Ubuntu 22.04 с настроенным пользователем без прав root, имеющим привилегии sudo, и активным брандмауэром UFW. Войдите в систему под этим пользователем — и можно приступать.
Шаг 1. Установка Apache
Apache присутствует в стандартных репозиториях Ubuntu, поэтому для установки достаточно двух команд. Сначала обновим индекс пакетов, чтобы получить актуальную информацию о доступных версиях:
sudo apt update
Теперь установим сам веб-сервер:
sudo apt install apache2
Менеджер пакетов автоматически подтянет все необходимые зависимости. После завершения установки Apache будет готов к первоначальной настройке.
Шаг 2. Настройка брандмауэра
При установке Apache регистрирует несколько именованных профилей в UFW. Посмотрим, какие из них доступны:
sudo ufw app list
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Каждый профиль открывает определённый набор портов: Apache — только порт 80 для обычного HTTP-трафика, Apache Full — одновременно порты 80 и 443, Apache Secure — исключительно порт 443 для зашифрованных соединений. Хорошей практикой считается разрешать минимально необходимый трафик. Поскольку SSL мы пока не настраивали, достаточно открыть порт 80:
sudo ufw allow 'Apache'
Проверьте, что правило применилось:
sudo ufw status
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Профиль активирован, входящий HTTP-трафик разрешён. Переходим к проверке самого сервера.
Шаг 3. Проверка работы веб-сервера
Ubuntu запускает Apache автоматически сразу после установки. Убедитесь, что служба работает:
sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-04-23 22:36:30 UTC; 20h ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 29435 (apache2)
Tasks: 55 (limit: 1137)
Memory: 8.0M
CGroup: /system.slice/apache2.service
├─29435 /usr/sbin/apache2 -k start
├─29437 /usr/sbin/apache2 -k start
└─29438 /usr/sbin/apache2 -k start
Статус active (running) подтверждает, что сервер запущен. Для окончательной проверки откройте страницу по IP-адресу сервера в браузере. Если IP-адрес вам неизвестен, определите его одним из двух способов — через встроенную команду:
hostname -I
Или через внешний сервис, который вернёт публичный адрес вашего сервера:
curl -4 icanhazip.com
Введите полученный адрес в адресную строку браузера:
http://your_server_ip
Если вы видите стандартную страницу приветствия Ubuntu/Apache — установка прошла успешно и сервер работает корректно.
Шаг 4. Управление службой Apache
Для повседневного администрирования вам понадобятся несколько стандартных команд systemctl. Остановить веб-сервер:
sudo systemctl stop apache2
Запустить остановленный сервер:
sudo systemctl start apache2
Полностью перезапустить службу (соединения на момент перезапуска будут прерваны):
sudo systemctl restart apache2
Применить изменения конфигурации без разрыва активных соединений:
sudo systemctl reload apache2
Отключить автоматический запуск Apache при старте системы:
sudo systemctl disable apache2
Вернуть автозапуск:
sudo systemctl enable apache2
После выполнения последней команды Apache будет стартовать автоматически при каждой перезагрузке сервера. Теперь настроим хостинг нескольких доменов.
Шаг 5. Настройка виртуальных хостов
Виртуальные хосты в Apache — это аналог серверных блоков в Nginx. Механизм позволяет обслуживать несколько сайтов на одной машине, изолируя конфигурацию каждого домена в отдельном файле. По умолчанию Apache работает с директорией /var/www/html, но при хостинге нескольких проектов удобнее создать собственную структуру для каждого домена.
Создайте директорию для вашего сайта (замените your_domain на реальное доменное имя):
sudo mkdir /var/www/your_domain
Назначьте текущего пользователя владельцем директории:
sudo chown -R $USER:$USER /var/www/your_domain
Установите корректные права доступа:
sudo chmod -R 755 /var/www/your_domain
Создайте тестовую страницу:
sudo nano /var/www/your_domain/index.html
Добавьте простую HTML-разметку:
/var/www/your_domain/index.html
<html>
<head>
<title>Welcome to Your_domain!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
Сохраните файл: Ctrl+X, затем Y и Enter. Теперь создайте конфигурационный файл виртуального хоста — лучше в отдельном файле, а не редактировать конфигурацию по умолчанию:
sudo nano /etc/apache2/sites-available/your_domain.conf
Добавьте следующий блок конфигурации:
/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Здесь DocumentRoot указывает на директорию с файлами сайта, ServerName задаёт основное доменное имя, а ServerAlias — дополнительные имена, которые будут обрабатываться этим же хостом. Сохраните файл и активируйте виртуальный хост с помощью утилиты a2ensite:
sudo a2ensite your_domain.conf
Отключите стандартный хост, чтобы он не конфликтовал с новым:
sudo a2dissite 000-default.conf
Проверьте синтаксис конфигурации:
sudo apache2ctl configtest
Output
Syntax OK
Если ошибок нет, перезапустите Apache для применения изменений:
sudo systemctl restart apache2
Откройте http://your_domain в браузере — должна отобразиться созданная тестовая страница.
Шаг 6. Важные файлы и директории
Разберёмся со структурой Apache, чтобы в дальнейшем легко ориентироваться в конфигурации.
Контент: файлы сайта по умолчанию хранятся в /var/www/html. Эта директория используется как резервная — когда ни один виртуальный хост не совпал с запросом клиента.
Конфигурация сервера: все конфигурационные файлы находятся в /etc/apache2. Главный из них — /etc/apache2/apache2.conf, он управляет глобальными параметрами и подгружает остальные файлы конфигурации. Файл /etc/apache2/ports.conf определяет, на каких портах Apache принимает соединения — по умолчанию это порт 80, а при активированном SSL добавляется порт 443.
Конфигурации виртуальных хостов создаются в /etc/apache2/sites-available/ и активируются через символические ссылки в /etc/apache2/sites-enabled/ с помощью команды a2ensite. Аналогичная схема работает для фрагментов конфигурации в директориях conf-available и conf-enabled, а также для модулей в mods-available и mods-enabled — для управления ими используются команды a2enconf, a2disconf, a2enmod и a2dismod.
Журналы: все входящие запросы фиксируются в /var/log/apache2/access.log, ошибки — в /var/log/apache2/error.log. Уровень детализации журнала ошибок регулируется директивой LogLevel в конфигурации Apache.
Рекомендуем также изучить наше руководство «Как защитить Apache с помощью Let’s Encrypt на Ubuntu».
Заключение
Мы прошли полный цикл настройки Apache на Ubuntu 20.04: установили сервер, открыли нужные порты в брандмауэре, разобрались с командами управления службой и настроили виртуальные хосты для хостинга нескольких доменов. Теперь у вас есть работающий веб-сервер и понимание его структуры — этого достаточно для уверенного старта.
Надёжная площадка для вашего сервера
Хотите развернуть Apache на стабильном хостинге без лишних хлопот? Мы предлагаем производительные VPS и выделенные серверы с круглосуточной технической поддержкой и прозрачными тарифами.
Оставьте заявку — и ваш сервер будет готов уже сегодня!