HTTP-сервер Apache — самый широко используемый веб-сервер в мире. Он имеет множество мощных функций, включая динамически загружаемые модули, надежную поддержку различных медиа-форматов и интеграцию с другим популярным программным обеспечением.
В этом обучающем модуле мы расскажем, как установить веб-сервер Apache на сервере Debian 9.
Прежде чем начать прохождение настоящего обучающего модуля, необходимо настроить на сервере обычного пользователя без привилегий root и с привилегиями sudo. Также вам потребуется включить базовый брандмауэр, чтобы заблокировать все порты, кроме необходимых. Вы научитесь настраивать учетную запись обычного пользователя и брандмауэр для вашего сервера, следуя указаниям руководства Начальная настройка сервера Debian 9.
Создав учетную запись, войдите в систему как пользователь без привилегий root.
Apache поставляется с используемыми по умолчанию хранилищами программного обеспечения Debian, что позволяет использовать для его установки инструменты управления из стандартных пакетов.
Для начала выгрузим указатель локальных пакетов, чтобы отразить последние изменения на предыдущих уровнях:
- sudo apt update
Затем установим пакет apache2
:
- sudo apt install apache2
После подтверждения установки apt
выполнит установку Apache и всех требуемых зависимостей.
Прежде чем тестировать Apache, необходимо изменить настройки брандмауэра, чтобы разрешить доступ к веб-портам по умолчанию. Если вы выполнили предварительные указания , у вас должен быть установлен брандмауэр UFW, настроенный для ограничения доступа к вашему серверу.
Во время установки Apache регистрируется в UFW, предоставляя несколько профилей приложений, которые можно использовать для включения или отключения доступа к Apache через брандмауэр.
Выведите список профилей приложений ufw
, введя следующую команду:
- sudo ufw app list
Вы увидите список профилей приложений:
OutputAvailable applications:
AIM
Bonjour
CIFS
. . .
WWW
WWW Cache
WWW Full
WWW Secure
. . .
Профили Apache начинаются с WWW:
Рекомендуется применять самый ограничивающий профиль, который будет разрешать заданный трафик. Поскольку в этом модуле мы еще не настроили 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)
Как видите, профиль был активирован для разрешения доступа к веб-серверу.
В конце процесса установки Debian 9 запускает Apache. Веб-сервер уже должен быть запущен и работать.
Используйте команду systemd
init system, чтобы проверить работу службы:
- sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-09-05 19:21:48 UTC; 13min ago
Main PID: 12849 (apache2)
CGroup: /system.slice/apache2.service
├─12849 /usr/sbin/apache2 -k start
├─12850 /usr/sbin/apache2 -k start
└─12852 /usr/sbin/apache2 -k start
Sep 05 19:21:48 apache systemd[1]: Starting The Apache HTTP Server...
Sep 05 19:21:48 apache systemd[1]: Started The Apache HTTP Server.
Как видно из результатов, служба успешно запущена. Однако лучше всего протестировать ее запуск посредством запроса страницы из Apache.
Откройте страницу Apache по умолчанию, чтобы подтвердить работу программного обеспечения через ваш IP-адрес: Если вы не знаете IP-адрес вашего сервера, есть несколько способов узнать его с помощью командной строки.
Попробуйте ввести в командной строке сервера следующую команду:
- hostname -I
Вы получите несколько адресов, разделенных пробелами. Вы можете попробовать каждый из них в браузере, чтобы убедиться в их работоспособности.
Альтернатива заключается в использовании инструмента curl
, который должен предоставить вам публичный IP-адрес, отображаемый в других местах в интернете.
Вначале выполните установку curl
с помощью apt
:
- sudo apt install curl
Затем используйте curl
для получения icanhazip.com с помощью IPv4:
- curl -4 icanhazip.com
Когда вы узнаете IP-адрес вашего сервера, введите его в адресную строку браузера:
http://your_server_ip
Вы увидите веб-страницу Debian 9 Apache по умолчанию:
Эта страница показывает, что Apache работает корректно. Также на ней содержится информация о важных файлах Apache и расположении каталогов.
Теперь ваш веб-сервер запущен и работает, и настало время изучить некоторые простые команды управления.
Чтобы остановить веб-сервер, введите:
- 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 должен запуститься автоматически при следующей загрузке сервера.
При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналогичные серверным блокам в Nginx) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы создадим домен example.com, но вы должны заменить это имя собственным доменным именем. Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, пройдите наш обучающий модуль Введение в DigitalOcean DNS.
В Apache в Debian 9 по умолчанию включен один серверный блок, настроенный на обслуживание документов из каталога /var/www/html
. Хотя это хорошо работает для отдельного сайта, при хостинге нескольких сайтов это неудобно. Вместо изменения /var/www/html
мы создадим в /var/www
структуру каталогов для нашего сайта example.com, оставив /var/www/html
как каталог по умолчанию для вывода в случае, если запросу клиента не соответствуют никакие другие сайты.
Создайте каталог для example.com следующим образом, используя опцию -p
для создания необходимых родительских каталогов:
sudo mkdir -p /var/www/example.com/html
Затем назначьте владение каталогом с помощью переменной среды $USER
:
- sudo chown -R $USER:$USER /var/www/example.com/html
Разрешения корневых каталогов веб-сервера должны быть правильными, если вы не изменяли значение unmask
. Тем не менее, вы можете проверить это с помощью следующей команды:
- sudo chmod -R 755 /var/www/example.com
Затем создайте в качестве примера страницу index.html
, используя nano
или свой любимый редактор:
- nano /var/www/example.com/html/index.html
Добавьте в страницу следующий образец кода HTML:
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com virtual host is working!</h1>
</body>
</html>
Сохраните файл и закройте его после завершения.
Для обслуживания этого контента Apache необходимо создать файл виртуального хоста с правильными директивами. Вместо изменения файла конфигурации по умолчанию /etc/apache2/sites-available/000-default.conf
мы создадим новый файл /etc/apache2/sites-available/example.com.conf
:
- sudo nano /etc/apache2/sites-available/example.com.conf
Введите следующий блок конфигурации, который похож на заданный по умолчанию, но обновлен с учетом нового каталога и доменного имени:
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Обратите внимание, что мы изменили DocumentRoot
на новый каталог, а ServerAdmin
— на адрес электронной почты, доступный администратору сайта example.com. Также мы добавили две директивы: директиву ServerName
, которая устанавливает базовый домен и должна соответствовать определению виртуального хоста, и директиву ServerAlias
, которая задает дополнительные имена, которые должны давать совпадение, как если бы они были базовыми именами.
Сохраните файл и закройте его после завершения.
Активируем файл с помощью инструмента a2ensite
:
- sudo a2ensite example.com.conf
Отключите сайт по умолчанию, определеный в 000-default.conf
:
- sudo a2dissite 000-default.conf
Затем проверим ошибки конфигурации:
- sudo apache2ctl configtest
Вы должны увидеть следующий результат:
OutputSyntax OK
Перезапустие Apache для внесения изменений:
- sudo systemctl restart apache2
Теперь Apache должен обслуживать ваше доменное имя. Вы можете проверить это, открыв в браузере адрес http://example.com
, после чего должны увидеть примерно следующее:
Теперь вы научились управлять службой Apache, и настало время познакомиться с несколькими важными каталогами и файлами.
/var/www/html
: веб-контент, в состав которого по умолчанию входит только показанная ранее страница Apache по умолчанию, выводится из каталога /var/www/html
. Это можно изменить путем изменения файлов конфигурации Apache./etc/apache2
: каталог конфигурации Apache. Здесь хранятся все файлы конфигурации Apache./etc/apache2/apache2conf
: главный файл конфигурации Apache. Его можно изменить для внесения изменений в глобальную конфигурацию Apache. Этот файл отвечает за загрузку многих других файлов в каталоге конфигурации./etc/apache2/ports.conf
: этот файл задает порты, которые будет прослушивать Apache. По умолчанию Apache прослушивает порта 80, а если активирован модуль с функциями SSL, он также прослушивает порт 443./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 9.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!