====== Apache HTTP Server ======
----
===== О Apache =====
Apache HTTP Server - Веб-сервер с открытым исходным кодом. Является кроссплатформенным ПО и поддерживает операционные системы Linux, BSD, macOS, Windows, Novell NetWare, BeOS.
===== Установка Apache =====
Устанавливаем Apache:
sudo apt install apache2
Добавляем Apache в автозагрузку:
sudo systemctl enable apache2
Запускаем Веб-сервер Apache:
sudo systemctl start apache2
Смотрим статус:
sudo systemctl status apache2
Разрешаем порты Http Https в UFW:
sudo ufw allow 80,443/tcp
===== Настройка Apache =====
Проверяем синтаксис:
sudo apachectl configtest
Вывод в терминале:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using fe80::b049:8eff:febe:8027%eth0. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Для исправления ошибки с кодом **AH00558** добавляем в конфигурационный файл **/etc/apache2/apache2.conf** следующую строку:
ServerName 127.0.0.1
Редактируем файл **/etc/apache2/apache2.conf**:
sudo nano /etc/apache2/apache2.conf
Сохраняем файл.
Перезапустите Apache:
sudo systemctl restart apache2
Снова проверяем синтаксис:
sudo apachectl configtest
Вывод в терминале:
Syntax OK
===== Скрытие конфиденциальной информации о Apache =====
Скрытие конфиденциальной информации о Apache у пользователя. Такой как:
* Имя сервера
* Версия Apache
* Операционная система
==== О директивах ====
ServerSignature - Эта директива позволяет добавить строку нижнего колонтитула, которая отображает имя сервера и номер версии в сгенерированных сервером документах, таких как сообщения об ошибках, списки каталогов mod_proxy ftp, вывод mod_info и многом другом.
У ServerSignature есть три значения:
* **On** - Позволяет добавлять строку нижнего колонтитула в сгенерированные сервером документы
* **Off** - Отключает нижний колонтитул
* **EMail** - Создает ссылку «mailto:» которая отправляет письмо на ServerAdmin указанного документа
ServerTokens - Эта директива определяет, содержит ли поле заголовка ответа сервера, отправляемое обратно клиентам, описание типа ОС сервера и информацию о включенных модулях Apache.
ServerTokens имеет следующие значения:
^ ServerTokens ^ Информация, которая показывается у клиента ^
| **Full** (or not specified) | Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2 |
| **Prod** [uctOnly] | Apache |
| **Major** | Apache/2 |
| **Minor** | Apache/2.4 |
| **Min** | Apache/2.4.2 |
| **OS** | Apache/2.4.2 (Unix) |
Чтобы скрыть номер версии веб-сервера, сведения об операционной системе сервера, установленных модулях Apache и т.д.
Открываем файл конфигурации веб-сервера Apache **/etc/apache2/apache2.conf**:
sudo nano /etc/apache2/apache2.conf
И добавляем/изменяем строки приведённые ниже:
ServerTokens Prod
ServerSignature Off
После чего сохраняем файл \\
Сохранить файл **Ctrl+O** \\
Выход из редактора **Ctrl+X**
===== Настройка хоста Apache =====
Установите права доступа на директорию **www**:
sudo chmod -R 775 /var/www
sudo chown -R $USER:$USER /var/www
Добавляем нашего пользователя в группу **www-data**:
sudo usermod -aG www-data $USER
Добавляем пользователя **www-data** в группу нашего пользователя:
sudo usermod -aG $USER www-data
Создаём новую директорию сайта (в примере используется mysite, укажите вместо него удобное вам имя сайта / директории):
sudo mkdir /var/www/mysite
sudo mkdir /var/www/mysite/public_html
Загружаем файлы нашего сайта в директорию public_html:
Даём им права владельца **www-data**:
sudo chown -R www-data:www-data /var/www/mysite/public_html
===== Включаем хост =====
По умолчанию Apache содержит стандартный файл конфигурации 000-default.conf, который хранится в директории /etc/apache2/sites-available. Файлы новых виртуальных хостов будут храниться здесь же.
Сначала отключите стандартный файл конфигурации командой:
sudo a2dissite 000-default
После чего создайте конфигурационный файл нового хоста:
sudo nano /etc/apache2/sites-available/mysite.conf
Приведите его содержимое к следующему виду:
# Запретить переход по IP адресу
ServerName Ваш IP адрес сервера
Redirect 403 /
ServerName mysite.ru
ServerAlias www.mysite.ru
ServerAdmin admin@localhost
DocumentRoot /var/www/mysite/public_html
AllowOverride All
Require all granted
Redirect permanent / https://mysite.ru/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Далее включите сайт следующей командой:
sudo a2ensite mysite
И перезапустите Apache:
sudo systemctl restart apache2
На этом этапе настройка виртуального хоста завершена.
Для того, чтобы проверить корректность его работы, создаём индексный файл сайта:
sudo nano /var/www/mysite/public_html/index.html
Вносим в него любой HTML-код для проверки и сохраните документ:
Например:
Удалось!
Виртуальный хост работает!
Выключить сайт можно следующей командой:
sudo a2dissite mysite
Перезапустите Apache:
sudo systemctl restart apache2