LAMP за 10 минут: быстрая установка для тестовых задач

LAMP за 10 минут: быстрая установка для тестовых задач

Нужно быстро установить LAMP-стек для тестирования на Ubuntu? В статье — экспресс-установка одной командой, настройка безопасности MySQL и проверка работы PHP. Весь процесс займёт не более 10 минут.

Введение

Эта инструкция подойдёт, если нужно срочно развернуть тестовую среду на Ubuntu 24.04 — например, для демонстрации прототипа клиенту, проверки совместимости плагина WordPress или экспериментов с настройками PHP. LAMP-стек (Linux + Apache + MySQL + PHP) отлично подходит для таких сценариев благодаря своей надёжности и минимальным требованиям к ресурсам.

Никогда не используйте эту конфигурацию для публичных проектов: открытый root-доступ к MySQL и стандартные настройки Apache представляют серьёзный риск для безопасности.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

Установка Apache, MySQL и PHP одной командой

Обновите локальный кеш информации о пакетах, чтобы получить актуальные данные из репозиториев Ubuntu 24.04 (без этого шага система может устанавливать устаревшие версии ПО), и установите менеджер задач:

sudo apt update && sudo apt install tasksel

После этого установка всего LAMP-стека сводится к выполнению одной команды:

sudo apt install -y lamp-server^

Ключевой элемент здесь — символ «^». В терминологии APT это не обычный пакет, а задача (task), которая автоматически подбирает и устанавливает всю группу взаимосвязанных пакетов. Задачи управляются утилитой tasksel, но APT может их устанавливать напрямую.

Мета-пакет lamp-server включает три основных компонента:

  • Apache — веб-сервер с пакетами apache2 и apache2-utils;
  • MySQL — СУБД через mysql-server и mysql-client;
  • PHP — интерпретатор с базовыми модулями php, libapache2-mod-php, php-mysql.

После выполнения команды происходит автоматическая настройка: Apache сразу запускается как служба, MySQL добавляется в автозагрузку, а PHP интегрируется с веб-сервером через модуль libapache2-mod-php.

Важно помнить про особенности такого подхода — MySQL устанавливается без пароля для root-доступа, Apache открывает порт 80 без HTTPS, а тестовые файлы остаются общедоступными в /var/www/html/.

Для проверки корректности установки выполните:

systemctl status apache2 mysql

В выводе вы должны увидеть статус active (running) для обеих служб — это подтверждает, что веб-сервер и база данных работают.

Если возникнут проблемы, например ошибка Unable to locate package lamp-server^, повторите попытку с командой:

sudo tasksel install lamp-server

Для явного указания версии PHP используйте:

sudo apt install php8.3 php8.3-mysql
sudo systemctl restart apache2

Никогда не используйте эту конфигурацию для продакшена из-за отсутствия базовых мер безопасности!

Быстрая настройка безопасности LAMP

По умолчанию root-пользователь в MySQL не имеет пароля. Выполните команду, которая решает эту проблему:

sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'SecurePass'; FLUSH PRIVILEGES;"

Где:

  • sudo mysql — запускает консоль MySQL с правами суперпользователя;
  • -e — позволяет выполнить SQL-запрос без перехода в интерактивный режим;
  • ALTER USER — изменяет параметры пользователя;
  • 'root'@'localhost' — системный администратор СУБД (работает только для локальных подключений);
  • IDENTIFIED WITH caching_sha2_password — устанавливает метод аутентификации;
  • BY 'SecurePass' — задаёт пароль;
  • FLUSH PRIVILEGES — перезагрузка таблицы привилегий.

При выполнении команды MySQL создаёт хэш пароля и сохраняет его в системной таблице mysql.user, после чего:

  • все новые подключения будут требовать аутентификации;
  • старые сессии без пароля автоматически закроются;
  • активируется шифрование подключений по протоколу TLS.

Хотя установка LAMP в экспресс-режиме предназначена для внутреннего использования, оставлять MySQL без пароля — опасная практика, даже в тестовых средах. Злоумышленники, получившие доступ к серверу через другие уязвимости, могут захватить полный контроль над базами данных, включая чтение, изменение или удаление информации. К тому же многие веб-приложения (например, WordPress или Joomla) принципиально отказываются работать с root-доступом без пароля, что приводит к ошибкам подключения при развёртывании тестовых проектов. Не менее важна и совместимость с инструментами автоматизации. Скрипты Ansible, Docker-контейнеры или CI/CD-пайплайны требуют явного указания пароля для настройки БД. Поэтому для временных сред используйте такой подход:

  • установите сложный пароль;
  • ограничьте доступ к БД локальными подключениями;
  • удалите после завершения тестов командой:
sudo mysql -e "DROP DATABASE test; DELETE FROM mysql.user WHERE User='appuser';"

Дополнительные меры безопасности

  • Удаление анонимных пользователей:
sudo mysql -e "DROP USER IF EXISTS ''@'localhost';"
  • Обновление привилегий после внесения изменений:
sudo mysql -e "FLUSH PRIVILEGES"
  • Создание отдельного пользователя для приложений:
sudo mysql -e "CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'AppPassword'"

Чтобы проверить результат, попробуйте подключиться без пароля — должно появиться сообщение об ошибке:

mysql -u root

Вывод:

# ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Успешное подключение с паролем подтвердит настройку:

mysql -u root -p'SecurePass' -e "SELECT version()"

Помните, что пароль остаётся в истории команд! Удалите его следы:

history -d $(history | grep 'ALTER USER' | awk '{print $1}')

Тестирование работы стека

После установки LAMP и настройки безопасности проверим взаимодействие всех компонентов стека. Самый эффективный способ — создать минимальный PHP-скрипт, который установит соединение с MySQL и вернёт информацию о подключении. Этот тест подтвердит, что Apache корректно обрабатывает PHP-файлы, модуль php-mysql загружен правильно, и сервер БД принимает подключения с заданными учётными данными.

Создайте временного пользователя:

sudo mysql -e "CREATE USER 'tester'@'localhost' IDENTIFIED BY 'TestPass';"
sudo mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'tester'@'localhost' WITH GRANT OPTION;"

Создайте тестовый файл в корневой веб-директории одной командой:

sudo sh -c 'echo "<?php $mysqli = new mysqli(\"localhost\", \"tester\", \"TestPass\"); echo $mysqli->host_info; ?>" > /var/www/html/db_test.php'

Назначьте правильные права файлу, чтобы веб-сервер мог его прочитать:

sudo chown www-data:www-data /var/www/html/db_test.php

В процессе выполнения скрипта происходит несколько действий. Сначала создаётся объект подключения к MySQL через функцию mysqli, где параметры указывают на локальный сервер БД, пользователя tester и установленный пароль. Затем выводится результат подключения через свойство host_info — при успешном соединении оно возвращает строку вида localhost via TCP/IP, подтверждая использование сетевого протокола.

Для проверки откройте в браузере http://IP_вашего_сервера/db_test.php. Успешный результат покажет текст «localhost via TCP/IP» без каких-либо ошибок. Если же возникнут проблемы, их диагностика зависит от типа сообщения, например, ошибка «Access denied for user» указывает на неверный пароль, «No such file or directory» свидетельствует о неработающей службе MySQL, а «Class 'mysqli' not found» означает отсутствие модуля php-mysql.

Успешное выполнение теста подтверждает, что:

  • веб-сервер Apache обрабатывает PHP-скрипты;
  • модуль взаимодействия с MySQL активен;
  • сервер БД принимает подключения;
  • права доступа к файлам настроены корректно.

После проверки немедленно удалите тестовый файл, поскольку он содержит пароль root в открытом виде:

sudo rm /var/www/html/db_test.php

Также удалите пользователя:

sudo mysql -e "DROP USER 'tester'@'localhost';"

Для постоянных тестовых сред используйте безопасную альтернативу — консольную проверку без создания файлов:

php -r '$c = new mysqli("localhost", "tester", "TestPass"); echo $c ? "OK" : $c->connect_error;'

Команда выведет OK при успешном подключении или описание ошибки при проблемах.

Полезные дополнения

После базовой настройки LAMP добавьте два инструмента, которые значительно упростят разработку и тестирование веб-приложений. Хотя они не входят в стандартный стек, их установка займёт менее 2 минут и сразу повысит эффективность работы.

Composer. Composer — менеджер зависимостей для PHP. Выполните команду для его установки:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer  

Что это даёт:

  • управление библиотеками через composer.json;
  • автозагрузка классов PSR-4;
  • интеграция с фреймворками (Laravel, Symfony);
  • быстрая установка пакетов:
composer require guzzlehttp/guzzle  

Certbot. Certbot автоматически устанавливает и управляет бесплатными SSL-сертификатами от Let's Encrypt. В тестовой среде SSL-сертификат нужен в нескольких случаях: для тестирования HTTPS-редиректов, проверки смешанного контента (mixed content) и при работе с API, требующими шифрования. Установите необходимые пакеты:

sudo apt install -y certbot python3-certbot-apache  

Генерация сертификата:

sudo certbot --apache -d ваш-домен.com  

Для локальных тестовых сред без доменного имени используйте самоподписанные сертификаты:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ 
-keyout /etc/ssl/private/localhost.key \ 
-out /etc/ssl/certs/localhost.crt  

 После генерации сертификата добавьте в /etc/apache2/sites-available/000-default.conf:

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/localhost.crt
    SSLCertificateKeyFile /etc/ssl/private/localhost.key
    # остальные настройки
</VirtualHost>

Убедитесь, что в apache2.conf или ports.conf есть Listen 443.

Включите модуль SSL:

sudo a2enmod ssl

И перезапустите Apache:

sudo systemctl restart apache2

Заключение

Быстрая установка LAMP-стека на Ubuntu 24.04 — отличный способ оперативно развернуть тестовую среду без лишней настройки. Однако даже в локальных или временных проектах важно учитывать базовые меры безопасности: задать пароль для root-пользователя MySQL, ограничить доступ к файлам и удалить тестовые учётные данные. Добавив Composer и SSL-сертификаты, вы получите полноценную площадку для разработки и отладки.

Такой подход позволяет быстро проверять гипотезы, демонстрировать прототипы и готовить проекты к продакшену, не рискуя основной инфраструктурой.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях