LAMP — это аббревиатура из первых букв четырёх компонентов: Linux (Debian), Apache (веб-сервер), MariaDB/MySQL (база данных) и PHP (язык программирования). Это самый популярный стек для запуска динамических веб-сайтов и приложений: WordPress, Joomla, Drupal, Laravel, phpMyAdmin и многих других.
В этом руководстве я покажу, как установить LAMP на Debian 13, 12 и 11 из официальных репозиториев (без сторонних источников). Все компоненты будут обновляться через обычную систему APT.
Компоненты LAMP по версиям Debian
| Релиз Debian | Apache | MariaDB | PHP | PHP-FPM сервис |
|---|---|---|---|---|
| Debian 13 (Trixie) | 2.4.x | 11.8.x | 8.4 | php8.4-fpm |
| Debian 12 (Bookworm) | 2.4.x | 10.11.x | 8.2 | php8.2-fpm |
| Debian 11 (Bullseye) | 2.4.x | 10.5.x | 7.4 | php7.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 authentication | Y |
| 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, DOMphp-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 apache2→active (running) - [ ] MariaDB работает:
systemctl status mariadb→active (running) - [ ] PHP-FPM работает:
systemctl status php8.4-fpm→active (running) - [ ] Страница PHP открывается:
curl http://127.0.0.1/lamp-test.php→LAMP_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-скрипты.
Что дальше?
- Установите WordPress
- Установите phpMyAdmin для управления базами данных
- Настройте HTTPS с Let’s Encrypt
- Установите Fail2ban для защиты