Home » Как установить стек LAMP (Linux Apache MySQL PHP) на Ubuntu 24
Как установить стек LAMP (Linux Apache MySQL PHP) на Ubuntu 24

Как установить стек LAMP (Linux Apache MySQL PHP) на Ubuntu 24

Разворачивание веб-сервера с нуля — это тот навык, который должен быть в арсенале каждого сисадмина или девелопера. LAMP-стек остается одним из самых популярных решений для хостинга динамических сайтов, и не зря — он надежен, проверен временем и дает полный контроль над окружением. В этой статье мы пошагово разберем установку классического LAMP-стека на свежую Ubuntu 24.04 LTS, от первичной настройки до тестирования работы PHP-скриптов.

Если вы планируете запустить собственный сайт или нуждаетесь в тестовом окружении для разработки, вам понадобится сервер. Можете взять VPS или выделенный сервер — выбор зависит от ваших потребностей и бюджета.

Что такое LAMP и зачем он нужен

LAMP — это аббревиатура, которая расшифровывается как Linux + Apache + MySQL + PHP. Каждый компонент выполняет свою роль:

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

Этот стек работает примерно так: Apache получает запрос от браузера, передает его PHP-интерпретатору, который может обращаться к MySQL для получения данных, а затем возвращает готовую HTML-страницу обратно через Apache.

Подготовка системы

Для начала убедимся, что система обновлена до последней версии и установим необходимые пакеты:

sudo apt update
sudo apt upgrade -y
sudo apt install curl wget gnupg2 software-properties-common -y

Рекомендую также настроить файрвол сразу, чтобы потом не забыть:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable

Установка Apache

Apache в Ubuntu 24.04 устанавливается одной командой:

sudo apt install apache2 -y

Проверяем статус и запускаем автостарт:

sudo systemctl status apache2
sudo systemctl enable apache2
sudo systemctl start apache2

Теперь можно проверить работу, открыв в браузере IP-адрес вашего сервера. Должна появиться стандартная страница Apache “It works!”.

Полезные команды для управления Apache

  • sudo systemctl reload apache2 — перезагрузка конфигурации без остановки
  • sudo apache2ctl configtest — проверка синтаксиса конфигурации
  • sudo a2enmod rewrite — включение модуля mod_rewrite
  • sudo a2ensite sitename — активация виртуального хоста

Установка MySQL

MySQL устанавливается из стандартного репозитория:

sudo apt install mysql-server -y

После установки обязательно запустите скрипт безопасности:

sudo mysql_secure_installation

Скрипт задаст несколько вопросов. Мои рекомендации:

  • Установить пароль для root — да
  • Удалить анонимных пользователей — да
  • Запретить удаленный доступ для root — да
  • Удалить тестовую базу данных — да
  • Перезагрузить таблицы привилегий — да

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

Подключаемся к MySQL и создаем тестовую базу:

sudo mysql -u root -p

CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Установка PHP

Ubuntu 24.04 по умолчанию поставляется с PHP 8.3, что отлично:

sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-zip -y

Проверим версию PHP:

php -v

Настройка PHP

Основной файл конфигурации находится в /etc/php/8.3/apache2/php.ini. Рекомендую изменить несколько параметров:

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

Найдите и измените следующие строки:

upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 300
memory_limit = 256M

После изменений перезапустите Apache:

sudo systemctl restart apache2

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

Создадим простой PHP-скрипт для проверки:

sudo nano /var/www/html/info.php

Вставьте следующий код:

<?php
phpinfo();
?>

Теперь создадим скрипт для проверки подключения к MySQL:

sudo nano /var/www/html/dbtest.php
<?php
$servername = "localhost";
$username = "testuser";
$password = "secure_password";
$dbname = "testdb";

try {
    $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Подключение к базе данных успешно!";
} catch(PDOException $e) {
    echo "Ошибка подключения: " . $e->getMessage();
}
?>

Откройте в браузере http://your-server-ip/info.php и http://your-server-ip/dbtest.php для проверки.

Сравнение с альтернативными решениями

Стек Преимущества Недостатки Лучший выбор для
LAMP Стабильность, большое сообщество, совместимость Не самая высокая производительность Традиционных веб-приложений
LEMP (Nginx) Высокая производительность, меньше потребления RAM Сложнее в настройке Высоконагруженных проектов
MEAN (MongoDB, Express, Angular, Node.js) Единый язык программирования, современные технологии Меньше готовых решений Современных SPA-приложений

Настройка виртуальных хостов

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

sudo mkdir -p /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com

Создайте конфигурационный файл виртуального хоста:

sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
    
    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Активируйте хост и перезапустите Apache:

sudo a2ensite example.com.conf
sudo systemctl reload apache2

Безопасность и оптимизация

Несколько важных шагов для повышения безопасности:

  • Скройте информацию о версии Apache: добавьте ServerTokens Prod в /etc/apache2/conf-available/security.conf
  • Отключите директорию .git от веб-доступа
  • Настройте регулярные бекапы базы данных
  • Используйте fail2ban для защиты от брутфорса

Для оптимизации производительности:

sudo a2enmod deflate
sudo a2enmod expires
sudo a2enmod headers
sudo systemctl restart apache2

Автоматизация с помощью скрипта

Можно автоматизировать весь процесс установки одним скриптом:

#!/bin/bash
# LAMP Auto-installer for Ubuntu 24.04

echo "Обновление системы..."
sudo apt update && sudo apt upgrade -y

echo "Установка Apache..."
sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2

echo "Установка MySQL..."
sudo apt install mysql-server -y

echo "Установка PHP..."
sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-zip -y

echo "Настройка файрвола..."
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable

echo "Перезапуск Apache..."
sudo systemctl restart apache2

echo "LAMP-стек установлен! Запустите mysql_secure_installation для настройки MySQL."

Интересные факты и возможности

Знали ли вы, что:

  • Apache может обрабатывать до 1000 одновременных соединений из коробки
  • MySQL поддерживает партицирование таблиц для улучшения производительности
  • PHP 8.3 работает до 25% быстрее предыдущих версий благодаря JIT-компиляции
  • Можно интегрировать LAMP с Docker для создания изолированных сред разработки

LAMP отлично сочетается с системами мониторинга вроде Zabbix или Prometheus, системами управления конфигурацией типа Ansible, и может быть легко масштабирован с помощью балансировщиков нагрузки.

Полезные ссылки

Заключение

LAMP-стек остается отличным выбором для большинства веб-проектов. Он надежен, хорошо документирован и имеет огромное сообщество. Ubuntu 24.04 LTS предоставляет стабильную основу с актуальными версиями всех компонентов.

Используйте LAMP для:

  • Корпоративных веб-сайтов
  • CMS-систем (WordPress, Drupal)
  • Интернет-магазинов
  • Систем управления контентом
  • API-сервисов

Не забывайте регулярно обновлять компоненты, следить за безопасностью и делать бекапы. С правильной настройкой LAMP-стек может служить основой для высоконагруженных проектов и масштабироваться под растущие потребности вашего бизнеса.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked