Как установить Apache на Ubuntu
Apache ставится из пакетов Ubuntu одной командой и сразу запускается: по адресу сервера открывается его стартовая страница. Свой сайт описывают файлом в /etc/apache2/sites-available/ и включают командой a2ensite. Apache и nginx оба занимают порт 80 — выберите один из них.
Содержание 10
Что сделать прямо сейчас
Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
- Обновите список пакетов:
sudo apt update. - Установите Apache:
sudo apt install apache2. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопросDo you want to continue? [Y/n]нажмите Y и Enter. - Проверьте службу:
sudo systemctl status apache2. В ответе должно бытьactive (running). Выйти из ответа — клавиша Q. - Если на сервере включён фаервол ufw, откройте порты 80 и 443:
sudo ufw allow 'Apache Full'. - Наберите в браузере
http://и IP-адрес сервера ([как узнать IP](/spravochnik/kak-uznat-ip-adres-servera/)). Должна открыться стартовая страница Apache — это файл /var/www/html/index.html. - Опишите свой сайт — как это сделать.
Какая версия поставится
| Ubuntu | Версия Apache | Пакет |
|---|---|---|
| 24.04 | Apache 2.4.58 | apache2 2.4.58 |
| 26.04 | Apache 2.4.66 | apache2 2.4.66 |
Номера версий взяты со страниц пакетов Ubuntu на 14 октября 2026 года: с обновлениями они растут. Какая Ubuntu стоит у вас — как узнать. Версию Apache на сервере покажет apache2ctl -v.
Apache запускается сразу после установки и дальше стартует сам при каждой загрузке сервера.
Apache или nginx
Apache и nginx — оба веб-серверы, и оба после установки слушают порт 80. Если на сервере уже работает nginx, служба apache2 не запустится: порт занят. Решите, какой веб-сервер нужен, и оставьте один. Инструкции на этом сайте написаны для nginx — Как установить nginx на Ubuntu.
Какая программа держит порт 80, покажет sudo ss -tlnp — как читать ответ. Если Apache попал на сервер случайно и мешает nginx — разбор ошибки nginx: Address already in use.
Порты в фаерволе
Вместе с Apache ставятся готовые профили для ufw — не нужно помнить номера портов:
| Профиль | Какие порты открывает |
|---|---|
Apache | 80 — HTTP |
Apache Secure | 443 — HTTPS |
Apache Full | 80 и 443 |
Откройте нужный: sudo ufw allow 'Apache Full'. Кавычки обязательны: в названии пробел. Список всех профилей покажет sudo ufw app list. Остальные команды фаервола — Команда ufw.
Свой сайт в Apache
Стартовая страница лежит в папке /var/www/html и открывается по любому адресу сервера. Для своего сайта сделайте отдельную папку и файл настроек. Вместо example.com подставьте свой домен — он уже должен указывать на IP сервера.
- Создайте папку сайта:
sudo mkdir -p /var/www/example.comи положите в неё файлы сайта. - Перейдите в папку с файлами сайтов:
cd /etc/apache2/sites-available. - Скопируйте стандартный файл настроек под новым именем:
sudo cp 000-default.conf example.com.conf. - Откройте копию:
sudo nano example.com.conf. Добавьте строки ServerName и ServerAlias и поменяйте DocumentRoot, как в примере ниже. Сохраните: Ctrl+O, Enter, затем Ctrl+X. - Включите сайт:
sudo a2ensite example.com. - Отключите стартовую страницу:
sudo a2dissite 000-default. - Проверьте настройки:
sudo apache2ctl configtest. В конце ответа должно бытьSyntax OK. - Примените:
sudo systemctl restart apache2.
Без комментариев файл сайта выглядит так:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>ServerName — домен сайта, ServerAlias — второй адрес, с www. DocumentRoot — папка с файлами сайта. Строки с # в начале — комментарии, их можно не трогать.
Зачем отключать 000-default: запросы, которые не подошли ни к одному сайту по ServerName, Apache отдаёт первому включённому сайту. Пока включён 000-default, первым будет он. Перед Syntax OK в ответе configtest может стоять строка с кодом AH00558: Apache не смог узнать полное имя сервера. Это предупреждение, работе сайтов оно не мешает.
PHP для Apache
Apache выполняет PHP сам, через модуль. Поставьте модуль и пакет для работы с MySQL и MariaDB:
sudo apt install libapache2-mod-php php-mysql| Ubuntu | Версия PHP | Пакет |
|---|---|---|
| 24.04 | PHP 8.3 | libapache2-mod-php |
| 26.04 | PHP 8.5 | libapache2-mod-php |
Проверьте, что модуль включён:
sudo apache2ctl -M | grep phpВ ответе должна быть строка с php. Если ответ пустой, включите модуль и перезапустите Apache: sudo a2enmod php8.3 (в Ubuntu 26.04 — php8.5), затем sudo systemctl restart apache2.
Где настройки и журналы
| Что | Где |
|---|---|
| общие настройки | /etc/apache2/apache2.conf |
| на каких портах Apache принимает запросы | /etc/apache2/ports.conf |
| файлы сайтов | /etc/apache2/sites-available/, включённые — ссылки в /etc/apache2/sites-enabled/ |
| модули | /etc/apache2/mods-available/ и /etc/apache2/mods-enabled/ |
| журнал ошибок | /var/log/apache2/error.log |
| журнал запросов | /var/log/apache2/access.log |
| журнал службы | sudo journalctl -u apache2 |
Последние строки журнала ошибок покажет sudo tail -n 50 /var/log/apache2/error.log. Пользователь, от которого Apache читает файлы сайта, задан в /etc/apache2/envvars: в Ubuntu это www-data.
Ошибки и как их исправить
| Что видите | Что делать |
|---|---|
служба apache2 не запускается, в sudo journalctl -u apache2 есть Address already in use | порт 80 занят другой программой, например nginx: найдите её командой sudo ss -tlnp и решите, какой веб-сервер оставить |
configtest ответил ошибкой вместо Syntax OK | в ответе указаны файл и номер строки: исправьте её и проверьте снова |
| по домену открывается стартовая страница Apache | выполните sudo a2dissite 000-default, проверьте строку ServerName и сделайте restart |
| браузер скачивает файл .php вместо страницы | модуль PHP не включён: sudo a2enmod php8.3 и restart |
| сайт не открывается снаружи, а на сервере работает | откройте порты: sudo ufw allow 'Apache Full' |
Unable to locate package apache2 | apt не нашёл пакет |
Источники
- Документация Ubuntu Server: Install Apache2 — установка и файлы настроек в /etc/apache2/.
- Документация Ubuntu Server: Configure Apache2 settings — новый сайт копией 000-default.conf, ServerName, DocumentRoot, a2ensite и a2dissite.
- Пакет apache2 в Ubuntu 24.04 — ставит Apache 2.4.58.
- Пакет apache2 в Ubuntu 26.04 — ставит Apache 2.4.66.
- Список файлов пакета apache2 в Ubuntu 24.04 — 000-default.conf, ports.conf, профиль ufw.
- Пакет libapache2-mod-php в Ubuntu 24.04 — модуль PHP 8.3 для Apache.
- Пакет libapache2-mod-php в Ubuntu 26.04 — модуль PHP 8.5 для Apache.
- Справка a2ensite для Ubuntu 24.04 — включение и отключение сайтов; первый включённый сайт получает запросы, которые не подошли к другим.
- Справка a2enmod для Ubuntu 24.04 — включение и отключение модулей Apache.
- Справка apache2ctl для Ubuntu 24.04 — configtest — проверка настроек.
- Исходный код Apache 2.4.58: main.c — ответ Syntax OK.
- Исходный код Apache 2.4.58: util.c — предупреждение AH00558.
Сверено 14 октября 2026 года.
Что почитать дальше
- Как установить nginx на Ubuntuвторой веб-сервер, для которого написаны инструкции на этом сайте.
- Как разместить сайт на VPSсайт на nginx с доменом и HTTPS.
- Как установить MySQL на Ubuntuбаза для сайта на PHP.
- Команда ufwфаервол на сервере.
- Установка программ на Ubuntuчто ещё поставить для сайта.