Установка LAMP на Debian 13, 12, 11: полное руководство

LAMP — это аббревиатура из первых букв четырёх компонентов: Linux (Debian), Apache (веб-сервер), MariaDB/MySQL (база данных) и PHP (язык программирования). Это самый популярный стек для запуска динамических веб-сайтов и приложений: WordPress, Joomla, Drupal, Laravel, phpMyAdmin и многих других.

В этом руководстве я покажу, как установить LAMP на Debian 13, 12 и 11 из официальных репозиториев (без сторонних источников). Все компоненты будут обновляться через обычную систему APT.


Оглавление

Компоненты LAMP по версиям Debian

Релиз DebianApacheMariaDBPHPPHP-FPM сервис
Debian 13 (Trixie)2.4.x11.8.x8.4php8.4-fpm
Debian 12
(Bookworm)
2.4.x10.11.x8.2php8.2-fpm
Debian 11 (Bullseye)2.4.x10.5.x7.4php7.4-fpm

⚠️ В этом руководстве используется PHP-FPM (рекомендуемый способ). PHP-FPM держит обработку PHP в отдельных процессах, что безопаснее и производительнее, чем mod_php. Если вам нужен mod_php (PHP внутри Apache), см. соответствующий раздел.


Предварительные требования

Перед установкой убедитесь, что:

  • Вы имеете права sudo (администратора)

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo — выполняет команду от имени суперпользователя; whoami — показывает имя текущего пользователя.

Ожидаемый вывод в терминале:

root

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.


Установка LAMP

Шаг 1: Обновите систему

sudo apt update && sudo apt upgrade -y

Шаг 2: Установите Apache

sudo apt install -y apache2

Проверьте, что Apache работает:

sudo systemctl status apache2 --no-pager

Ожидаемый вывод: Active: active (running)

Проверьте версию:

sudo apache2ctl -v

Проверьте в браузере: откройте http://127.0.0.1/ — должна появиться стандартная страница Apache.


Шаг 3: Установите MariaDB

sudo apt install -y mariadb-server mariadb-client

Проверьте, что MariaDB работает:

sudo systemctl status mariadb --no-pager

Ожидаемый вывод: Active: active (running)


Шаг 4: Безопасная настройка MariaDB

Запустите скрипт безопасной настройки:

sudo mariadb-secure-installation

Рекомендуемые ответы:

ВопросОтвет
Switch to unix_socket authenticationY
Change the root password?n
Remove anonymous users?Y
Disallow root login remotely?Y
Remove test database and access to it?Y
Reload privilege tables now?Y

Шаг 5: Установите PHP и PHP-FPM

sudo apt install -y php-fpm php-cli php-mysql

Что делает: Устанавливает PHP-FPM (обработчик PHP), интерпретатор для командной строки и модуль для работы с MariaDB/MySQL.

Проверьте, что PHP-FPM запущен (версия зависит от Debian):

# Для Debian 13
sudo systemctl status php8.4-fpm --no-pager

# Для Debian 12
sudo systemctl status php8.2-fpm --no-pager

# Для Debian 11
sudo systemctl status php7.4-fpm --no-pager

Ожидаемый вывод: Active: active (running)


Шаг 6: Настройте Apache для работы с PHP-FPM

Определите версию PHP:

php_branch=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
echo $php_branch

Включите необходимые модули и конфигурацию:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf "php${php_branch}-fpm"
sudo systemctl restart apache2

Шаг 7: Установите популярные PHP-расширения

sudo apt install -y php-curl php-gd php-intl php-mbstring php-xml php-zip

Что делает каждое расширение:

  • php-curl — работа с HTTP-запросами (API)
  • php-gd — обработка изображений
  • php-intl — интернационализация
  • php-mbstring — многобайтовые строки (кириллица)
  • php-xml — работа с XML, DOM
  • php-zip — работа с ZIP-архивами

Перезапустите PHP-FPM и Apache:

sudo systemctl restart "php${php_branch}-fpm"
sudo systemctl restart apache2

Шаг 8: Проверьте работу PHP через Apache

Создайте тестовый PHP-файл:

printf '%s\n' '<?php echo "LAMP_OK";' | sudo tee /var/www/html/lamp-test.php > /dev/null

Проверьте через curl:

curl -fsS http://127.0.0.1/lamp-test.php

Ожидаемый вывод: LAMP_OK

Удалите тестовый файл:

sudo rm -f /var/www/html/lamp-test.php

Альтернатива: Использование Apache mod_php (вместо PHP-FPM)

Если вы хотите, чтобы PHP обрабатывался внутри Apache (без отдельного сервиса PHP-FPM):

sudo apt install -y libapache2-mod-php php-cli php-mysql
php_branch=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
sudo a2disconf "php${php_branch}-fpm" 2>/dev/null || true
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork "php${php_branch}"
sudo systemctl restart apache2

Проверьте, что модуль PHP загружен:

sudo apache2ctl -M | grep php

Ожидаемый вывод: php_module (shared)

⚠️ Важно: Не включайте одновременно mod_php и PHP-FPM для одного сайта. Выберите что-то одно.


Настройка UFW (файрвола)

⚠️ Если вы подключаетесь по SSH, сначала разрешите SSH, чтобы не потерять доступ!

sudo ufw allow ssh
sudo ufw allow 'Apache Full'
sudo ufw enable

