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

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


Введение

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

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

Предпосылки

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

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

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

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

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

  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: AIM Bonjour CIFS . . . WWW WWW Cache WWW Full WWW Secure . . .

Профили Apache начинаются с WWW:

  • WWW: этот профиль открывает только порт 80 (обычный незашифрованный веб-трафик)
  • WWW-кэш: этот профиль открывает только порт 8080 (иногда используется для кэширования и веб-прокси)
  • WWW Full: этот профиль открывает как порт 80 (обычный незашифрованный веб-трафик), так и порт 443 (трафик с шифрованием TLS/SSL).
  • WWW Secure: этот профиль открывает только порт 443 (зашифрованный трафик TLS/SSL)

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

  1. sudo ufw allow 'WWW'

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

  1. sudo ufw status

Вы должны увидеть разрешенный HTTP-трафик в отображаемом выводе:

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

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

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

В конце процесса установки Debian 9 запускает 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 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-адрес вашего сервера, вы можете получить его несколькими способами из командной строки.

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

  1. hostname -I

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

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

Сначала установите curl с помощью apt:

  1. sudo apt install curl

Затем используйте curl для получения icanhazip.com с помощью IPv4:

  1. curl -4 icanhazip.com

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

http://your_server_ip

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

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

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

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

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

  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) для инкапсуляции деталей конфигурации и размещения более одного домена с одного сервера. Мы настроим домен под названием Introduction to 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:

  1. sudo chown -R $USER:$USER /var/www/example.com/html

Разрешения ваших корневых веб-сайтов должны быть правильными, если вы не изменили значение unmask, но вы можете убедиться, набрав:

  1. sudo chmod -R 755 /var/www/example.com

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

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

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

  1. sudo a2ensite example.com.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://example.com, где вы должны увидеть что-то вроде этого:

Шаг 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 9.