Введение
Сервер Apache HTTP – самый распространенный веб-сервер в мире. Он обладает множеством мощных функций, включая динамически загружаемые модули, надежную поддержку мультимедиа и обширную интеграцию с другими популярными программными продуктами.
В этом руководстве вы узнаете, как установить веб-сервер Apache на вашем сервере Ubuntu 22.04.
Развертывайте свои приложения из GitHub с помощью платформы приложений DigitalOcean. Позвольте DigitalOcean масштабировать ваше приложение.
Предварительные требования
Прежде чем начать, вам понадобится настроенный сервер Ubuntu 22.04 с пользователем, не являющимся root, имеющим права sudo
, а также включенным брандмауэром для блокировки неиспользуемых портов. Вы можете узнать, как это сделать, следуя нашему руководству по начальной настройке сервера для Ubuntu 22.04.
После завершения этой настройки войдите под своим пользователем, не являющимся root, и перейдите к первому шагу.
Шаг 1 — Установка Apache
Apache доступен в репозиториях программного обеспечения по умолчанию Ubuntu, что позволяет установить его с использованием стандартных средств управления пакетами.
Начните с обновления локального индекса пакетов, чтобы отразить последние изменения:
Затем установите пакет apache2
:
После подтверждения установки apt
установит Apache и все необходимые зависимости.
Шаг 2 — Настройка брандмауэра
Перед тестированием Apache необходимо изменить настройки брандмауэра для разрешения внешнего доступа к стандартным веб-портам. Если вы следовали инструкциям в предварительных требованиях, у вас должен быть настроенный брандмауэр UFW для ограничения доступа к вашему серверу.
Во время установки Apache регистрирует себя в UFW для предоставления нескольких профилей приложений, которые можно использовать для включения или отключения доступа к Apache через брандмауэр.
Перечислите профили приложений ufw
, выполнив следующее:
Ваш вывод будет списком профилей приложений:
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Как указано в выводе, доступны три профиля для Apache:
Apache
: Этот профиль открывает только порт80
(обычный, незашифрованный веб-трафик)Apache Full
: Этот профиль открывает как порт80
(обычный, незашифрованный веб-трафик), так и порт443
(зашифрованный трафик TLS/SSL)Apache Secure
: Этот профиль открывает только порт443
(зашифрованный трафик TLS/SSL)
Рекомендуется включить самый ограничительный профиль, который все еще позволит трафику, который вы настроили. Поскольку вы еще не настроили SSL для вашего сервера в этом руководстве, вам нужно разрешить только трафик на порту 80
:
Вы можете проверить изменение, проверив статус:
Вывод предоставит список разрешенного HTTP-трафика:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Как указано в выводе, профиль активирован для доступа к веб-серверу Apache.
Шаг 3 — Проверка вашего веб-сервера
В конце процесса установки Ubuntu 22.04 запускает Apache. Веб-сервер уже будет запущен и работать.
Убедитесь, что служба активна, запустив команду для инициализации системы systemd
:
Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 5089 (apache2)
Tasks: 55 (limit: 1119)
Memory: 4.8M
CPU: 33ms
CGroup: /system.slice/apache2.service
├─5089 /usr/sbin/apache2 -k start
├─5091 /usr/sbin/apache2 -k start
└─5092 /usr/sbin/apache2 -k start
Как подтверждается этим выводом, служба успешно запущена. Однако лучший способ проверить это – запросить страницу из Apache.
Вы можете получить доступ к стандартной стартовой странице Apache, чтобы подтвердить правильную работу программного обеспечения через свой IP-адрес. Если вы не знаете IP-адрес вашего сервера, вы можете получить его несколькими способами из командной строки.
Попробуйте написать следующее в командной строке вашего сервера:
Вы получите несколько адресов, разделенных пробелами. Вы можете попробовать каждый из них в вашем веб-браузере, чтобы определить, работают ли они.
Другой вариант – использовать бесплатный инструмент icanhazip.com
. Это веб-сайт, который при доступе возвращает публичный IP-адрес вашего компьютера, прочитанный из другого местоположения в Интернете:
Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку вашего браузера:
http://your_server_ip
Вы увидите стандартную веб-страницу Apache для Ubuntu 22.04, как на следующем изображении:
Эта страница указывает на то, что Apache работает правильно. Она также содержит некоторую базовую информацию о важных файлах и местоположениях каталогов Apache.
Шаг 4 — Управление процессом Apache
Теперь, когда ваш веб-сервер запущен и работает, давайте рассмотрим некоторые основные команды управления с помощью systemctl
.
Чтобы остановить ваш веб-сервер, выполните:
Чтобы запустить веб-сервер, когда он остановлен, выполните:
Чтобы остановить, а затем снова запустить сервис, выполните:
Если вы просто вносите изменения в конфигурацию, Apache часто может перезагрузиться без разрыва соединений. Для этого используйте следующую команду:
По умолчанию Apache настроен на автоматический запуск при загрузке сервера. Если это не то, что вам нужно, отключите это поведение, запустив:
Чтобы снова включить автоматический запуск службы при загрузке, выполните:
Теперь Apache будет автоматически запускаться при загрузке сервера снова.
Шаг 5 — Настройка виртуальных хостов (Рекомендуется)
При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналогичные блокам сервера в Nginx), чтобы инкапсулировать детали конфигурации и размещать более одного домена на одном сервере. Мы настроим домен с именем ваш_домен, но вам следует заменить это своим собственным именем домена.
Информация: Если вы настраиваете доменное имя с помощью DigitalOcean, обратитесь к нашей документации по сетевому взаимодействию.
Apache на Ubuntu 22.04 по умолчанию имеет один серверный блок, настроенный на обслуживание документов из каталога /var/www/html
. Хотя это хорошо работает для одного сайта, это может стать неудобным, если вы хостите несколько сайтов. Вместо изменения /var/www/html
создайте структуру каталогов внутри /var/www
для сайта ваш_домен, оставив /var/www/html
на месте в качестве каталога по умолчанию для обслуживания, если запрос клиента не соответствует ни одному другому сайту.
Создайте каталог для ваш_домен следующим образом:
Затем назначьте владельца каталога пользователю, под которым вы в настоящее время вошли, с помощью переменной среды $USER
:
Если вы не модифицировали значение umask, устанавливающее права доступа по умолчанию, права доступа вашего корневого веб-каталога должны быть правильными. Чтобы убедиться, что ваши разрешения правильные и позволяют владельцу читать, записывать и выполнять файлы, предоставляя только права на чтение и выполнение группам и другим, вы можете ввести следующую команду:
Затем создайте образец страницы index.html
с помощью nano
или вашего любимого редактора:
Внутри добавьте следующий образец HTML:
Сохраните и закройте файл, когда закончите. Если вы используете nano
, вы можете сделать это, нажав CTRL + X
, затем Y
и ENTER
.
Чтобы Apache мог обслуживать этот контент, необходимо создать файл виртуального хоста с правильными директивами. Вместо того чтобы изменять файл конфигурации по умолчанию, расположенный в /etc/apache2/sites-available/000-default.conf
напрямую, создайте новый файл в /etc/apache2/sites-available/ваш_домен.conf
:
Добавьте следующий блок конфигурации, который аналогичен по умолчанию, но обновлен для вашего нового каталога и доменного имени:
Обратите внимание, что мы обновили DocumentRoot
до нашего нового каталога и ServerAdmin
до электронной почты, к которой может получить доступ администратор сайта ваш_домен. Мы также добавили две директивы: ServerName
, которая устанавливает базовый домен, который будет соответствовать этому определению виртуального хоста, и ServerAlias
, который определяет дополнительные имена, которые будут соответствовать, как если бы они были базовым именем.
Сохраните и закройте файл, когда закончите.
Теперь включите файл с помощью инструмента a2ensite
:
Отключите сайт по умолчанию, определенный в 000-default.conf
:
Затем проверьте наличие ошибок конфигурации:
Вы должны получить следующий вывод:
Output. . .
Syntax OK
Перезапустите Apache, чтобы применить ваши изменения:
Теперь Apache будет обслуживать ваше доменное имя. Вы можете проверить это, перейдя на http://ваш_домен
, где вы увидите что-то вроде следующего:
Шаг 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 определяет, насколько подробными будут журналы ошибок.
Вывод
Теперь, когда у вас установлен веб-сервер, у вас есть множество вариантов для типа контента, который вы можете обслуживать, и технологий, которые вы можете использовать для создания более богатого опыта.
Если вы хотите построить более полный стек приложений, вы можете прочитать эту статью о конфигурации стека LAMP на Ubuntu 22.04