- Home »

Как установить стек 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_rewritesudo 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-стек может служить основой для высоконагруженных проектов и масштабироваться под растущие потребности вашего бизнеса.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.