Справочник

Как установить Apache на Ubuntu

Apache ставится из пакетов Ubuntu одной командой и сразу запускается: по адресу сервера открывается его стартовая страница. Свой сайт описывают файлом в /etc/apache2/sites-available/ и включают командой a2ensite. Apache и nginx оба занимают порт 80 — выберите один из них.

≈ 8 мин чтения
Содержание 10

Что сделать прямо сейчас

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

  1. Обновите список пакетов: sudo apt update.
  2. Установите Apache: sudo apt install apache2. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. На вопрос Do you want to continue? [Y/n] нажмите Y и Enter.
  3. Проверьте службу: sudo systemctl status apache2. В ответе должно быть active (running). Выйти из ответа — клавиша Q.
  4. Если на сервере включён фаервол ufw, откройте порты 80 и 443: sudo ufw allow 'Apache Full'.
  5. Наберите в браузере http:// и IP-адрес сервера ([как узнать IP](/spravochnik/kak-uznat-ip-adres-servera/)). Должна открыться стартовая страница Apache — это файл /var/www/html/index.html.
  6. Опишите свой сайт — как это сделать.

Какая версия поставится

UbuntuВерсия ApacheПакет
24.04Apache 2.4.58apache2 2.4.58
26.04Apache 2.4.66apache2 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 — не нужно помнить номера портов:

ПрофильКакие порты открывает
Apache80 — HTTP
Apache Secure443 — HTTPS
Apache Full80 и 443

Откройте нужный: sudo ufw allow 'Apache Full'. Кавычки обязательны: в названии пробел. Список всех профилей покажет sudo ufw app list. Остальные команды фаервола — Команда ufw.

Свой сайт в Apache

Стартовая страница лежит в папке /var/www/html и открывается по любому адресу сервера. Для своего сайта сделайте отдельную папку и файл настроек. Вместо example.com подставьте свой домен — он уже должен указывать на IP сервера.

  1. Создайте папку сайта: sudo mkdir -p /var/www/example.com и положите в неё файлы сайта.
  2. Перейдите в папку с файлами сайтов: cd /etc/apache2/sites-available.
  3. Скопируйте стандартный файл настроек под новым именем: sudo cp 000-default.conf example.com.conf.
  4. Откройте копию: sudo nano example.com.conf. Добавьте строки ServerName и ServerAlias и поменяйте DocumentRoot, как в примере ниже. Сохраните: Ctrl+O, Enter, затем Ctrl+X.
  5. Включите сайт: sudo a2ensite example.com.
  6. Отключите стартовую страницу: sudo a2dissite 000-default.
  7. Проверьте настройки: sudo apache2ctl configtest. В конце ответа должно быть Syntax OK.
  8. Примените: 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.04PHP 8.3libapache2-mod-php
26.04PHP 8.5libapache2-mod-php

Проверьте, что модуль включён:

sudo apache2ctl -M | grep php

В ответе должна быть строка с php. Если ответ пустой, включите модуль и перезапустите Apache: sudo a2enmod php8.3 (в Ubuntu 26.04 — php8.5), затем sudo systemctl restart apache2.

Для nginx этот способ не подходит: nginx нужен PHP-FPM, а пакет libapache2-mod-php тянет за собой Apache. PHP для nginx — Как установить PHP на Ubuntu.

Где настройки и журналы

ЧтоГде
общие настройки/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 apache2apt не нашёл пакет

Источники

Сверено 14 октября 2026 года.

Что почитать дальше