Поиск по сайту:

Как установить веб-сервер Apache в Ubuntu 20.04


Введение

HTTP-сервер Apache является наиболее широко используемым веб-сервером в мире. Он предоставляет множество мощных функций, включая динамически загружаемые модули, надежную поддержку мультимедиа и обширную интеграцию с другим популярным программным обеспечением.

В этом руководстве мы объясним, как установить веб-сервер Apache на ваш сервер Ubuntu 20.04.

Предпосылки

Прежде чем приступить к работе с этим руководством, на вашем сервере должен быть настроен обычный пользователь без полномочий root с привилегиями sudo. Кроме того, вам нужно будет включить базовый брандмауэр для блокировки второстепенных портов. Вы можете узнать, как настроить учетную запись обычного пользователя и настроить брандмауэр для своего сервера, следуя нашему руководству по начальной настройке сервера для Ubuntu 20.04.

Когда у вас есть доступная учетная запись, войдите в систему как пользователь без полномочий root, чтобы начать.

Шаг 1 — Установка Apache

Apache доступен в репозиториях программного обеспечения Ubuntu по умолчанию, что позволяет установить его с помощью обычных инструментов управления пакетами.

Давайте начнем с обновления локального индекса пакетов, чтобы отразить последние изменения в основной ветке разработки:

  1. sudo apt update

Затем установите пакет apache2:

  1. sudo apt install apache2

После подтверждения установки apt установит Apache и все необходимые зависимости.

Шаг 2 — Настройка брандмауэра

Перед тестированием Apache необходимо изменить настройки брандмауэра, чтобы разрешить внешний доступ к веб-портам по умолчанию. Предполагая, что вы следовали инструкциям в предварительных требованиях, у вас должен быть настроен брандмауэр UFW для ограничения доступа к вашему серверу.

Во время установки Apache регистрируется в UFW, чтобы предоставить несколько профилей приложений, которые можно использовать для включения или отключения доступа к Apache через брандмауэр.

Перечислите профили приложений ufw, набрав:

  1. sudo ufw app list

Вы получите список профилей приложения:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Как видно из вывода, для Apache доступны три профиля:

  • Apache: этот профиль открывает только порт 80 (обычный незашифрованный веб-трафик)
  • Apache Full: этот профиль открывает как порт 80 (обычный незашифрованный веб-трафик), так и порт 443 (зашифрованный трафик TLS/SSL).
  • Apache Secure: этот профиль открывает только порт 443 (зашифрованный трафик TLS/SSL)

Рекомендуется включить наиболее строгий профиль, который по-прежнему будет разрешать трафик, который вы настроили. Поскольку в этом руководстве мы еще не настроили SSL для нашего сервера, нам нужно будет разрешить трафик только через порт 80:

  1. sudo ufw allow 'Apache'

Вы можете проверить изменение, набрав:

  1. sudo ufw status

На выходе будет список разрешенного HTTP-трафика:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

Как видно из выходных данных, профиль был активирован, чтобы разрешить доступ к веб-серверу Apache.

Шаг 3 — Проверка вашего веб-сервера

В конце процесса установки Ubuntu 20.04 запускает Apache. Веб-сервер уже должен быть запущен.

Проверьте с помощью системы инициализации systemd, чтобы убедиться, что служба запущена, набрав:

  1. 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 Thu 2020-04-23 22:36:30 UTC; 20h ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 29435 (apache2) Tasks: 55 (limit: 1137) Memory: 8.0M CGroup: /system.slice/apache2.service ├─29435 /usr/sbin/apache2 -k start ├─29437 /usr/sbin/apache2 -k start └─29438 /usr/sbin/apache2 -k start

Как подтверждает этот вывод, служба успешно запущена. Однако лучший способ проверить это — запросить страницу у Apache.

Вы можете получить доступ к целевой странице Apache по умолчанию, чтобы убедиться, что программное обеспечение работает правильно через ваш IP-адрес. Если вы не знаете IP-адрес вашего сервера, вы можете получить его несколькими способами из командной строки.

