Как настроить веб-сервер Apache на VPS?

В статье рассмотрим:

  • установку Apache на Ubuntu;
  • структуру конфигураций и модулей;
  • создание виртуальных хостов;
  • индексы и корневую директорию сайта;
  • права доступа и владельцев файлов;
  • включение mod_rewrite;
  • ошибки 403, 404, 500, AH00558;
  • логи и управление сервисом.

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

Обновляем пакеты и устанавливаем сервер:

sudo apt update
sudo apt install -y apache2

Если Nginx уже занимал порт 80, Apache выдаст ошибку Address already in use. В этом случае остановите Nginx:

sudo systemctl stop nginx
sudo systemctl disable nginx
sudo systemctl start apache2

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

sudo systemctl status apache2

Проверяем ответ сервера:

curl http://127.0.0.1
Установка Apache

Структура конфигурации Apache

/etc/apache2/
 ├── apache2.conf         # основной конфиг
 ├── ports.conf           # настройки портов
 ├── sites-available/     # доступные сайты
 ├── sites-enabled/       # активные сайты
 ├── mods-available/      # доступные модули
 ├── mods-enabled/        # включённые модули
 └── conf-available/      # дополнительные настройки

Сайты включаются через a2ensite, и оказываются в sites-enabled/.

Структура каталогов Apache

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

Создадим сайт myproject.com:

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

Минимальная конфигурация:

<VirtualHost *:80>
    ServerName myproject.com
    ServerAlias www.myproject.com

    DocumentRoot /var/www/myproject.com

    <Directory /var/www/myproject.com>
        AllowOverride All
        Require all granted
    </Directory>

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

Создаём корневую папку сайта:

sudo mkdir -p /var/www/myproject.com

Добавляем тестовый файл:

echo '

Сайт работает!

' | sudo tee /var/www/myproject.com/index.html
Пример виртуального хоста Apache

Включение сайта и проверка конфигурации

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

sudo a2ensite myproject.com.conf

Отключаем стандартный сайт:

sudo a2dissite 000-default.conf

Проверяем конфигурацию:

sudo apachectl configtest

Перезагружаем сервер:

sudo systemctl reload apache2
Включение сайта Apache

Права доступа и владелец файлов

Apache работает от пользователя www-data:

sudo chown -R www-data:www-data /var/www/myproject.com
sudo chmod -R 755 /var/www

Ошибка 403 Forbidden часто связана именно с правами.

Права доступа Apache

Включение mod_rewrite (для WordPress/Bitrix)

sudo a2enmod rewrite
sudo systemctl restart apache2

В конфигурации сайта обязательно должно быть:

AllowOverride All
Модуль mod_rewrite

Настройки DirectoryIndex

sudo nano /etc/apache2/mods-enabled/dir.conf
<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.htm
</IfModule>
Настройка DirectoryIndex

Типичные ошибки Apache

1. Ошибка 403 Forbidden

  • неверный владелец файлов;
  • права 700 вместо 755;
  • нет Require all granted;

2. Ошибка 404 Not Found

  • неправильный DocumentRoot;
  • файл отсутствует;
  • ошибка пути.

3. Ошибка 500 Internal Server Error

Чаще всего — ошибка в .htaccess:

sudo tail -f /var/log/apache2/error.log

4. Ошибка AH00558

Решение:

sudo nano /etc/apache2/apache2.conf
ServerName localhost

Логи Apache

/var/log/apache2/access.log
/var/log/apache2/error.log
sudo tail -f /var/log/apache2/error.log
Логи Apache

Управление сервисом Apache

sudo systemctl restart apache2
sudo systemctl reload apache2
sudo systemctl enable apache2
sudo systemctl stop apache2

reload — перезагрузка конфигурации без остановки сервиса.

Управление Apache

Итоги

  • Установили Apache и отключили Nginx, чтобы избежать конфликта портов.
  • Разобрали структуру конфигураций сервера.
  • Создали виртуальный хост и тестовый сайт.
  • Настроили права доступа и mod_rewrite.
  • Изучили типичные ошибки и работу с логами.

Вывод: Apache — мощный и надёжный веб-сервер, особенно подходящий для PHP-проектов и классических CMS. При правильной настройке виртуальных хостов и модулей он обеспечивает стабильную работу любых сайтов на VPS.