Home » Установка Apache на Ubuntu 24
Установка Apache на Ubuntu 24

Установка Apache на Ubuntu 24

Если тебе нужен надёжный веб-сервер для хостинга твоих проектов, Apache остаётся одним из лучших вариантов. Несмотря на то что Nginx украл часть внимания, Apache по-прежнему держит позиции благодаря своей гибкости, мощным модулям и богатой экосистеме. В этой статье разберём установку Apache на Ubuntu 24 — от базовой настройки до тонкостей конфигурации, которые помогут тебе создать производительный сервер.

Зачем Apache в 2024 году?

Apache HTTP Server — это не просто веб-сервер, это платформа с огромным количеством модулей. Да, он может быть медленнее Nginx при обработке статики, но когда дело доходит до сложных конфигураций с PHP, mod_rewrite или кастомными модулями, Apache показывает свою силу.

Характеристика Apache Nginx
Конфигурация Гибкая, через .htaccess Централизованная
Модули Огромное количество Ограниченный набор
Потребление RAM Выше Ниже
Обработка PHP Нативная поддержка Через FastCGI

Установка Apache на Ubuntu 24

Начнём с самого простого. Ubuntu 24 поставляется с обновлённым набором пакетов, поэтому процесс установки стал ещё проще.

Обновление системы

sudo apt update && sudo apt upgrade -y

Установка Apache

sudo apt install apache2 -y

Проверим статус сервиса:

sudo systemctl status apache2

Если Apache не запустился автоматически:

sudo systemctl start apache2
sudo systemctl enable apache2

Базовая конфигурация и проверка

После установки Apache уже работает. Открой браузер и введи IP-адрес сервера — увидишь стандартную страницу Apache “It works!”.

Проверка конфигурации

sudo apache2ctl configtest

Эта команда — твой лучший друг. Всегда запускай её перед перезагрузкой Apache после изменения конфигурации.

Основные директории

  • /etc/apache2/ — основные конфигурационные файлы
  • /var/www/html/ — корневая директория сайта по умолчанию
  • /var/log/apache2/ — логи (access.log и error.log)
  • /etc/apache2/sites-available/ — конфигурации виртуальных хостов
  • /etc/apache2/sites-enabled/ — активные виртуальные хосты

Настройка виртуальных хостов

Виртуальные хосты — это то, что делает Apache мощным. Можно хостить несколько сайтов на одном сервере.

Создание виртуального хоста

Создадим конфигурацию для сайта example.com:

sudo nano /etc/apache2/sites-available/example.com.conf

Содержимое файла:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    
    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
    
    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Создаём директорию для сайта:

sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com

Активируем сайт:

sudo a2ensite example.com.conf
sudo systemctl reload apache2

Модули Apache: мощь и гибкость

Модули — это то, что отличает Apache от конкурентов. Вот самые полезные:

Включение популярных модулей

sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod deflate
sudo a2enmod expires
sudo systemctl restart apache2

Модуль mod_rewrite

Этот модуль незаменим для SEO и красивых URL. Пример .htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Модуль mod_deflate для сжатия

Добавь в конфигурацию виртуального хоста:

<Location />
    SetOutputFilter DEFLATE
    SetEnvIfNoCase Request_URI \
        \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \
        \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
</Location>

Настройка SSL/TLS

В 2024 году HTTPS — это не опция, а необходимость. Используем Let’s Encrypt для бесплатного SSL.

Установка Certbot

sudo apt install certbot python3-certbot-apache -y

Получение SSL-сертификата

sudo certbot --apache -d example.com -d www.example.com

Certbot автоматически настроит Apache для работы с HTTPS. Проверь автоматическое обновление:

sudo certbot renew --dry-run

Оптимизация производительности

Apache можно серьёзно оптимизировать. Вот несколько важных настроек.

Настройка MPM (Multi-Processing Module)

Ubuntu 24 по умолчанию использует event MPM. Проверим:

apache2ctl -M | grep mpm

Настройка в файле /etc/apache2/mods-enabled/mpm_event.conf:

<IfModule mpm_event_module>
    StartServers 3
    MinSpareThreads 75
    MaxSpareThreads 250
    ThreadsPerChild 25
    MaxRequestWorkers 400
    MaxConnectionsPerChild 1000
</IfModule>

Настройка кэширования

Включаем модуль expires и настраиваем кэширование:

sudo a2enmod expires
sudo a2enmod headers

Добавляем в .htaccess или конфигурацию виртуального хоста:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType application/x-javascript "access plus 1 month"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
    ExpiresByType image/x-icon "access plus 1 year"
    ExpiresDefault "access plus 2 days"
</IfModule>

Мониторинг и логирование

Правильное логирование поможет отслеживать производительность и безопасность.

Настройка расширенного логирования

Создай кастомный формат логов в /etc/apache2/apache2.conf:

LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D" combined_with_time

Где %D — время выполнения запроса в микросекундах.

Ротация логов

Ubuntu автоматически настраивает ротацию через logrotate, но можно кастомизировать в /etc/logrotate.d/apache2:

