Site icon 8HOST.COM

Установка веб-сервера Apache в Ubuntu 22.04

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 доступны три профиля:

Рекомендуем включить самый строгий профиль, он всё равно будет разрешать настроенный трафик. Но в этом мануале мы еще не настроили 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, разберем несколько важных каталогов и файлов.

Контент

Настройка сервера

Логи сервера

Заключение

В этом мануале вы научились устанавливать веб-сервер Apache и управлять его процессами. Теперь у вас есть много вариантов для дальнейшей работы: вы можете выбрать тип контента, который хотите обслуживать, и внедрить дополнительные технологии для создания более сложного сайта.

Если вы хотите создать более полный стек приложений, вы можете прочитать эту статью о том, как настроить стек LAMP в Ubuntu.