KirMol Wiki

Добро пожаловать в KirMol Wiki

Инструменты пользователя

Инструменты сайта


linux:servers:apache

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
linux:servers:apache [2026/10/03 10:49] – создано Кирилл Молчановlinux:servers:apache [2026/10/20 12:54] (текущий) – Кирилл Молчанов
Строка 1: Строка 1:
 +====== Apache HTTP Server ======
  
 +----
 +
 +===== О Apache =====
 +
 +Apache HTTP Server - Веб-сервер с открытым исходным кодом. Является кроссплатформенным ПО и поддерживает операционные системы Linux, BSD, macOS, Windows, Novell NetWare, BeOS.
 +
 +===== Установка Apache =====
 +
 +Устанавливаем Apache:
 +<code bash>
 +sudo apt install apache2
 +</code>
 +
 +Проверьте статус Apache:
 +<code bash>
 +sudo systemctl status apache2
 +</code>
 +
 +Вывод в терминале:
 +<code>
 +● apache2.service - The Apache HTTP Server
 +     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
 +     Active: active (running) since Sat 2026-10-17 16:35:23 MSK; 2 days ago
 + Invocation: ddd9e7e69be84ec99f52d55f98d241bf
 +       Docs: https://httpd.apache.org/docs/2.4/
 +    Process: 69229 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCE>
 +   Main PID: 41357 (apache2)
 +      Tasks: 11 (limit: 2301)
 +     Memory: 421.3M (peak: 547.8M)
 +        CPU: 17min 45.759s
 +     CGroup: /system.slice/apache2.service
 +             ├─41357 /usr/sbin/apache2 -k start
 +             ├─72467 /usr/sbin/apache2 -k start
 +             ├─72476 /usr/sbin/apache2 -k start
 +             ├─72477 /usr/sbin/apache2 -k start
 +             ├─72503 /usr/sbin/apache2 -k start
 +             ├─72504 /usr/sbin/apache2 -k start
 +             ├─72505 /usr/sbin/apache2 -k start
 +             ├─72506 /usr/sbin/apache2 -k start
 +             ├─72507 /usr/sbin/apache2 -k start
 +             ├─72508 /usr/sbin/apache2 -k start
 +             └─72509 /usr/sbin/apache2 -k start
 +
 +окт 17 16:48:05 WebHosting systemd[1]: Reloading apache2.service - The Apache HTTP Serv>
 +окт 17 16:48:05 WebHosting systemd[1]: Reloaded apache2.service - The Apache HTTP Serve>
 +lines 1-33/33 (END)
 +</code>
 +
 +Добавить Apache в автозагрузку:
 +<code bash>
 +sudo systemctl enable apache2
 +</code>
 +
 +Удалить Apache из автозагрузки:
 +<code bash>
 +sudo systemctl disable apache2
 +</code>
 +
 +Запуск Apache:
 +<code bash>
 +sudo systemctl start apache2
 +</code>
 +
 +Перезапуск Apache: 
 +<code bash>
 +sudo systemctl restart apache2
 +</code>
 +
 +Остановить Apache:
 +<code bash>
 +sudo systemctl stop apache2
 +</code>
 +
 +Откройте порты Http Https в межсетевом экране UFW:
 +<code bash>
 +sudo ufw allow 80,443/tcp
 +</code>
 +
 +===== Настройка Apache =====
 +
 +Проверить синтаксис:
 +<code bash>
 +sudo apachectl configtest
 +</code>
 +
 +Вывод в терминале:
 +<code>
 +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
 +</code>
 +
 +Для исправления ошибки с кодом **AH00558** добавляем в конфигурационный файл **/etc/apache2/apache2.conf** следующую строку:
 +
 +<code>
 +ServerName 127.0.0.1
 +</code>
 +
 +Редактируем файл **/etc/apache2/apache2.conf**:
 +<code bash>
 +sudo nano /etc/apache2/apache2.conf
 +</code>
 +
 +Сохраняем файл.
 +
 +Перезапустите Apache:
 +<code bash>
 +sudo systemctl restart apache2
 +</code>
 +
 +Снова проверяем синтаксис:
 +<code bash>
 +sudo apachectl configtest
 +</code>
 +
 +Вывод в терминале:
 +<code>
 +Syntax OK
 +</code>
 +
 +===== Скрытие конфиденциальной информации о 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**:
 +<code bash>
 +sudo nano /etc/apache2/apache2.conf
 +</code>
 +
 +И добавляем/изменяем строки приведённые ниже:
 +<code bash>
 +ServerTokens Prod
 +ServerSignature Off
 +</code>
 +
 +После чего сохраняем файл \\
 +Сохранить файл **Ctrl+O** \\
 +Выход из редактора **Ctrl+X**
 +
 +===== Настройка хоста Apache =====
 +
 +Установите права доступа на директорию **www**:
 +<code bash>
 +sudo chmod -R 775 /var/www
 +</code>
 +
 +<code bash>
 +sudo chown -R $USER:$USER /var/www
 +</code>
 +
 +Добавляем нашего пользователя в группу **www-data**:
 +<code bash>
 +sudo usermod -aG www-data $USER
 +</code>
 +
 +Добавляем пользователя **www-data** в группу нашего пользователя:
 +<code bash>
 +sudo usermod -aG $USER www-data
 +</code>
 +
 +Создаём новую директорию сайта (в примере используется mysite, укажите вместо него удобное вам имя сайта / директории):
 +<code bash>
 +sudo mkdir /var/www/mysite
 +</code>
 +<code bash>
 +sudo mkdir /var/www/mysite/public_html
 +</code>
 +
 +Загружаем файлы нашего сайта в директорию public_html:
 +
 +Даём им права владельца **www-data**:
 +<code bash>
 +sudo chown -R www-data:www-data /var/www/mysite/public_html
 +</code>
 +
 +===== Включаем хост =====
 +
 +По умолчанию Apache содержит стандартный файл конфигурации 000-default.conf, который хранится в директории /etc/apache2/sites-available. Файлы новых виртуальных хостов будут храниться здесь же.
 +
 +Сначала отключите стандартный файл конфигурации командой:
 +<code bash>
 +sudo a2dissite 000-default
 +</code>
 +
 +После чего создайте конфигурационный файл нового хоста:
 +<code bash>
 +sudo nano /etc/apache2/sites-available/mysite.conf
 +</code>
 +
 +Приведите его содержимое к следующему виду:
 +
 +<code apache>
 +# Запретить переход по IP адресу
 +<VirtualHost *:80>
 +    ServerName Ваш IP адрес сервера
 +    Redirect 403 /
 +</VirtualHost>
 +
 +<VirtualHost *:80>
 +ServerName mysite.ru
 +ServerAlias www.mysite.ru
 +ServerAdmin admin@localhost
 +
 +DocumentRoot /var/www/mysite/public_html
 +<Directory /var/www/mysite/public_html>
 +AllowOverride All
 +Require all granted
 +Redirect permanent / https://mysite.ru/
 +</Directory>
 +
 +ErrorLog ${APACHE_LOG_DIR}/error.log
 +CustomLog ${APACHE_LOG_DIR}/access.log combined
 +</VirtualHost>
 +</code>
 +
 +Далее включите сайт следующей командой:
 +<code bash>
 +sudo a2ensite mysite
 +</code>
 +
 +И перезапустите Apache:
 +<code bash>
 +sudo systemctl restart apache2
 +</code>
 +
 +На этом этапе настройка виртуального хоста завершена.
 +
 +Для того, чтобы проверить корректность его работы, создаём индексный файл сайта:
 +<code bash>
 +sudo nano /var/www/mysite/public_html/index.html
 +</code>
 +
 +Вносим в него любой HTML-код для проверки и сохраните документ:
 +
 +Например:
 +
 +<code html>
 +<html>
 +<head>
 +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 +<title>Удалось!</title>
 +</head>
 +<body>
 +<h1>Виртуальный хост работает!</h1>
 +</body>
 +</html>
 +</code>
 +
 +Выключить сайт можно следующей командой:
 +<code bash>
 +sudo a2dissite mysite
 +</code>
 +
 +Перезапустите Apache: 
 +<code bash>
 +sudo systemctl restart apache2
 +</code>