/var/log/apache2/*.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        if /etc/init.d/apache2 status > /dev/null ; then \
            /etc/init.d/apache2 reload > /dev/null; \
        fi;
    endscript
}

Безопасность Apache

Безопасность — это не опция, а необходимость.

Скрытие версии Apache

Добавь в /etc/apache2/conf-enabled/security.conf:

ServerTokens Prod
ServerSignature Off

Защита от DDoS

Установи mod_evasive:

sudo apt install libapache2-mod-evasive -y
sudo a2enmod evasive

Настройка в /etc/apache2/mods-enabled/evasive.conf:

<IfModule mod_evasive24.c>
    DOSHashTableSize    4096
    DOSPageCount        3
    DOSPageInterval     1
    DOSSiteCount        50
    DOSSiteInterval     1
    DOSBlockingPeriod   600
</IfModule>

Интеграция с PHP

Большинство веб-приложений используют PHP. Настроим PHP 8.3 для работы с Apache.

Установка PHP

sudo apt install php8.3 libapache2-mod-php8.3 php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip -y

Настройка PHP

Основные настройки в /etc/php/8.3/apache2/php.ini:

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300

Автоматизация и скрипты

Автоматизация — это то, что отличает профессионала от новичка.

Скрипт для создания виртуального хоста

#!/bin/bash

DOMAIN=$1
ROOT_DIR="/var/www/${DOMAIN}/public_html"
APACHE_CONFIG="/etc/apache2/sites-available/${DOMAIN}.conf"

# Создаём директорию
sudo mkdir -p $ROOT_DIR
sudo chown -R $USER:$USER $ROOT_DIR
sudo chmod -R 755 /var/www/$DOMAIN

# Создаём конфигурацию Apache
sudo tee $APACHE_CONFIG > /dev/null <
    ServerAdmin admin@${DOMAIN}
    ServerName ${DOMAIN}
    ServerAlias www.${DOMAIN}
    DocumentRoot ${ROOT_DIR}
    
    ErrorLog \${APACHE_LOG_DIR}/${DOMAIN}_error.log
    CustomLog \${APACHE_LOG_DIR}/${DOMAIN}_access.log combined
    
    
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    

EOF

# Включаем сайт
sudo a2ensite ${DOMAIN}.conf
sudo systemctl reload apache2

echo "Виртуальный хост для ${DOMAIN} создан!"

Скрипт мониторинга

#!/bin/bash

# Проверяем статус Apache
if ! systemctl is-active --quiet apache2; then
    echo "Apache не запущен! Попытка перезапуска..."
    sudo systemctl restart apache2
    
    # Отправляем уведомление (например, в Telegram)
    curl -s -X POST "https://api.telegram.org/bot{BOT_TOKEN}/sendMessage" \
        -d chat_id={CHAT_ID} \
        -d text="⚠️ Apache был перезапущен на сервере $(hostname)"
fi

# Проверяем использование диска для логов
LOG_SIZE=$(du -sm /var/log/apache2/ | cut -f1)
if [ $LOG_SIZE -gt 1000 ]; then
    echo "Логи Apache занимают ${LOG_SIZE}MB. Запускаем очистку..."
    sudo logrotate -f /etc/logrotate.d/apache2
fi

Интересные факты и нестандартные применения

Apache — это не только веб-сервер. Вот несколько интересных способов его использования:

  • Прокси-сервер: с модулем mod_proxy Apache может работать как reverse proxy
  • WebDAV сервер: для синхронизации файлов (модуль mod_dav)
  • Стриминг сервер: с модулем mod_h264_streaming для видео
  • API Gateway: с помощью mod_rewrite и mod_proxy

Apache как Load Balancer

Включи модули:

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests

Конфигурация:

<Proxy balancer://mycluster>
    BalancerMember http://192.168.1.10:8080
    BalancerMember http://192.168.1.11:8080
    ProxySet lbmethod=byrequests
</Proxy>

ProxyPreserveHost On
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/

Миграция и бэкапы

Всегда имей план восстановления.

Скрипт бэкапа конфигурации

#!/bin/bash

BACKUP_DIR="/backup/apache/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR

# Копируем конфигурации
sudo cp -r /etc/apache2/ $BACKUP_DIR/
sudo cp -r /var/www/ $BACKUP_DIR/

# Создаём архив
cd /backup/apache/
tar -czf apache_backup_$(date +%Y%m%d).tar.gz $(date +%Y%m%d)/

# Удаляем старые бэкапы (старше 30 дней)
find /backup/apache/ -name "apache_backup_*.tar.gz" -mtime +30 -delete

Troubleshooting: частые проблемы и решения

Проблема Причина Решение
403 Forbidden Нет прав на директорию Проверь chmod и chown
500 Internal Server Error Ошибка в .htaccess Проверь error.log
Port 80 already in use Другой сервис занял порт sudo netstat -tlnp | grep :80
SSL certificate problem Неверная настройка SSL Перезапусти certbot

Полезные команды для диагностики

# Проверка конфигурации
sudo apache2ctl configtest

# Список загруженных модулей
apache2ctl -M

# Список виртуальных хостов
apache2ctl -S

# Проверка портов
sudo netstat -tlnp | grep apache

# Мониторинг в реальном времени
sudo tail -f /var/log/apache2/access.log /var/log/apache2/error.log

Заключение и рекомендации

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

Когда использовать Apache:

  • Нужна гибкость в конфигурации (.htaccess)
  • Работаешь с PHP-приложениями
  • Требуются специфичные модули
  • Нужно быстро настроить виртуальные хосты

Когда лучше выбрать Nginx:

  • Высокая нагрузка на статический контент
  • Ограниченные ресурсы сервера
  • Работа как reverse proxy

Если планируешь серьёзный проект, рассмотри аренду VPS или выделенного сервера. Это даст тебе полный контроль над конфигурацией и производительностью.

Помни: Apache — это не просто веб-сервер, это платформа. Изучи его модули, экспериментируй с конфигурацией, автоматизируй рутинные задачи. И всегда делай бэкапы!

Полезные ссылки:


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

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

Leave a reply

Your email address will not be published. Required fields are marked