- Home »

Установка 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 — это не просто веб-сервер, это платформа. Изучи его модули, экспериментируй с конфигурацией, автоматизируй рутинные задачи. И всегда делай бэкапы!
Полезные ссылки:
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.