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

HTTP-сервер Apache – наиболее распространенный веб-сервер в интернете. Он предоставляет множество полезных функций, включая динамическую загрузку модулей, надежную поддержку мультимедиа и широкую интеграцию с другим популярным программным обеспечением.

В этом мануале вы узнаете, как установить веб-сервер Apache на ваш сервер Ubuntu 20.04.

Требования

  • Сервер Ubuntu 20.04.
  • Пользователь с доступом к sudo (все действия руководства нужно выполнять в сессии этого пользователя).
  • Базовый брандмауэр.

Все необходимые инструкции можно найти в мануале по начальной настройке сервера.

Настроив свой сервер, войдите в сессию пользователя с доступом к sudo, чтобы начать работу.

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: поддерживает только шифрованный трафик TLS/SSL по порту 443.

Рекомендуется включить наиболее строгий профиль, который  при этом позволит поддерживать текущий трафик. Поскольку мы еще не настроили SSL-сертификат, нам нужно разрешить трафик по порту 80:

sudo ufw allow 'Apache'

Убедитесь, что профиль включился:

sudo ufw status

Вы увидите такой вывод:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Apache                     ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Apache (v6)                ALLOW       Anywhere (v6)

3: Проверка веб-сервера

После установки сервер Ubuntu 20.04 запускает Apache самостоятельно.

Чтобы убедиться, что веб-сервер запустился, запросите его состояние:

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

Вы получите список адресов, разделенных пробелами. Проверьте каждый полученный адрес в браузере, чтобы узнать, какой из них работает.

Также вы можете узнать свой IP, запросив его с помощью команды curl. Чтобы извлечь icanhazip.com (IPv4) с помощью curl, введите:

curl -4 icanhazip.com

Узнав свой внешний адрес, введите в браузер:

http://your_server_ip

Вы увидите стандартную страницу Apache для Ubuntu 20.04.

Эта страница позволяет убедиться, что веб-сервер 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

5: Настройка виртуального хоста (рекомендуется)

На веб-сервере Apache вы можете использовать виртуальные хосты (в Nginx это блоки server) для изоляции настроек и размещения нескольких доменов на одном сервере. Здесь используется условный домен your_domain, который вы должны заменить собственным доменом.

Apache Ubuntu 20.04 по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для обслуживания одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в  /var/www для сайта your_domain, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не отвечает другим сайтам.

Создайте каталог для your_domain.

sudo mkdir /var/www/your_domain

Затем задайте права на каталог с помощью переменной $USER:

sudo chown -R $USER:$USER /var/www/your_domain

Права должны быть установлены верно, если вы не меняли unmask, но на всякий случай вы можете ввести эту команду (тогда права на чтение, запись и выполнение будут только у владельца каталога, все остальные пользователи и групп смогут только читать его):

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

Контент

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

Конфигурации

  • /etc/apache2: каталог Apache, в котором хранятся все конфигурационные файлы.
  • /etc/apache2/apache2.conf: главный конфигурационный файл, в котором находятся глобальные настройки Apache. Он отвечает за загрузку других файлов.
  • /etc/apache2/ports.conf: указывает порты, которые прослушивает Apache. По умолчанию веб-сервер прослушивает порт 80; также он может прослушивать порт 443 после включения модуля для поддержки SSL.
  • /etc/apache2/sites-available/: каталог, в котором хранятся все файлы виртуальных хостов. Apache не будет использовать их, пока они не связаны с каталогом sites-enabled (см. ниже). Обычно в этом каталоге происходит настройка виртуальных хостов.
  • /etc/apache2/sites-enabled/: хранит включенные виртуальные хосты. При запуске или перезапуске Apache читает конфигурационные файлы и ссылки в этом каталоге, чтобы скомпилировать конфигурации.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: каталоги типа sites-available и sites-enabled, работают по тому же принципу. В conf-available хранятся фрагменты конфигураций, которых нет в виртуальном хосте. Файлы в conf-available включаются с помощью команды a2enconf и выключаются с помощью a2disconf.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: также работают по принципу sites-available и sites-enabled. Эти каталоги содержат доступные и активные модули соответственно. Файлы с расширением .load содержат фрагменты для загрузки конкретных модулей. Файлы с расширением .conf хранят настройки этих модулей. Модули включаются и выключаются с помощью команд a2enmod и a2dismod.

Логи сервера

  • /var/log/apache2/access.log: по умолчанию каждый запрос к веб-серверу записывается в этом логе доступа (Apache можно настроить иначе).
  • /var/log/apache2/error.log: по умолчанию здесь записываются все сообщения об ошибках. Директива LogLevel в настройках Apache определяет, сколько данных будет вноситься в лог.

Заключение

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

Читайте также: Установка стека LAMP в Ubuntu 20.04

Tags: , ,