Перейти на сайт
База знаний/Руководства/Установка и настройка Apache2 на VPS

Установка и настройка Apache2 на VPS

Apache2 или Nginx

Apache и Nginx это два самых популярных веб-сервера. Кратко:

Apache2 Nginx
Архитектура Процесс на каждый запрос Асинхронный, event-driven
.htaccess Да Нет
Модули Загружаются динамически Компилируются при сборке
PHP mod_php (встроенный) Через php-fpm
RAM Больше Меньше
Статика Хорошо Отлично
Динамика Отлично Хорошо

Apache лучше подходит, если вам нужен .htaccess (например для WordPress с кастомными правилами) или mod_rewrite. Nginx быстрее раздаёт статические файлы и ест меньше памяти.

Установка Apache2

apt update
apt install apache2 -y

Проверка

systemctl status apache2

Откройте IP сервера в браузере. Должна появиться стандартная страница Apache2.

Основные команды

systemctl start apache2      # Запуск
systemctl stop apache2       # Остановка
systemctl restart apache2    # Перезапуск
systemctl reload apache2     # Перезагрузка конфига
apachectl configtest         # Проверка конфигурации

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

Создание директории сайта

mkdir -p /var/www/mysite.com/html
chown -R www-data:www-data /var/www/mysite.com

Создание конфигурации

nano /etc/apache2/sites-available/mysite.com.conf
<VirtualHost *:80>
    ServerName mysite.com
    ServerAlias www.mysite.com
    DocumentRoot /var/www/mysite.com/html
    
    <Directory /var/www/mysite.com/html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/mysite-error.log
    CustomLog ${APACHE_LOG_DIR}/mysite-access.log combined
</VirtualHost>

Активация сайта

a2ensite mysite.com.conf
a2dissite 000-default.conf
systemctl reload apache2

Установка PHP

Для WordPress, Laravel и других PHP-проектов:

apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-zip -y
systemctl restart apache2

Проверка:

echo "<?php phpinfo(); ?>" > /var/www/mysite.com/html/info.php

Откройте http://ваш_ip/info.php в браузере. Не забудьте удалить этот файл потом.

Включение mod_rewrite

Нужен для WordPress, Laravel и любых проектов с "красивыми" URL:

a2enmod rewrite
systemctl restart apache2

Установка SSL с Let's Encrypt

apt install certbot python3-certbot-apache -y
certbot --apache -d mysite.com -d www.mysite.com

Certbot автоматически настроит HTTPS и редирект с HTTP.

Автопродление

certbot renew --dry-run

Настройка обратного прокси

Если нужно проксировать запросы к приложению на другом порту:

a2enmod proxy proxy_http
<VirtualHost *:80>
    ServerName app.mysite.com
    
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
systemctl restart apache2

Полезные модули

a2enmod headers     # Управление HTTP-заголовками
a2enmod expires     # Кэширование
a2enmod deflate     # Сжатие gzip
a2enmod ssl         # HTTPS
a2enmod rewrite     # Перезапись URL
a2enmod proxy       # Обратный прокси

Базовая безопасность

Добавьте в /etc/apache2/conf-available/security.conf:

# Скрыть версию Apache
ServerTokens Prod
ServerSignature Off

# Защита от clickjacking
Header always set X-Frame-Options SAMEORIGIN

# Защита от XSS
Header always set X-Content-Type-Options nosniff
a2enconf security
systemctl reload apache2

Полезные файлы и директории

Путь Описание
/etc/apache2/apache2.conf Главный конфиг
/etc/apache2/sites-available/ Конфиги сайтов
/etc/apache2/sites-enabled/ Активные сайты
/etc/apache2/mods-available/ Доступные модули
/var/log/apache2/access.log Лог доступа
/var/log/apache2/error.log Лог ошибок

Оптимизация для VPS с малым RAM

Для серверов с 1-2 ГБ RAM замените prefork на event:

a2dismod mpm_prefork
a2enmod mpm_event
apt install php-fpm -y
a2enmod proxy_fcgi setenvif
a2enconf php8.3-fpm
systemctl restart apache2

Это значительно снизит потребление памяти.

Если вы ставите Apache только ради WordPress и не используете .htaccess, рассмотрите Nginx + php-fpm. Он быстрее и жрёт меньше памяти.