Что такое Apache и зачем нужен

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

Установка Apache

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

sudo apt update

sudo apt upgrade -y

sudo apt install apache2 -y

Открытие портов для веб-сервера Apache

Если установлен и активирован брандмауэр UFW, а он должен быть активным. Нужно добавить правила, чтобы была связь с Apache. Проверим открыты ли порты 80 и 443

sudo ufw status verbose

Если нет, то откроем

sudo ufw allow "WWW Full"

Дополнительная защита веб-сервера Apache

Если не установлен Fail2ban устанавливаем, включаем джайлы для Apache.

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

sudo nano /etc/fail2ban/jail.d/apache.conf

и включим некоторые из джайлов для сервера Apache.

# выявляем неудачные попытки ввода пароля
[apache-auth]
enabled = true
port = http,https
logpath  = %(apache_error_log)s
maxretry = 3
bantime = 24h
# выявляем потенциальные сканирования для применения эксплойтов и php уязвимостей
[apache-noscript]
enabled = true
port = http,https
logpath  = %(apache_error_log)s
maxretry = 3
bantime = 24h
# выявляем попытки переполнения Apache
[apache-overflows]
enabled = true
port = http,https
logpath  = %(apache_error_log)s
maxretry = 2
bantime = 24h
# выявляем неудачные попытки в поиске домашней директории на сервере
[apache-nohome]
enabled = true
port = http,https
logpath  = %(apache_error_log)s
maxretry = 2
bantime = 24h

Сохранить файл Ctrl+O Enter, закрыть Ctrl+X

Закомментировал правило [apache-auth] потому что оно меня блокирует, когда редактирую страницы в вордпресс. Причины выясняю. Можно не комментировать, а добавить строчку в этом джайле ignoreip = мой_айпи. Но это не вариант, потому что у меня динамический айпи, каждый раз сюда бегать и править не вариант.

В плагине WP-Security- Файрвол убрал галку Полностью блокировать доступ к XMLRPC и все заработало, точнее меня файл2бан перестал банить.

Проверка конфигурации и перезапуск Fail2ban

После любых изменений в конфигурации необходимо ее проверить командой:

sudo fail2ban-client -d

Перезапустить Fail2ban , что бы изменения вступили в силу.

sudo systemctl restart fail2ban

Проверка работы сервера Apache

Чтобы узнать запущена ли служба Apache выполнить простую команду

sudo systemctl status apache2

Увидим зелененькую точку, значит сервис запущен. А так же ошибку AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message Ничего страшного в этом нет, но чтоб не мозолило глаза исправим. Всего то нужно нужно добавить ServerName директиву для конфигурации Apache.

sudo nano /etc/apache2/apache2.conf

Добавить строчку в конце ServerName 127.0.0.1 или ServerName localhost

Сохраняем файл Ctrl+O , Enter, и закрываем Ctrl+X

Проверка синтаксиса Apache

sudo apachectl configtest

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

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

sudo systemctl restart apache2

Страница веб-сервера по умолчанию

Теперь можно посмотреть, что по умолчанию видно в браузере, если обратиться к серверу по его айпи адресу. Если не знаем ip сервера смотрим командой hostname -I. Набираем в браузере высветившийся ip и наслаждаемся первой страницей вашего сервера.

Команды управления Apache

Посмотреть все активные виртуальные хосты

sudo apache2ctl -S

Или

ls /etc/apache2/sites-enabled/

Активировать или деактивировать сайт/виртуальный хост

sudo a2ensite , sudo a2dissite

Активировать или деактивировать файл конфигурации

sudo a2enconf , sudo a2disconf

Активировать или деактивировать модуль

sudo a2enmod , sudo a2dismod

Остановка веб-сервера

sudo systemctl stop apache2

Запуск вебсервера

sudo systemctl start apache2

Остановка и запуск

sudo systemctl restart apache2

Перезагрузка apache2

sudo systemctl reload apache2

После любых изменений в конфигурации воспользоваться такой командой.

Restart останавливает службу и заново запускает. Reload даёт команду службе перечитать файлы конфигурации без остановки работы.

Выключение автозапуска

По умолчанию Apache автоматически загружается при старте системы, можно выключить автозапуск.

sudo systemctl disable apache2

Включение автозапуска

sudo systemctl enable apache2

Справочник по файлам Apache

Размещение содержимого сайтов

По умолчанию контент размещается в каталоге /var/www/html. Лучше создать другой каталог, например разместить сайты в каталоге пользователя /home/user/www создав директорию

mkdir ~/www

Потом в при создании виртуального хоста укажем новую директорию, где будет размещен контент.

Файлы конфигурации

/etc/apache2: каталог конфигурации Apache. Здесь хранятся все файлы конфигурации Apache.

/etc/apache2/apache2conf: главный файл конфигурации Apache. Его можно изменить для внесения изменений в глобальную конфигурацию Apache. Этот файл отвечает за загрузку многих других файлов в каталоге конфигурации.

/etc/apache2/ports.conf: этот файл задает порты, которые будет прослушивать Apache. По умолчанию Apache прослушивает порта 80, а если активирован модуль с функциями SSL, он также прослушивает порт 443.

/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 указывает, насколько детальные записи регистрируются в журналах ошибок.

Прокомментировать можно без регистрации здесь