HTTP-сервер Apache – наиболее распространенный в сети веб-сервер. Он предоставляет множество полезных функций, включая динамическую загрузку модулей, надежную поддержку мультимедиа и широкую интеграцию с другим популярным программным обеспечением.
В этом туториале вы узнаете, как установить веб-сервер Apache на Ubuntu 22.04.
Требования
Прежде чем приступить к работе, на вашем сервере должен быть пользователь без root с доступом к sudo. Также нужно включить базовый брандмауэр для блокирования ненужных портов. Как настроить учетную запись обычного пользователя и установить брандмауэр для вашего сервера, вы можете узнать в нашей статье.
Когда всё настроено, войдите в систему как пользователь без root.
1: Установка Apache
Apache есть в стандартном репозитории Ubuntu, поэтому его можно установить с помощью стандартного пакетного менеджера.
Начнем с обновления локального индекса пакетов, чтобы отразить последние изменения в основной ветке:
sudo apt update
Затем установим пакет apache2:
sudo apt install apache2
После этого apt установит Apache и все необходимые зависимости.
2: Настройка брандмауэра
Перед тестированием Apache необходимо изменить настройки брандмауэра, чтобы разрешить внешний доступ к веб-портам по умолчанию. У вас должен быть настроен брандмауэр UFW для ограничения доступа к вашему серверу, если вы следовали инструкциям в предварительных требованиях.
Apache во время установки регистрируется в UFW и предлагает несколько профилей приложений, с помощью которых можно включать или отключать доступ через брандмауэр.
Чтобы посмотреть список профилей ufw введите:
sudo ufw app list
Выводится список:
Available applications: Apache Apache Full Apache Secure OpenSSH
Из вывода получаем, что для Apache доступны три профиля:
- Apache: этот профиль открывает только порт 80 (обычный незашифрованный веб-трафик).
- Apache Full: этот профиль открывает порт 80 (обычный незашифрованный веб-трафик) и порт 443 (зашифрованный трафик TLS/SSL).
- Apache Secure: этот профиль открывает только порт 443 (зашифрованный трафик TLS/SSL).
Рекомендуем включить самый строгий профиль, он всё равно будет разрешать настроенный трафик. Но в этом мануале мы еще не настроили SSL, поэтому нужно разрешить трафик только через порт 80:
sudo ufw allow 'Apache'
Для проверки изменений введите:
sudo ufw status
В выводе будет список разрешенного HTTP-трафика:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)
Как показывает результат, профиль был активирован и доступ к веб-серверу Apache разрешен.
3: Тестирование веб-сервера
Ubuntu после установки запустит Apache автоматически. То есть, веб-сервер уже должен работать.
С помощью системы инициализации systemd мы можем убедиться, что он запустился. Запросите его состояние:
sudo systemctl status apache2
Получаем вывод:
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
Согласно этому выводу сервис успешно запустился. Но лучше ещё запросить страницу Apache, чтобы убедиться, что веб-сервер работает правильно.
Чтобы открыть стандартную посадочную страницу Apache, укажите свой домен. Если у вас нет домена, введите внешний IP-адрес своего сервера. Если вы не знаете свой IP-адрес, вы можете узнать его с помощью команды:
hostname -I
Вы получите список адресов, разделенный пробелами. Проверьте каждый полученный адрес в браузере, чтобы найти адрес вашего сервера.
Другой вариант — с помощью ресурса Icanhazip, который должен предоставить вам внешний IP-адрес, прочитанный из другого места в Интернете:
curl -4 icanhazip.com
Узнав свой внешний IP-адрес, введите в строку браузера:
http://your_server_ip
Вы увидите стандартную страницу Apache для Ubuntu:
Эта страница дает понять, что веб-сервер Apache работает правильно; также она содержит базовую информацию о важных файлах и каталогах Apache.
4: Управление процессами Apache
Теперь давайте посмотрим, как управлять веб-сервером с помощью systemctl.
Чтобы остановить веб-сервер, введите:
sudo systemctl stop apache2
Запустить его поможет команда:
sudo systemctl start apache2
Для перезапуска используйте команду:
sudo systemctl restart apache2
Во время настройки Apache можно часто перезагружать, не сбрасывая соединений. Для этого нужно использовать команду:
sudo systemctl reload apache2
По умолчанию Apache добавлен в автозагрузку (запускается автоматически вместе с сервером). Чтобы удалить этот сервис из автозагрузки, отключите его:
sudo systemctl disable apache2
Чтобы добавить Apache в автозагрузку, используйте эту команду:
sudo systemctl enable apache2
Теперь Apache будет снова запускаться автоматически.
5: Настройка виртуальных хостов (рекомендуется)
На веб-сервере Apache вы можете использовать виртуальные хосты (в Nginx это блоки server) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен example.com, который нужно заменить доменом вашего сайта.
В Ubuntu 22.04 веб-сервер Apache по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для работы одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.
Создайте каталог для your_domain:
sudo mkdir /var/www/your_domain
Затем укажите права на каталог с помощью переменной $USER:
sudo chown -R $USER:$USER /var/www/your_domain
Права должны быть предоставлены, если вы не меняли значение umask, которое устанавливает права файлов по умолчанию. Чтобы убедиться, что права предоставлены и пользователь может работать с файлами, нужно ввести команду:
sudo chmod -R 755 /var/www/your_domain
Затем создайте образец страницы index.html с помощью nano или другого текстового редактора:
sudo nano /var/www/your_domain/index.html
Добавьте в файл следующий код HTML:
<html> <head> <title>Welcome to Your_domain!</title> </head> <body> <h1>Success! The your_domain virtual host is working!</h1> </body> </html>
Сохраните и закройте файл.
Нужно создать файл виртуального хоста с правильными директивами, чтобы Apache мог обслуживать этот контент. Чтобы напрямую не изменять файл конфигурации по умолчанию, расположенный в /etc/apache2/sites-available/000-default.conf, мы создадим новый в /etc/apache2/sites-available/your_domain.conf:
sudo nano /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 на наш новый каталог, а ServerAdmin на адрес электронной почты, к которому может получить доступ администратор сайта your_domain. Также мы добавили две директивы: ServerName, которая устанавливает базовый домен, который должен соответствовать этому определению виртуального хоста, и ServerAlias – определяет дополнительные имена, которые должны соответствовать базовому имени.
После того, как закончите, сохраните и закройте файл.
Включим файл с помощью a2ensite:
sudo a2ensite your_domain.conf
Отключите сайт по умолчанию, определенный в 000-default.conf:
sudo a2dissite 000-default.conf
Далее проверим ошибки настроек:
sudo apache2ctl configtest
Вывод должен быть следующим:
Syntax OK
Перезапустите Apache, чтобы изменения вступили в силу:
sudo systemctl restart apache2
Теперь Apache должен обслуживать ваше доменное имя. Для проверки перейдите по адресу http://your_domain, вы должны увидеть что-то вроде этого:
6: Важные файлы и каталоги Apache
Теперь, когда вы знаете, как управлять Apache, разберем несколько важных каталогов и файлов.
Контент
- /var/www/html: Фактический веб-контент, который по умолчанию состоит только из стандартной страницы Apache (ранее вы её уже видели), обслуживается из каталога /var/www/html. Это можно изменить, внеся корректировки в файлы конфигурации Apache.
Настройка сервера
- /etc/apache2: каталог конфигурации Apache. Все файлы настроек Apache находятся здесь.
- /etc/apache2/apache2.conf: основной файл настройки Apache. Его можно корректировать для внесения изменений в глобальную конфигурацию Apache. Этот файл отвечает за загрузку многих других файлов в каталоге конфигурации.
- /etc/apache2/ports.conf: В этом файле указаны порты, которые прослушивает Apache. По умолчанию Apache прослушивает порт 80 и дополнительно порт 443, если включен SSL.
- /etc/apache2/sites-available/: каталог, в котором могут храниться виртуальные хосты для каждого сайта. Apache не будет использовать файлы настроек из этого каталога, если они не связаны с каталогом sites-enabled. Обычно вся конфигурация блока выполняется в этом каталоге, а затем включается путем ссылки на другой каталог с помощью команды a2ensite.
- /etc/apache2/sites-enabled/: каталог, в котором хранятся включенные виртуальные хосты для каждого сайта. Обычно они создаются по ссылке на файлы настроек из каталога sites-available с помощью команды a2ensite. Apache считывает конфигурационные файлы и ссылки, находящиеся в этом каталоге, при запуске или перезагрузке для компиляции полной настройки.
- /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Эти каталоги имеют те же отношения, что и каталоги sites-available и sites-enabled, но используются для хранения фрагментов настроек, которые не принадлежат виртуальному хосту. Файлы в каталоге conf-available можно включить с помощью команды a2enconf, а отключить – a2disconf.
- /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: эти каталоги содержат доступные и включенные модули соответственно. Файлы, заканчивающиеся на .load, содержат фрагменты для загрузки определенных модулей, а которые заканчиваются на .conf, содержат настройки этих модулей. Модули можно включать и отключать с помощью команд a2enmod и a2dismod.
Логи сервера
- /var/log/apache2/access.log: каждый запрос к вашему веб-серверу записывается в этот лог по умолчанию, если Apache не настроен иначе.
- /var/log/apache2/error.log: по умолчанию все ошибки записываются в этот файл. Директива LogLevel в конфигурации Apache определяет, насколько подробную информацию будут содержать журналы ошибок.
Заключение
В этом мануале вы научились устанавливать веб-сервер Apache и управлять его процессами. Теперь у вас есть много вариантов для дальнейшей работы: вы можете выбрать тип контента, который хотите обслуживать, и внедрить дополнительные технологии для создания более сложного сайта.
Если вы хотите создать более полный стек приложений, вы можете прочитать эту статью о том, как настроить стек LAMP в Ubuntu.