Как установить веб-сервер Apache в Ubuntu 18.04
Введение
HTTP-сервер Apache является наиболее широко используемым веб-сервером в мире. Он предоставляет множество мощных функций, включая динамически загружаемые модули, надежную поддержку мультимедиа и обширную интеграцию с другим популярным программным обеспечением.
В этом руководстве вы узнаете, как установить веб-сервер Apache на сервер Ubuntu 18.04. В этом руководстве также содержится информация о важных файлах и каталогах Apache.
Предпосылки
Прежде чем приступить к работе с этим руководством, на вашем сервере должен быть настроен обычный пользователь без полномочий root с привилегиями sudo. Кроме того, вам нужно будет включить базовый брандмауэр для блокировки второстепенных портов. Вы можете узнать, как настроить обычную учетную запись пользователя и настроить брандмауэр для своего сервера, следуя нашему руководству по первоначальной настройке сервера для Ubuntu 18.04.
После создания учетной записи войдите в систему как пользователь без полномочий root, чтобы начать.
Шаг 1 — Установка Apache
Apache доступен в репозиториях программного обеспечения Ubuntu по умолчанию, что позволяет установить его с помощью обычных инструментов управления пакетами.
Давайте начнем с обновления локального индекса пакетов, чтобы отразить последние изменения в основной ветке разработки:
- sudo apt update
Затем установите пакет apache2
:
- sudo apt install apache2
После подтверждения установки apt
установит Apache и все необходимые зависимости.
Шаг 2 — Настройка брандмауэра
Перед тестированием Apache необходимо изменить настройки брандмауэра, чтобы разрешить внешний доступ к веб-портам по умолчанию. Если вы следовали инструкциям в предварительных требованиях, у вас должен быть настроен брандмауэр UFW для ограничения доступа к вашему серверу.
Во время установки Apache регистрируется в UFW, чтобы предоставить несколько профилей приложений, которые можно использовать для включения или отключения доступа к Apache через брандмауэр.
Выведите список профилей приложений ufw
, выполнив следующую команду:
- sudo ufw app list
Это вернет список профилей приложений:
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Этот список указывает, что для Apache доступны три профиля:
- Apache: этот профиль открывает только порт
80
(обычный незашифрованный веб-трафик) - Apache Full: этот профиль открывает как порт
80
(обычный незашифрованный веб-трафик), так и порт443
(зашифрованный трафик TLS/SSL) - Apache Secure: этот профиль открывает только порт
443
(зашифрованный трафик TLS/SSL)
Рекомендуется включить наиболее строгий профиль, который по-прежнему будет разрешать трафик, который вы настроили. Поскольку вы еще не настроили SSL для своего сервера в этом руководстве, вам нужно будет только разрешить трафик через порт 80
:
- sudo ufw allow 'Apache'
Подтвердите это изменение, проверив статус:
- sudo ufw status
Теперь разрешенный 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 18.04 запускает Apache. Веб-сервер уже должен быть запущен.
Проверьте с помощью системы инициализации systemd
, чтобы убедиться, что служба запущена:
- sudo systemctl status apache2
Output● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2021-09-28 16:52:56 UTC; 1min 14s ago
Main PID: 9409 (apache2)
Tasks: 55 (limit: 4915)
CGroup: /system.slice/apache2.service
├─9409 /usr/sbin/apache2 -k start
├─9410 /usr/sbin/apache2 -k start
└─9411 /usr/sbin/apache2 -k start
Эти выходные данные показывают, что служба успешно запущена. Однако лучший способ убедиться в этом — запросить страницу у Apache.
Вы можете получить доступ к целевой странице Apache по умолчанию, чтобы убедиться, что программное обеспечение работает правильно через ваш IP-адрес. Если вы не знаете IP-адрес вашего сервера, вы можете получить его несколькими способами из командной строки.
Запустите следующее в командной строке вашего сервера:
- hostname -I
Вы получите несколько адресов, разделенных пробелами. Вы можете попробовать каждый из них в своем веб-браузере, чтобы проверить, работают ли они.
В качестве альтернативы можно запустить следующую команду, которая должна предоставить вам ваш общедоступный IP-адрес, поскольку он идентифицируется из другого места в Интернете:
- curl -4 icanhazip.com
Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера:
http://your_server_ip
Вы должны получить стандартную веб-страницу Ubuntu 18.04 Apache:
Эта веб-страница показывает, что 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
В качестве альтернативы, чтобы включить или повторно включить службу для запуска при загрузке, выполните следующую команду:
- sudo systemctl enable apache2
Теперь Apache должен запускаться автоматически при повторной загрузке сервера.
Шаг 5 — Настройка виртуальных хостов (рекомендуется)
При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналогично блокам сервера в Nginx) для инкапсуляции деталей конфигурации и размещения более одного домена с одного сервера. Для нашего примера мы настроим домен с именем your_domain, но вы должны заменить его своим собственным доменным именем. Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, прочитайте наше введение в DNS DigitalOcean.
В Apache в Ubuntu 18.04 по умолчанию включен один серверный блок, настроенный для обслуживания документов из каталога /var/www/html
. Хотя это хорошо работает для одного сайта, это может стать громоздким, если вы размещаете несколько сайтов. Вместо изменения /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
или вашего любимого редактора:
- 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
Вы должны получить следующий вывод:
OutputSyntax 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 указывает, сколько подробностей будет содержать журнал ошибок.
Заключение
Теперь, когда у вас установлен веб-сервер Apache, у вас есть множество вариантов контента, который вы можете обслуживать, и технологий, которые вы можете использовать для создания более богатого опыта.
Если вы хотите создать более полный стек приложений, вы можете прочитать эту статью о том, как защитить Apache с помощью Let’s Encrypt на Ubutnu 18.04.