Попробуйте ввести это в командной строке вашего сервера:

  1. hostname -I

Вы получите обратно несколько адресов, разделенных пробелами. Вы можете попробовать каждый из них в своем веб-браузере, чтобы определить, работают ли они.

Другой вариант — использовать инструмент Icanhazip, который должен предоставить вам общедоступный IP-адрес, прочитанный из другого места в Интернете:

  1. curl -4 icanhazip.com

Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера:

http://your_server_ip

Вы должны увидеть стандартную веб-страницу Ubuntu 20.04 Apache:

Эта страница указывает на то, что Apache работает правильно. Он также включает некоторую базовую информацию о важных файлах Apache и расположении каталогов.

Шаг 4 — Управление процессом Apache

Теперь, когда ваш веб-сервер запущен и работает, давайте рассмотрим некоторые основные команды управления с помощью systemctl.

Чтобы остановить веб-сервер, введите:

  1. sudo systemctl stop apache2

Чтобы запустить веб-сервер, когда он остановлен, введите:

  1. sudo systemctl start apache2

Чтобы остановить и снова запустить службу, введите:

  1. sudo systemctl restart apache2

Если вы просто вносите изменения в конфигурацию, Apache часто может перезагружаться без разрыва соединений. Для этого используйте эту команду:

  1. sudo systemctl reload apache2

По умолчанию Apache настроен на автоматический запуск при загрузке сервера. Если это не то, что вам нужно, отключите это поведение, набрав:

  1. sudo systemctl disable apache2

Чтобы снова включить службу для запуска при загрузке, введите:

  1. sudo systemctl enable apache2

Теперь Apache должен запускаться автоматически при повторной загрузке сервера.

Шаг 5 — Настройка виртуальных хостов (рекомендуется)

При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналогично блокам сервера в Nginx) для инкапсуляции деталей конфигурации и размещения более одного домена с одного сервера. Мы настроим домен под названием your_domain, но вы должны заменить его своим собственным доменным именем. Если вы настраиваете доменное имя в DigitalOcean, обратитесь к нашей сетевой документации.

В Apache в Ubuntu 20.04 по умолчанию включен один серверный блок, настроенный для обслуживания документов из каталога /var/www/html. Хотя это хорошо работает для одного сайта, это может стать громоздким, если вы размещаете несколько сайтов. Вместо того, чтобы изменять /var/www/html, давайте создадим структуру каталогов в /var/www для сайта your_domain, оставив /var/www/html в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует каким-либо другим сайтам.

Создайте каталог для your_domain следующим образом:

  1. sudo mkdir /var/www/your_domain

Затем назначьте владельца каталога с помощью переменной среды $USER:

  1. sudo chown -R $USER:$USER /var/www/your_domain

Разрешения ваших корневых веб-сайтов должны быть правильными, если вы не изменили значение umask, которое устанавливает разрешения для файлов по умолчанию. Чтобы убедиться, что ваши разрешения верны и позволить владельцу читать, записывать и выполнять файлы, предоставляя только права на чтение и выполнение группам и другим пользователям, вы можете ввести следующую команду:

  1. sudo chmod -R 755 /var/www/your_domain

Затем создайте образец страницы index.html с помощью nano или вашего любимого редактора:

  1. sudo 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>

Сохраните и закройте файл, когда закончите.

Чтобы Apache мог обслуживать этот контент, необходимо создать файл виртуального хоста с правильными директивами. Вместо того, чтобы напрямую изменять файл конфигурации по умолчанию, расположенный в /etc/apache2/sites-available/000-default.conf, давайте создадим новый в /etc/apache2/sites-available/ ваш_домен.conf:

  1. 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:

  1. sudo a2ensite your_domain.conf

Отключите сайт по умолчанию, определенный в 000-default.conf:

  1. sudo a2dissite 000-default.conf

Далее давайте проверим ошибки конфигурации:

  1. sudo apache2ctl configtest

Вы должны получить следующий вывод:

Output
Syntax OK

Перезапустите Apache, чтобы изменения вступили в силу:

  1. 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 в Ubuntu 20.04.