В данной статье мы рассмотрим установку HTTP сервера Apache на OC Ubuntu, а также настройку виртуальных хостов, доступ по протоколу HTTPS.
Настройка виртуального сервера
Изначально нам потребуется создать непосредственно сам виртуальный сервер, на который и будет устанавливаться Apache. Для этого можно использовать платформу ProCloud.
После создания сервера подключаемся к нему по SSH и воспользуемся утилитой PuTTY. Данная утилита совершенно бесплатна и ее можно скачать с официального сайта. Единственная настройка на данном этапе – указать IP адрес нашего сервера в поле Host Name.
Как только вы нажмете кнопку открыть, то эмулятор терминала осуществит попытку подключиться к серверу, для этого необходим лишь пароль и логин (root).
Установка Apache
На данном этапе мы будем выполнять установку от имени пользователя с правами администратора, используя SUDO
для усиления прав. Первым делом следует обновить данные о текущих пакетах и их зависимостях.:
sudo apt update
Как только данная команда выполнена нам понадобится загрузить пакет Apache2:
sudo apt install apache2
По завершении демон начнет работу и появится в автозагрузке.
Настройка брандмауэра для Apache
В настройках по умолчанию Ubuntu использует ufw
. Изначально нам нужно удостовериться в том, что утилита для настройки фаервола установлена:
sudo ufw status verbose
Появление ошибки означает отсутствие утилиты, в этом случае нужно произвести установку с помощью команды:
sudo apt install ufw
Уточним ее статус:
Status: inactive
Выполним активацию:
sudo ufw enable
Включаем на сервере HTTP протокол:
sudo ufw allow http
Также не забываем предоставить доступ по SSH:
sudo ufw allow 22/tcp
В конце выполним перезапуск:
sudo ufw reload
Запуск 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)
…
Неактивен:
apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: inactive (dead)
…
Далее рассмотрим команды для изменения статуса. Все команды одинаковы по структуре:
sudo systemctl [действие] apache2
Все действия перечислены в таблице ниже:
Включение | start |
---|---|
Выключение | stop |
Перезапуск | restart |
Перезагрузка | reload |
Отключение автоматического запуска | disable |
Включение автоматической загрузки | enable |
Настройка виртуальных хостов Apache
С помощью модуля виртуальных хостов в Apache можно разместить несколько web-сервисов на одной машине, используя один ip-адрес, но разные доменные имена.
Для начала конфигурации запросим root-директорию:
grep "DocumentRoot" /etc/apache2/sites-available/000-default.conf
Добавим директории:
sudo mkdir -p /var/www/sample.net/html
Создадим html-документ и добавим ему структуру:
sudo touch /var/www/sample.net/html/index.html
sudo nano /var/www/sample.net/html/index.html
Для сохранения исходной конфигурации виртуального хоста, переносим её в ранее созданную директорию настроек нового виртуального хоста.
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/sample.net.conf
В скопированном файле редактируем ключевые директивы. Нам важно обратить внимание на строку, указывающую путь к директории виртуального хоста, и заменить его на путь к специально созданной нами директории. Это нужно для корректного перенаправления запросов Apache к нашему виртуальному хосту.
sudo nano /etc/apache2/sites-available/sample.net.conf
В файле виртуального хоста по-умолчанию нам важны следующие параметры:
-
<VirtualHost *:80>
: Здесь прописываем IP-адрес сервера и порт для виртуального хоста. Поскольку используется HTTP и единственный IP, выбран порт 80 и IP не указан. -
DocumentRoot /var/www/html
: Это корневая директория виртуального хоста, где хранятся все файлы. Обязательно убедитесь, что указали путь к созданной директории: /var/www/sample.net/html -
ErrorLog ${APACHE_LOG_DIR}/error.log
: Это местоположение файла лога, куда будут записаны все ошибки сервера. Эту строку оставляем без изменений. -
CustomLog ${APACHE_LOG_DIR}/access.log combined
: Эта директива отвечает за логирование всех запросов пользователей к серверу. Оставляем ее в оригинальном виде.
После того как все настройки внесены, сохраняем файл и закрываем редактор.
Активируем созданный хост:
sudo a2ensite sample.net.conf
И выключим дефолтный:
sudo a2dissite 000-default.conf
Перезапустим сервер:
sudo systemctl reload apache2
Создание SSL-сертификата на сервере
Для создания и подписи сертификата понадобится специальный пакет OpenSSL, который есть в системе по умолчанию. Сейчас мы рассмотрим процесс создания и подписи сертификата, а также переместим закрытые и открытые ключи в нужные директории:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server-sample.key -out /etc/ssl/certs/server-sample.crt
Далее нужно присоединить модуль SSL для Apache с помощью команды:
sudo a2enmod ssl
Выполним настройку HTTPS для виртуального хоста через его файл.
sudo nano /etc/apache2/sites-available/sample.net.conf
Изменяем директиву <VirtualHost *:80>
, меняем порт на 443, добавляем SSLEngine on
после root директории (необходимо для поддержки SSL).
И сразу же еще две строки, которые отображают путь к ключу и сертификату:
SSLCertificateFile /etc/ssl/certs/server-sample.crt
SSLCertificateKeyFile /etc/ssl/private/server-sample.key
Укажем разрешающее условие безопасности:
sudo ufw allow https
Перезапустим настройку сервера Apache:
sudo systemctl reload apache2
Заключение
На данном этапе можно полностью закончить настройку web-сервера Apache. Подводя итоги смело утверждаем, что настройка одного из самых распространенных серверов, а также получение к ней доступа по протоколу HTTPS изучено и реализовано.