Установка веб-сервера Apache в Debian 10
Debian | Комментировать запись
HTTP-сервер Apache – наиболее распространенный веб-сервер. Он предоставляет множество полезных функций, включая динамическую загрузку модулей, надежную поддержку мультимедиа и широкую интеграцию с другим популярным программным обеспечением.
В этом мануале вы узнаете, как установить веб-сервер Apache на Debian 10.
Требования
- Сервер Debian 10.
- Пользователь с доступом к sudo (все действия руководства нужно выполнять в сессии этого пользователя).
- Базовый брандмауэр.
Все необходимые инструкции можно найти в мануале по начальной настройке сервера.
1: Установка Apache
Пакет Apache есть в стандартном репозитории Debian, потому его можно установить с помощью стандартного пакетного менеджера.
Обновите локальный индекс пакетов и установите apache2.
sudo apt update
sudo apt install apache2
Команда установит Apache и все его зависимости.
2: Настройка брандмауэра
Теперь нужно отредактировать параметры брандмауэра и открыть доступ к стандартному порту Apache. Если вы выполнили мануал по начальной настройке, сейчас брандмауэр UFW блокирует доступ к веб-серверу.
Во время установки Apache регистрирует в UFW несколько своих профилей, которые упрощают процесс настройки брандмауэра для портов веб-сервера.
Чтобы просмотреть профили приложений ufw, введите:
sudo ufw app list
Вы увидите список доступных профилей:
Available 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: поддерживает только шифрованный трафик TLS/SSL по порту 443.
Рекомендуется включить наиболее строгий, ограничительный профиль, который при этом позволит поддерживать текущий трафик. Поскольку мы еще не настроили SSL-сертификат, нам нужно разрешить трафик по порту 80:
sudo ufw allow 'WWW'
Убедитесь, что профиль включился:
sudo ufw status
Вы увидите:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)
3: Проверка веб-сервера
После установки Debian 10 запускает 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 Fri 2019-07-19 15:33:01 UTC; 4min 13s ago
Docs: https://httpd.apache.org/docs/2.4/
. . .
Jul 19 15:33:01 debssh systemd[1]: Starting The Apache HTTP Server...
Jul 19 15:33:01 debssh apachectl[2791]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive global
Jul 19 15:33:01 debssh systemd[1]: Started The Apache HTTP Server.
Согласно этому выводу сервис работает правильно. Но лучше также запросить страницу Apache, чтобы подтвердить работу веб-сервера.
Чтобы открыть стандартную посадочную страницу Apache, укажите свой домен. Если у вас нет домена, укажите внешний IP-адрес своего сервера. Если вы не знаете свой IP-адрес, вы можете узнать его с помощью командной строки. Введите:
hostname -I
Вы получите список адресов, разделенных пробелами. Проверьте каждый полученный адрес в браузере.
Также вы можете узнать свой IP, запросив его с помощью команды curl.
Чтобы установить curl, введите:
sudo apt install curl
Чтобы извлечь icanhazip.com (IPv4) с помощью curl, введите:
curl -4 icanhazip.com
Узнав свой внешний адрес, введите в браузер:
http://server_domain_or_IP
Вы увидите стандартную страницу Apache для Debian 10.
Эта страница позволяет убедиться, что веб-сервер Apache работает правильно; также она содержит базовую информацию о важных файлах и каталогах Apache.
4: Управление процессами Apache
Чтобы остановить сервер, введите:
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 в Debian 10 по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для обслуживания одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты. Создайте структуру каталогов в /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.
Создайте каталог для your_domain. Используйте флаг -p для создания всех необходимых родительских каталогов:
sudo mkdir -p /var/www/your_domain/html
Затем укажите права на каталог с помощью переменной $USER:
sudo chown -R $USER:$USER /var/www/your_domain/html
Права должны быть установлены верно, если вы не меняли unmask, но на всякий случай вы можете их проверить:
sudo chmod -R 755 /var/www/your_domain
Затем создайте образец страницы index.html с помощью nano или другого редактора:
nano /var/www/your_domain/html/index.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 admin@your_email_domain
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain/html
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
Если ошибок нет, команда вернет такой вывод:
AH00558: 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://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 в Debian 10
Tags: Apache, Debian, Debian 10