Apache – это веб-сервер – программа, передающая и получающая данные по протоколам HTTP и HTTPS. В основном используются релизы второй версии, то есть Apache 2.

С помощью модулей Apache, к нему можно добавлять поддержку различных языков программирования.

Apache входит в основные репозитории Ubuntu, поэтому устанавливается командой sudo apt install apache2. Перед этим рекомендуют обновить локальный индекс пакетов: sudo apt update

После установки Apache зарегистрирует себя в UFW, создав несколько профилей:

Профили Apache в UFW

Профиль Apache открывает порт 80, по которому идет обычный не зашифрованный веб-трафик. Профиль Apache Full открывает как порт 80, так и 443, по которому трафик шифруется с помощью TLS/SSL. Apache Secure открывает только порт 443.

Теперь следует настроить поведение брандмауэра по отношению к Apache. Обычно разрешают доступ к веб-серверу по обоим портам:

sudo ufw allow 'Apache Full'

Проверяем статус сервисов:

ufw status

Вариант с v6 означает поддержку сетевого протокола IPv6.

Apache после установки сразу запускается, что можно проверить командой systemctl status apache2. Среди вывода должна быть выделенная надпись "active (running)".

Теперь, если набрать в браузере IP сервера, должна отображаться стартовая страница Apache:

Дефолтная html-страница Apache

Если планируется на сервере размещать не один сайт, следует выполнить настройку виртуальных хостов. Каждый хост будет содержать настройки для отдельно взятого сайта.

По умолчанию в Apache уже есть один виртуальный хост, настроенный на отдачу документов из каталога /var/www/html/:

Файл index.html в каталоге /var/www/html

Файл index.html – это тот, который мы видим, набрав в браузере IP-адрес нашего сервера. Если на сервере планируется разместить один сайт, то его файлы можно поместить в данный каталог, удалив исходный index.html.

Корневые каталоги других сайтов также рекомендуется размещать в директории /var/www/. Например, корневой каталог сайта может выглядеть так /var/www/example.com/html, или /var/www/example.com/, или /var/www/example.com/public_html/ и т. п.

Для создания цепочки каталогов, команду mkdir следует использовать с ключом -p. Также выполнять команду надо под sudo, так как права на /var/www/ принадлежат пользователю root.

Создание каталога для виртуального хоста

Теперь следует поменять владельца каталога с файлами сайта на текущего пользователя и его группу. Иначе редактировать файлы будет не удобно:

Изменение владельца у каталога

С помощью редактора nano или vim создадим тестовую страницу HTML. Для nano команда будет такой: nano /var/www/example.com/index.html:

Создание файла index.html

Подготовив каталог, переходим к непосредственной настройке виртуальных хостов в Apache.

Конфигурационные файлы виртуальных хостов находятся в каталоге /etc/apache2/sites-available/:

Каталог /etc/apache2/sites-available/

Файл 000-default.conf содержит настройки хоста для каталога /var/www/html/. Для других виртуальных хостов создаются отдельные файлы с подобным представленному ниже содержанием. Обратите внимание на имя файла. Оно имеет расширение conf, а называется именем домена. Создавать файл надо под sudo.

Создание конфигурационного файла виртуального хоста

Доступный (available) виртуальный хост – не значит включенный (enabled). Если мы посмотрим каталог /etc/apache2/sites-enabled/, то не увидим там ссылку на конфигурационный файл нового хоста:

Каталог /etc/apache2/sites-enabled/

Чтобы она там появилась, надо выполнить команду sudo a2ensite ваш_сайт.conf, желательно проверить отсутствие ошибок и перезагрузить Apache:

Включение виртуального хоста

Теперь сайт будет открываться через браузер по доменному имени, если вы добавили домен с соответствующими настройками DNS в "Личном кабинете" хостинговой компании. У хостера FORNEX из настроек требуется указать только IP сервера:

Добавление домена в панели

Кроме того, у регистратора доменных имен заранее должны быть указаны NS-серверы хостера. Их обновление обычно занимает некоторое время.

Если же требуется только протестировать сайт, следует свой локальный компьютер (не VPS) при запросе соответствующего домена направлять на IP вашего сервера. В системах Linux для этого редактируется файл /etc/hosts:

Редактирование /etc/hosts

Обратите внимание, поскольку сертификат для протокола HTTPS не устанавливался, сайт будет доступен только по адресу, который начинается с http.

Разрешение переопределения и перезаписи .htaccess

По умолчанию в Apache отключено использование файлов .htaccess. Однако они часто требуются для настройки директорий к поведению веб-сервера. Эти файлы широко используются в каталогах таких CMS как Drupal и WordPress.

Чтобы разрешить файлы .htaccess для конкретного сайта (его корневого каталога), надо прописать директиву AllowOverride в соответствующем сайту конфигурационном файле Apache, который находится в каталоге /etc/apache2/sites-available/.

Эта директива располагается внутри блока Directory, который находится внутри блока VirtualHost:

Директива AllowOverride. Порт 80

Когда сайт переводится на протокол HTTPS, в sites-available появляется еще один конфигурационный файл, уже для порта 443. В этом файле также надо прописать AllowOverride, или она прописывается сама, если сертификат устанавливается после того, как директива была прописана в конфигурационном файле для порта 80.

Директива AllowOverride. Порт 443

После установки директивы следует включить модуль перезаписи mod_rewrite, проверить конфигурацию на наличие ошибок и перезапустить Apache:

sudo a2enmod rewrite
sudo apache2ctl configtest
sudo systemctl restart apache2

Вопросы для самопроверки:

  1. Что такое Apache и для каких целей он используется?
  2. Какая команда используется для проверки статуса сервиса Apache?
  3. Где в Apache по умолчанию расположены файлы виртуальных хостов?
  4. В каком каталоге находятся конфигурационные файлы сайтов, доступных через Apache?
  5. Какой модуль нужен для перезаписи URL-адресов в Apache и как его включить?