Как установить веб-сервер Apache в Debian 11
Введение
HTTP-сервер Apache является наиболее широко используемым веб-сервером в мире. Он предоставляет множество мощных функций, включая динамически загружаемые модули, надежную поддержку мультимедиа и обширную интеграцию с другим популярным программным обеспечением.
В этом руководстве вы установите веб-сервер Apache на сервер Debian 11.
Предпосылки
Прежде чем приступить к работе с этим руководством, вам понадобится сервер Debian 11, настроенный пользователем без полномочий root с привилегиями sudo
и включенным брандмауэром для блокировки несущественных портов. Вы можете узнать, как это сделать, следуя нашему руководству по начальной настройке сервера для Debian 11.
Когда вы закончите настройку, войдите в систему как пользователь без полномочий root и перейдите к первому шагу.
Шаг 1 — Установка Apache
Apache доступен в репозиториях программного обеспечения Debian по умолчанию, что позволяет установить его с помощью обычных инструментов управления пакетами.
Начните с обновления локального индекса пакетов, чтобы отразить последние изменения исходной ветки:
- sudo apt update
Затем установите пакет apache2
:
- sudo apt install apache2
После подтверждения установки apt
установит Apache и все необходимые зависимости.
Шаг 2 — Настройка брандмауэра
Перед тестированием Apache необходимо изменить настройки брандмауэра, чтобы разрешить внешний доступ к веб-портам по умолчанию. Если вы следовали инструкциям в предварительных требованиях, у вас должен быть настроен брандмауэр UFW для ограничения доступа к вашему серверу.
Во время установки Apache регистрируется в UFW, чтобы предоставить несколько профилей приложений, которые можно использовать для включения или отключения доступа к Apache через брандмауэр.
Перечислите профили приложений ufw
, выполнив следующее:
- sudo ufw app list
Результатом будет список профилей приложений:
OutputAvailable applications:
AIM
Bonjour
CIFS
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .
Профили Apache начинаются с WWW:
WWW
: этот профиль открывает только порт80
(обычный незашифрованный веб-трафик)WWW Cache
: этот профиль открывает только порт8080
(иногда используется для кэширования и веб-прокси)WWW Full
: этот профиль открывает как порт80
(обычный незашифрованный веб-трафик), так и порт443
(зашифрованный трафик TLS/SSL).WWW Secure
: этот профиль открывает только порт443
(зашифрованный трафик TLS/SSL)
Рекомендуется включить наиболее строгий профиль, который по-прежнему будет разрешать трафик, который вы настроили. Поскольку вы еще не настроили SSL для своего сервера в этом руководстве, вам нужно только разрешить трафик через порт 80
:
- sudo ufw allow 'WWW'
Вы можете проверить изменение, проверив статус:
- sudo ufw status
На выходе будет список разрешенного HTTP-трафика:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)
Как видно из выходных данных, профиль был активирован, чтобы разрешить доступ к веб-серверу Apache.
Шаг 3 — Проверка вашего веб-сервера
В конце процесса установки Debian 11 запускает Apache. Веб-сервер уже должен быть запущен.
Убедитесь, что служба активна, выполнив команду для системы инициализации systemd
:
- sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Wed 2022-07-06 22:05:45 UTC; 23s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 2796 (apache2)
Tasks: 55 (limit: 9509)
Memory: 21.0M
CPU: 67ms
CGroup: /system.slice/apache2.service
├─2796 /usr/sbin/apache2 -k start
├─2798 /usr/sbin/apache2 -k start
└─2799 /usr/sbin/apache2 -k start
Эти выходные данные подтверждают, что служба успешно запущена. Однако лучший способ проверить это — запросить страницу у Apache.
Вы можете получить доступ к целевой странице Apache по умолчанию, чтобы убедиться, что программное обеспечение работает правильно через ваш IP-адрес. Если вы не знаете IP-адрес вашего сервера, вы можете получить его несколькими способами из командной строки.
Попробуйте написать следующее в командной строке вашего сервера:
- hostname -I
Вы получите несколько адресов, разделенных пробелами. Вы можете попробовать каждый из них в своем веб-браузере, чтобы определить, работают ли они.
Другой вариант — использовать инструмент icanhazip.com
, представляющий собой веб-сайт, который при доступе возвращает общедоступный IP-адрес вашего компьютера, считанный из другого места в Интернете. Если у вас еще не установлен curl
, вы можете установить его с помощью следующей команды:
- sudo apt install curl
Затем используйте curl
, чтобы получить icanhazip.com
с помощью IPv4:
- curl -4 icanhazip.com
Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера:
http://your_server_ip
Вы должны увидеть стандартную веб-страницу Debian 11 Apache:
Эта страница указывает на то, что 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
Чтобы снова включить службу для запуска при загрузке, запустите:
- sudo systemctl enable apache2
Apache теперь будет запускаться автоматически при повторной загрузке сервера.
Шаг 5 — Настройка виртуальных хостов (рекомендуется)
При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналогично блокам сервера в Nginx) для инкапсуляции деталей конфигурации и размещения более одного домена с одного сервера. Мы настроим домен под названием your_domain, но вы должны заменить его своим собственным доменным именем.
Информация: если вы настраиваете доменное имя в DigitalOcean, обратитесь к нашей сетевой документации.
В Apache в Debian 11 по умолчанию включен один серверный блок, настроенный для обслуживания документов из каталога /var/www/html
. Хотя это хорошо работает для одного сайта, это может стать громоздким, если вы размещаете несколько сайтов. Вместо изменения /var/www/html
создайте структуру каталогов в /var/www
для сайта your_domain, оставив /var/www/html
в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует каким-либо другим сайтам.
Создайте каталог для your_domain следующим образом:
- sudo mkdir -p /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
:
- 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>
Сохраните и закройте файл, когда закончите. Если вы используете nano
, вы можете сделать это, нажав CTRL + X
, затем Y
и ENTER
.
Чтобы Apache мог обслуживать этот контент, необходимо создать файл виртуального хоста с правильными директивами. Вместо того, чтобы напрямую изменять файл конфигурации по умолчанию, расположенный в /etc/apache2/sites-available/000-default.conf
, создайте новый в /etc/apache2/sites-available/< mark>ваш_домен.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
Вы должны получить следующий вывод:
OutputAH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Перезапустите Apache, чтобы изменения вступили в силу:
- sudo systemctl restart apache2
Теперь 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 в Debian 11.