Если после установки Apache на Ubuntu вы видите стандартную страницу «Apache2 Ubuntu Default Page: It works» — это нормально. Сервер запущен, но отдаёт дефолтный index.html из корня документа. Чтобы заменить её на свою, нужно понимать, где лежит этот файл и как Apache выбирает стартовую страницу. В этой инструкции разберём все основные способы: от простой замены файла до настройки виртуальных хостов и DirectoryIndex. Попутно объясню типичные грабли, на которые наступают новички, и дам практические советы из своего опыта.
Что такое стандартная страница Apache2 и зачем она нужна
Стандартная страница — это тестовый HTML-файл, который показывает, что веб-сервер установлен и отвечает на запросы. На Ubuntu она обычно используется как временная заглушка после установки Apache и хранится в корне документа сайта, чаще всего в /var/www/html/index.html.
Важно понимать разницу между тремя ключевыми понятиями:
DocumentRoot— каталог, из которого Apache раздаёт файлы сайта. Это «где лежат файлы».index.htmlили другой index-файл — страница, которую сервер показывает по умолчанию, если пользователь заходит в каталог без указания конкретного файла.DirectoryIndex— список файлов, которые Apache ищет по порядку, чтобы определить стартовую страницу каталога. Это «какой файл показывать».
На практике я часто вижу, как новички путают эти понятия. DocumentRoot говорит «где лежат файлы сайта», а DirectoryIndex — «какой файл показывать, если посетитель не указал конкретный». Если вы изменили DocumentRoot, но не положили туда index.html, Apache либо покажет ошибку 403 (если запрещён листинг каталога), либо вернёт пустую страницу. Поэтому всегда проверяйте наличие индексного файла в новом каталоге.
Самый простой способ: заменить `index.html`
Если задача — просто убрать стандартную страницу и поставить свою, самый быстрый путь такой:
- Откройте каталог сайта, обычно это
/var/www/html/. - Замените файл
index.htmlна свой HTML-файл. - Проверьте права доступа.
- Обновите страницу в браузере.
Пример редактирования существующего файла:
sudo nano /var/www/html/index.html
Или можно полностью заменить файл своим:
sudo rm /var/www/html/index.html
sudo nano /var/www/html/index.html
После этого Apache начнёт отдавать ваш файл вместо заглушки, потому что именно index.html является типичной страницей по умолчанию в Ubuntu-сборке Apache.
Не забудьте, что файл должен быть читаемым для пользователя, от которого работает Apache (обычно www-data). Достаточно прав 644 и владельца root:root, но если вы создали файл из-под обычного пользователя, может потребоваться sudo chown www-data:www-data /var/www/html/index.html. Проверьте права командой ls -l /var/www/html/.
Когда этот способ подходит
- нужен простой лендинг или заглушка;
- проект пока один;
- не требуется сложная настройка виртуальных хостов;
- надо быстро убрать страницу “It works”.
Это самый безопасный вариант для новичков — он не требует правки конфигурационных файлов, и вы всегда можете вернуть стандартную страницу, восстановив исходный index.html из резервной копии.
Как изменить стандартную страницу Apache2 через `DocumentRoot`
Если сайт хранится не в /var/www/html, а в другом каталоге, нужно изменить путь в конфигурации виртуального хоста. На Ubuntu это обычно файл /etc/apache2/sites-available/000-default.conf.
Типичный сценарий редактирования:
sudo nano /etc/apache2/sites-available/000-default.conf
Найдите строку:
DocumentRoot /var/www/html
И замените на нужную, например:
DocumentRoot /var/www/mysite
Потом убедитесь, что в новом каталоге есть индексный файл:
ls -l /var/www/mysite/index.html
И перезапустите или перезагрузите Apache:
sudo systemctl reload apache2
Этот подход удобен, если сайт уже разложен в отдельной директории и нужно не просто поменять файл, а перенаправить Apache на другой каталог.
Часто начинающие администраторы правят не тот конфиг. Если вы создали отдельный виртуальный хост для своего домена, убедитесь, что вы редактируете именно его, а не дефолтный. Проверить, какой конфиг активен, можно командой apache2ctl -S — она покажет все виртуальные хосты и их DocumentRoot. Это сэкономит вам массу времени при диагностике.
Как задать другой файл вместо `index.html`
Иногда нужно, чтобы по умолчанию открывался не index.html, а, например, home.html или landing.html. Для этого используется директива DirectoryIndex.
Пример настройки:
DirectoryIndex home.html index.html
Это означает: сначала Apache попытается открыть home.html, а если его нет — index.html.
На Ubuntu эта настройка часто находится в файле:
/etc/apache2/mods-available/dir.conf
Пример содержимого:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Можно переставить порядок:
DirectoryIndex home.html index.html index.php
После изменения не забудьте применить конфигурацию:
sudo systemctl reload apache2
Когда это полезно
- если главный файл сайта называется не
index.html; - если на сайте используется
index.php; - если нужен гибкий порядок проверки нескольких стартовых страниц.
Особенно актуально, когда вы переходите с HTML на PHP и хотите, чтобы приоритет был у index.php. Типичная ошибка новичка: установил WordPress, видит белый экран, а причина — отсутствие index.php в DirectoryIndex. Добавьте его в список, и всё заработает.
Как полностью убрать стандартную страницу Apache2
Если задача не просто заменить контент, а убрать саму заглушку Apache, есть несколько подходов.
Способ 1. Заменить файл `index.html`
Самый безопасный вариант — удалить или заменить стандартный файл:
sudo rm /var/www/html/index.html
или
sudo mv /var/www/html/index.html /var/www/html/index.html.bak
После этого Apache не будет отдавать дефолтную страницу из этого файла, но при наличии других index-файлов или настроенного DirectoryIndex может показать другой документ.
Этот способ хорош, когда вы просто хотите избавиться от заглушки, но сайт ещё не готов. Однако если в каталоге нет ни одного index-файла, а листинг каталога запрещён (Options -Indexes), посетитель увидит ошибку 403 Forbidden. Поэтому лучше создать свою страницу-заглушку, а не оставлять каталог пустым.
Способ 2. Отключить стандартный сайт
На Ubuntu используется схема sites-available и sites-enabled, а стандартный виртуальный хост обычно называется 000-default.conf.
Отключение:
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
Это полезно, если вы уже настроили собственный виртуальный хост и хотите, чтобы именно он был основным.
Перед отключением убедитесь, что ваш сайт корректно настроен и отвечает на запросы. Иначе после отключения дефолтного хоста Apache может показывать первый попавшийся сайт или вообще ничего. Проверьте командой apache2ctl -S, какой хост будет использоваться по умолчанию.
Способ 3. Настроить свой виртуальный хост
Если на сервере несколько сайтов, правильнее создать отдельный конфиг для каждого домена, задать свой DocumentRoot, включить нужный сайт через a2ensite и затем перезагрузить Apache. Не забывайте про директиву ServerName — она помогает Apache понять, какой сайт показывать при обращении по домену. Если её не указать, Apache будет использовать первый подходящий виртуальный хост, что часто приводит к путанице.
Пошаговый алгоритм для реального сервера
Ниже — рабочая последовательность, если нужно заменить стандартную страницу Apache на своем сервере Ubuntu.
Вариант для одиночного сайта
- Проверьте, где лежит файл сайта (обычно
/var/www/html). - Замените
/var/www/html/index.htmlна свой файл. - Убедитесь, что права позволяют Apache читать файл:
sudo chmod 644 /var/www/html/index.htmlи владелецwww-data. - Обновите страницу в браузере.
- Если изменений нет, проверьте конфиг и
DocumentRootкомандойapache2ctl -S.
На реальном сервере я всегда сначала смотрю вывод apache2ctl -S, чтобы понять, какой виртуальный хост обрабатывает запрос. Это экономит кучу времени.
Вариант для собственного домена
- Откройте конфиг виртуального хоста (например,
/etc/apache2/sites-available/example.com.conf). - Измените
DocumentRootна каталог сайта. - Убедитесь, что в каталоге есть
index.htmlили другой стартовый файл. - При необходимости настройте
DirectoryIndex. - Выполните
sudo systemctl reload apache2. - Проверьте сайт по домену и по IP.
Если сайт не открывается по домену, проверьте DNS-записи и убедитесь, что домен указывает на IP вашего сервера. Также проверьте, что виртуальный хост включён (a2ensite) и нет конфликтов с другими хостами.
Что проверить, если страница не меняется
Иногда файл уже заменен, но браузер все еще показывает старую заглушку. Чаще всего причина одна из этих.
| Проблема | Что происходит | Что делать |
|---|---|---|
Не тот DocumentRoot |
Apache смотрит в другой каталог, потому что активен не тот виртуальный хост или путь в конфиге указан неверно. | Проверьте вывод apache2ctl -S, найдите свой хост и сверьте DocumentRoot. |
Остался 000-default.conf |
Открывается стандартный сайт, потому что дефолтный виртуальный хост всё ещё активен и перехватывает запросы. | Отключите его через a2dissite 000-default.conf и перезагрузите Apache. |
| Неверное имя файла | Apache не находит стартовую страницу, потому что ожидает index.html, а у вас home.html. |
Переименуйте файл в index.html или настройте DirectoryIndex. |
| Нет прав на чтение | Сервер не может открыть файл из-за неправильных прав. | Установите chmod 644 на файл и chmod 755 на каталоги, владелец www-data. |
| Кэш браузера | Видна старая версия страницы. | Обновите страницу без кэша (Ctrl+F5) или откройте в режиме инкогнито. |
| Не перезагружен Apache | Изменения конфигурации не вступили в силу. | Выполните sudo systemctl reload apache2. |
Практический пример: меняем заглушку на свой HTML
Допустим, нужно заменить стандартную страницу на простую страницу “Сайт в разработке”.
Создайте файл:
sudo nano /var/www/html/index.html
Пример содержимого:
<!DOCTYPE html>
<html>
<head>
<title>Сайт в разработке</title>
</head>
<body>
<h1>Сайт скоро заработает</h1>
<p>Мы обновляем сервер. Зайдите позже.</p>
</body>
</html>
Сохраните файл и откройте сайт в браузере. Если DocumentRoot указывает на /var/www/html, Apache начнет отдавать этот документ вместо стандартной страницы.
После сохранения я всегда проверяю содержимое через cat /var/www/html/index.html, чтобы убедиться, что не опечатался. И не забывайте: если вы меняли что-то в конфигурации, нужен reload. В данном случае, если DocumentRoot не менялся, перезагрузка не требуется, но привычка полезная.
Частые ошибки новичков
- Путают
DocumentRootиDirectoryIndex— меняют не то, что нужно. - Меняют файл не в том каталоге — например, редактируют
/var/www/html/index.html, а активен виртуальный хост с другимDocumentRoot. - Редактируют конфиг, но не перезагружают Apache — изменения не применяются.
- Оставляют старый
000-default.conf, из-за чего открывается дефолтный сайт, даже если свой хост настроен. - Создают
home.html, но не добавляют его вDirectoryIndex— Apache не знает, что этот файл нужно показывать по умолчанию. - Проверяют только по IP, хотя сайт должен открываться по домену с отдельным виртуальным хостом — запросы по IP может перехватывать другой хост.
- Забывают про права доступа — Apache не может прочитать файл, и браузер показывает ошибку 403.
- Используют
restartвместоreloadна продакшене —reloadбезопаснее, так как не обрывает активные соединения. - Не проверяют синтаксис конфигурации перед перезагрузкой (
apache2ctl configtest) — опечатка может положить сервер. - Правят не тот виртуальный хост — у меня был случай, когда я полчаса не мог понять, почему не меняется страница, а оказалось, что редактировал конфиг отключённого сайта. Всегда проверяйте, какой сайт активен.
Чек-лист перед публикацией
- В каталоге сайта есть нужный
index-файл. DocumentRootуказывает на правильную папку.000-default.confотключен, если используется свой виртуальный хост.- Права на файлы позволяют Apache читать содержимое (
chmod 644, владелецwww-data). - После правок выполнен
reloadилиrestart. - Страница открывается по домену и по IP так, как задумано.
Перед тем как считать работу законченной, пройдитесь по этому списку. Он сэкономит вам время и нервы.
Краткий вывод
Чтобы изменить стандартную страницу Apache2, в большинстве случаев достаточно заменить /var/www/html/index.html или перенастроить DocumentRoot и DirectoryIndex. Если нужно полностью убрать заглушку, отключите дефолтный виртуальный хост 000-default.conf и убедитесь, что ваш сайт правильно настроен. Главное — понимать, какой файл Apache считает стартовым и откуда он его берёт. А дальше — дело техники и внимательности.
FAQ
Где лежит стандартная страница Apache2 в Ubuntu?
Обычно в /var/www/html/index.html. Но если вы изменили DocumentRoot в конфигурации виртуального хоста, то путь будет другим. Проверить текущий DocumentRoot можно командой grep -r DocumentRoot /etc/apache2/sites-enabled/.
Что менять: DocumentRoot или DirectoryIndex?DocumentRoot — если нужно указать другой каталог для сайта. DirectoryIndex — если нужно задать другой стартовый файл (например, home.html вместо index.html). Часто новички меняют DocumentRoot, когда достаточно просто переименовать файл. Не усложняйте без необходимости.
Почему открывается страница Apache вместо моего сайта?
Скорее всего, Apache смотрит не в тот каталог, либо активен стандартный сайт 000-default.conf. Проверьте, какой виртуальный хост обрабатывает запрос: apache2ctl -S. Если видите, что используется 000-default, отключите его или настройте свой хост с нужным DocumentRoot.
Нужно ли перезапускать Apache после изменений?
Да, после правок конфигурации обязательно выполните sudo systemctl reload apache2 (или restart, но reload предпочтительнее, так как не обрывает активные соединения). Если вы просто заменили файл index.html без изменения конфигов, перезагрузка не требуется.
Можно ли оставить index.html и добавить index.php?
Да, в DirectoryIndex можно указать несколько файлов в порядке приоритета, например: DirectoryIndex index.php index.html. Тогда Apache сначала попытается открыть index.php, а если его нет — index.html. Это стандартная практика для сайтов на PHP.
