KirMol Wiki

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

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

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


linux:servers:apache

Apache HTTP Server


О Apache

Apache HTTP Server - Веб-сервер с открытым исходным кодом. Является кроссплатформенным ПО и поддерживает операционные системы Linux, BSD, macOS, Windows, Novell NetWare, BeOS.

Установка Apache

Устанавливаем Apache:

sudo apt install apache2

Проверьте статус Apache:

sudo systemctl status apache2

Вывод в терминале:

● 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)

Добавить Apache в автозагрузку:

sudo systemctl enable apache2

Удалить Apache из автозагрузки:

sudo systemctl disable apache2

Запуск Apache:

sudo systemctl start apache2

Перезапуск Apache:

sudo systemctl restart apache2

Остановить Apache:

sudo systemctl stop 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 адресу
<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>

Далее включите сайт следующей командой:

sudo a2ensite mysite

И перезапустите Apache:

sudo systemctl restart apache2

На этом этапе настройка виртуального хоста завершена.

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

sudo nano /var/www/mysite/public_html/index.html

Вносим в него любой HTML-код для проверки и сохраните документ:

Например:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Удалось!</title>
</head>
<body>
<h1>Виртуальный хост работает!</h1>
</body>
</html>

Выключить сайт можно следующей командой:

sudo a2dissite mysite

Перезапустите Apache:

sudo systemctl restart apache2
linux/servers/apache.txt · Последнее изменение: — Кирилл Молчанов