Проверьте статус:

sudo ufw status

Настройка HTTPS с Let’s Encrypt (опционально)

Если у вас есть доменное имя, указывающее на сервер:

sudo apt install -y python3-certbot-apache
sudo certbot --apache --agree-tos --redirect --email you@example.com -d example.com

Решение типичных проблем

8.1 Ошибка: Apache не запускается, порт 80 занят

Симптом: sudo systemctl status apache2 показывает ошибку Address already in use.

Причина: Другой веб-сервер (например, Nginx) уже слушает порт 80.

Пошаговое решение:

Шаг 1: Определите, какой процесс занял порт:

sudo ss -tlnp | grep ':80'

Шаг 2: Остановите конфликтующий сервис:

sudo systemctl stop nginx
sudo systemctl disable nginx

Шаг 3: Запустите Apache:

sudo systemctl start apache2

8.2 Ошибка: PHP-файлы скачиваются, а не выполняются

Симптом: При открытии http://127.0.0.1/lamp-test.php браузер скачивает файл.

Причина: Apache не передаёт PHP-файлы обработчику.

Пошаговое решение:

Шаг 1: Для PHP-FPM проверьте, что конфигурация включена:

php_branch=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
sudo a2enconf "php${php_branch}-fpm"
sudo systemctl restart apache2

Шаг 2: Для mod_php проверьте, что модуль включён:

sudo a2enmod php8.4   # замените версию на вашу
sudo systemctl restart apache2

8.3 Ошибка: MariaDB не запускается

Симптом: systemctl status mariadb показывает failed.

Причина: Конфликт с другой СУБД или повреждённые файлы.

Пошаговое решение:

Шаг 1: Проверьте логи:

sudo journalctl -u mariadb -n 30 --no-pager

Шаг 2: Попробуйте перезапустить:

sudo systemctl restart mariadb

Шаг 3: Если не помогло — переустановите:

sudo apt install --reinstall mariadb-server

8.4 Ошибка: PHP не видит установленные расширения

Симптом: Расширение установлено, но php -m | grep имя ничего не показывает.

Причина: Не перезапущен PHP-FPM (или Apache для mod_php).

Пошаговое решение:

Для PHP-FPM:

php_branch=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
sudo systemctl restart "php${php_branch}-fpm"
sudo systemctl restart apache2

Для mod_php:

sudo systemctl restart apache2

8.5 Ошибка: Permission denied при записи в /var/www/html

Симптом: Приложение не может писать в директорию сайта (например, WordPress не может загружать изображения).

Причина: Пользователь www-data (от которого работает Apache) не является владельцем директории.

Пошаговое решение:

sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod 755 {} \;
sudo find /var/www/html -type f -exec chmod 644 {} \;

Чек-лист: что проверить после установки

  • [ ] Apache работает: systemctl status apache2active (running)
  • [ ] MariaDB работает: systemctl status mariadbactive (running)
  • [ ] PHP-FPM работает: systemctl status php8.4-fpmactive (running)
  • [ ] Страница PHP открывается: curl http://127.0.0.1/lamp-test.phpLAMP_OK
  • [ ] PHP-расширения установлены: php -m | grep -E 'curl|gd|mbstring|xml|zip'
  • [ ] Файрвол настроен: sudo ufw status → порты 80 и 443 открыты

Удаление LAMP (полное)

Шаг 1: Удалите пакеты

sudo apt remove apache2 mariadb-server mariadb-client php-fpm php-cli php-mysql php-curl php-gd php-intl php-mbstring php-xml php-zip
sudo apt autoremove

Шаг 2: Удалите конфигурационные файлы и данные

⚠️ Внимание: Это удалит все сайты, базы данных и настройки.

sudo rm -rf /var/lib/mysql /etc/mysql /etc/apache2 /var/www/html

Шаг 3: Удалите репозиторий и ключи (не требуется, так как всё из Debian)


Часто задаваемые вопросы (FAQ)

Вопрос: Зачем использовать PHP-FPM вместо mod_php?
Ответ: PHP-FPM работает отдельно от Apache, что даёт лучшую изоляцию, производительность на высоких нагрузках и возможность использовать разные версии PHP для разных сайтов.

Вопрос: Какой веб-сервер выбрать: Apache или Nginx?
Ответ: Apache проще для новичков и имеет .htaccess. Nginx быстрее на статических файлах и лучше держит высокие нагрузки. Для LAMP традиционно используется Apache.

Вопрос: Могу ли я установить MySQL вместо MariaDB?
Ответ: Да, но MariaDB — это форк MySQL с лучшей производительностью и открытой лицензией. В Debian по умолчанию стоит MariaDB.

Вопрос: Как узнать, какая версия PHP у меня установлена?
Ответ: php -v или php --version.

Вопрос: Как проверить, что PHP работает именно через Apache?
Ответ: Создайте файл info.php с содержимым <?php phpinfo(); ?> и откройте в браузере. Найдите строку Server API — должно быть FPM/FastCGI (для PHP-FPM) или Apache 2.0 Handler (для mod_php).


Заключение

Теперь на вашем Debian установлен полный LAMP-стек: Apache, MariaDB и PHP-FPM. Вы можете разворачивать динамические сайты (WordPress, Laravel и т.д.), базы данных и обрабатывать PHP-скрипты.

Что дальше?