Установка и настройка Apache на Ubuntu
Что такое Apache
Apache HTTP Server — широко используемый веб-сервер с открытым исходным кодом. Он обслуживает HTTP/HTTPS-запросы и поддерживает модульную архитектуру: модули добавляют функциональность (перезапись URL, авторизация, SSL и т.д.).
Установка Apache
Получить Apache на Ubuntu просто. Рекомендуется сначала обновить список пакетов, затем установить пакет apache2:
sudo apt update && sudo apt install apache2 -yПосле установки откройте браузер и перейдите по адресу http://localhost. Если вы видите страницу с текстом “It Works!”, то установка завершена успешно.

Важно: на современных версиях Ubuntu Apache запускается под systemd. Для управления службой используйте systemctl (примеры ниже).
Управление службой Apache
Запуск, остановка и перезапуск с помощью systemd:
sudo systemctl start apache2 # запустить Apache
sudo systemctl stop apache2 # остановить Apache
sudo systemctl restart apache2 # перезапустить Apache
sudo systemctl status apache2 # статус службы
sudo systemctl enable apache2 # включить автозапуск при загрузке
sudo systemctl disable apache2 # отключить автозапускЕсли вы работаете в старой системе без systemd, альтернативные команды (init.d) выглядят так:
sudo /etc/init.d/apache2 start
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 restartПримечание: команды update-rc.d используются для управления автозапуском в системах на базе SysV. На Ubuntu с systemd используйте systemctl enable/disable.
Папка по умолчанию и смена корня сайта
По умолчанию Apache на Ubuntu обслуживает файлы из /var/www/html (раньше /var/www). Любые файлы в этой папке будут доступны по http://localhost.
Если вы хотите, чтобы документный корень указывал на другую папку, например /home/user/public_html, выполните следующие шаги.
- Создайте целевую папку и тестовый файл:
mkdir -p /home/youruser/public_html
echo "Пример
" > /home/youruser/public_html/index.html- Откройте конфигурацию виртуального хоста. Для простого сайта это обычно файл /etc/apache2/sites-available/000-default.conf (или /etc/apache2/sites-enabled/000-default):
sudo sed -n '1,200p' /etc/apache2/sites-available/000-default.conf
sudo nano /etc/apache2/sites-available/000-default.conf- Найдите строку DocumentRoot и замените её:
DocumentRoot /var/www/html
# ->
DocumentRoot /home/youruser/public_htmlВажно: обеспечьте корректные права и владение папки. Apache (обычно www-data) должен иметь доступ к файлам:
sudo chown -R youruser:www-data /home/youruser/public_html
sudo chmod -R 750 /home/youruser/public_html- Перезапустите Apache:
sudo systemctl restart apache2После этого в браузере http://localhost должен показывать содержимое /home/youruser/public_html.


Настройка нескольких сайтов (виртуальные хосты)
Если вы не хотите менять глобальный корень, создайте отдельные конфигурации для каждого сайта и включайте/отключайте их.
- Скопируйте дефолтный шаблон в новое имя:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site1.conf- Отредактируйте /etc/apache2/sites-available/site1.conf и установите нужный DocumentRoot и ServerName (например site1.local для локальной разработки):
ServerName site1.local
DocumentRoot /home/youruser/site1/public_html
Require all granted
- Включите сайт и отключите дефолтный (если нужно):
sudo a2dissite 000-default.conf && sudo a2ensite site1.conf
sudo systemctl reload apache2- Для локальной разработки добавьте запись в /etc/hosts:
sudo -- sh -c 'echo "127.0.0.1 site1.local" >> /etc/hosts'С этим подходом вы можете поддерживать любое количество сайтов, не затрагивая глобальные настройки.
Включение .htaccess
Файл .htaccess позволяет менять поведение сервера для конкретного каталога без редактирования глобальных конфигураций. По умолчанию AllowOverride часто установлен в None и .htaccess игнорируется.
Чтобы разрешить использование .htaccess, откройте конфигурацию виртуального хоста и в блоке
# До
AllowOverride None
# После
AllowOverride AllПример редактирования файла site1.conf:
sudo nano /etc/apache2/sites-available/site1.confНайти блок
sudo systemctl restart apache2
Важно: .htaccess удобен, но для производительности и контроля лучше вносить правила в основной конфиг виртуального хоста.
Частые проблемы и способы их решения
Страница браузера показывает 403 Forbidden:
- Проверьте права и владельца папки. Apache должен иметь доступ (www-data).
- Убедитесь, что в конфиге есть Require all granted.
500 Internal Server Error после добавления .htaccess:
- Ошибка в синтаксисе .htaccess. Посмотрите /var/log/apache2/error.log для подробностей.
Команда systemctl показывает failed:
- Выполните sudo journalctl -u apache2 –since “10 minutes ago” для поиска причин.
VirtualHost не срабатывает:
- Проверьте, что ServerName совпадает с доменным именем и запись в /etc/hosts, если это локальная разработка.
Безопасность и базовые рекомендации
- Активируйте UFW и разрешите HTTP/HTTPS:
sudo ufw allow 'Apache Full'
sudo ufw enable- Отключите индексацию директорий (Options -Indexes) в конфиге виртуального хоста или .htaccess.
- Используйте HTTPS (Let’s Encrypt certbot) для публичных сайтов.
- Ограничьте доступ к административным панелям по IP или через аутентификацию.
Чеклист — быстро для админа и разработчика
- Установка: apt update && apt install apache2
- Проверка: http://localhost -> “It Works!”
- Настройка виртуального хоста: создать site.conf, указать DocumentRoot, ServerName
- Права: chown -R user:www-data и chmod 750
- Перезапуск: sudo systemctl restart apache2
- Логи: /var/log/apache2/error.log и access.log
- Безопасность: UFW, HTTPS, отключить Indexes
Решение «когда что выбрать» (decision flow)
flowchart TD
A[Нужно ли лишь быстро показать локальный сайт?] -->|Да| B[Изменить DocumentRoot в 000-default.conf]
A -->|Нет, несколько сайтов| C[Создать отдельные site.conf в sites-available]
C --> D[Включить site через a2ensite и reload]
B --> E[Проверить права и перезапустить Apache]
D --> EКороткий глоссарий (1 строка)
- DocumentRoot — корневая папка сайта, откуда Apache отдаёт файлы.
- VirtualHost — конфигурация одного сайта (домена) внутри Apache.
- .htaccess — локальный конфиг в каталоге для переопределения настроек сервера.
Итог
Apache на Ubuntu ставится быстро и гибко настраивается через виртуальные хосты. Для локальной разработки удобно менять DocumentRoot, для нескольких сайтов — создавать отдельные конфиги и использовать a2ensite/a2dissite. Всегда проверяйте права доступа и логи при ошибках.
Важно: используйте systemctl на современных системах, включайте HTTPS и контролируйте доступ.
Краткое резюме:
- Установили Apache и проверили работу.
- Настроили DocumentRoot и виртуальные хосты.
- Включили .htaccess при необходимости.
- Добавили базовые рекомендации по безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента