Что такое LAMP Stack и как установить его на Ubuntu 20.04+

LAMP Stack — это одна из самых популярных и проверенных временем связок для размещения и разработки веб-сайтов и веб-приложений.
Аббревиатура LAMP расшифровывается как:

  • Linux — операционная система
  • Apache — веб-сервер
  • MySQL — система управления базами данных
  • PHP — серверный язык программирования

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

В этой статье я покажу, как установить и проверить LAMP Stack на Ubuntu 20.04 LTS.


Важные замечания перед началом

  • Инструкция рассчитана на пользователя без прав root
  • Все команды, требующие повышенных привилегий, выполняются через sudo
  • Все конфигурационные файлы необходимо редактировать с правами администратора
  • Везде, где используется example.com, замените его на ваш домен или IP-адрес сервера

Подготовка сервера

Перед установкой LAMP Stack рекомендуется:

  1. Создать сервер (VPS / Cloud Instance)
  2. Обновить систему
  3. Настроить:
  • часовой пояс
  • hostname
  • обычного пользователя
  • SSH-доступ

Если у вас есть домен — заранее пропишите DNS-запись, указывающую на IP сервера.
Если домена нет — можно использовать IP-адрес.


Установка LAMP Stack

Установка через Tasksel (быстро и удобно)

tasksel — это утилита, позволяющая установить сразу весь LAMP Stack одним шагом.

Установка Tasksel (если не установлен):

sudo apt install tasksel

Установка LAMP Stack:

sudo tasksel install lamp-server

Этот способ подойдёт, если нужен быстрый старт без ручной настройки.


Установка пакетов вручную

Если вы предпочитаете полный контроль, можно установить компоненты отдельно.

Apache 2.4:

sudo apt install apache2

MySQL Server:

sudo apt install mysql-server

PHP и необходимые модули:

sudo apt install php libapache2-mod-php php-mysql

Дополнительные модули (по желанию):

sudo apt install php-curl php-json php-cgi

Настройка Apache

Включение KeepAlive

Параметр KeepAlive позволяет Apache повторно использовать соединения, уменьшая задержки и нагрузку.

Откройте файл:

sudo nano /etc/apache2/apache2.conf

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

KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5

Это оптимальные значения для небольших и средних серверов.


Настройка MPM Prefork

Для PHP через mod_php рекомендуется использовать prefork.

Файл конфигурации:

sudo nano /etc/apache2/mods-available/mpm_prefork.conf

Рекомендуемые значения для сервера с 2 ГБ RAM:

<IfModule mpm_prefork_module>
    StartServers            4
    MinSpareServers         3
    MaxSpareServers         40
    MaxRequestWorkers       200
    MaxConnectionsPerChild  10000
</IfModule>

Отключаем event и включаем prefork:

sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
sudo systemctl restart apache2

Настройка firewall (UFW)

Проверьте профиль Apache:

sudo ufw app info "Apache Full"

Разрешите HTTP и HTTPS:

sudo ufw allow in "Apache Full"

Настройка Virtual Host в Apache

Создаём конфигурацию сайта:

sudo cp /etc/apache2/sites-available/000-default.conf \
/etc/apache2/sites-available/example.com.conf

Редактируем файл:

sudo nano /etc/apache2/sites-available/example.com.conf

Пример конфигурации:

<Directory /var/www/html/example.com/public_html>
    Require all granted
</Directory>

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/example.com/public_html

    ErrorLog /var/www/html/example.com/logs/error.log
    CustomLog /var/www/html/example.com/logs/access.log combined
</VirtualHost>

Создаём каталоги:

sudo mkdir -p /var/www/html/example.com/{public_html,logs}

Назначаем права:

sudo chown -R www-data:www-data /var/www/html/example.com/public_html
sudo chmod -R 755 /var/www/html/example.com/public_html

Активируем сайт и отключаем дефолтный хост:

sudo a2ensite example.com
sudo a2dissite 000-default.conf
sudo systemctl reload apache2

Настройка MySQL

Вход в консоль MySQL:

sudo mysql -u root

Создание базы данных и пользователя:

CREATE DATABASE webdata;
CREATE USER 'webuser' IDENTIFIED BY 'password';
GRANT ALL ON webdata.* TO 'webuser';
quit;

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

sudo mysql_secure_installation

Рекомендуется ответить Yes на все вопросы.


Настройка PHP

Откройте файл конфигурации:

sudo nano /etc/php/7.4/apache2/php.ini

Рекомендуемые параметры:

error_reporting = E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR
max_input_time = 30
error_log = /var/log/php/error.log

Создайте директорию логов:

sudo mkdir /var/log/php
sudo chown www-data /var/log/php
sudo systemctl restart apache2

Для WordPress дополнительно:

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc

Проверка работы LAMP Stack

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

nano /var/www/html/example.com/public_html/phptest.php

Вставьте код:

<?php
$conn = mysqli_connect("localhost", "webuser", "password");

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

echo "Connected successfully";
?>

Откройте в браузере:

http://example.com/phptest.php

Если всё работает — вы увидите сообщение Connected successfully.

После проверки удалите файл:

sudo rm /var/www/html/example.com/public_html/phptest.php

Устранение проблем

  • Сайт не открывается → проверьте статус Apache
  • Загружается стандартная страница → проверьте DocumentRoot
  • Видна структура каталогов → создайте index.html или index.php

Итог

Поздравляю 🎉
Вы успешно установили и настроили LAMP Stack на Ubuntu 20.04 LTS.

Теперь сервер готов для размещения:

  • сайтов
  • WordPress
  • веб-приложений
  • API и сервисов