Установка LAMP на Ubuntu: Apache, MySQL, PHP за 10 минут | AdminWiki

Полное руководство по установке LAMP на Ubuntu 24.04/22.04

18 декабря 2025 7 мин. чтения #apache #devops #lamp #linux #mysql #php #ubuntu #веб-сервер

Представь, что это твой первый развёрнутый веб-сервер. Ты только что получил VPS с Ubuntu и хочешь запустить на нём сайт. LAMP (Linux, Apache, MySQL, PHP) — классический стек для этого. Давай разберём, как установить его правильно, как настоящий DevOps инженер.

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

LAMP — это акроним, обозначающий набор программного обеспечения для развёртывания динамических веб-сайтов и приложений:

  • Linux — операционная система (у нас Ubuntu)
  • Apache — веб-сервер, обрабатывает HTTP-запросы
  • MySQL/MariaDB — система управления базами данных
  • PHP — язык программирования для бэкенда
Важно: В современных дистрибутивах Ubuntu вместо MySQL часто используется MariaDB — форк MySQL с открытой разработкой. Они полностью совместимы на уровне команд и API.

Подготовка системы перед установкой LAMP

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

bash
sudo apt update
sudo apt upgrade -y
Внимание: Если работаешь на продакшн-сервере, перед обновлением проверь список изменяемых пакетов командой sudo apt upgrade без флага -y.

Пошаговая установка Apache на Ubuntu

Apache — один из самых популярных веб-серверов в мире. Установим его:

bash
sudo apt install apache2 -y

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

bash
sudo systemctl status apache2

Должен увидеть active (running). Теперь открой браузер и перейди по IP-адресу сервера. Увидишь стандартную страницу Apache — значит, всё работает.

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

Команда Описание
sudo systemctl start apache2 Запустить Apache
sudo systemctl stop apache2 Остановить Apache
sudo systemctl restart apache2 Перезапустить Apache
sudo systemctl reload apache2 Перезагрузить конфигурацию
sudo systemctl enable apache2 Автозагрузка при старте системы

Установка MySQL/MariaDB для базы данных

В Ubuntu 22.04 и новее MySQL заменён на MariaDB. Установим его:

bash
sudo apt install mariadb-server mariadb-client -y

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

bash
sudo mysql_secure_installation

Скрипт задаст несколько вопросов. Рекомендую:

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

Проверка установки MySQL

bash
sudo systemctl status mariadb
sudo mysql -u root -p -e "SHOW DATABASES;"

Установка PHP и необходимых модулей

PHP — сердце нашего LAMP стека. Установим PHP 8.x (актуальную версию):

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

Давай проверим, что PHP работает с Apache. Создадим тестовый файл:

bash
echo "" | sudo tee /var/www/html/info.php

Теперь открой в браузере http://IP_сервера/info.php. Увидишь подробную информацию о PHP — значит, связка Apache+PHP работает.

Безопасность: После проверки обязательно удали файл info.php: sudo rm /var/www/html/info.php. Он раскрывает информацию о системе.

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

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

bash
sudo nano /etc/apache2/sites-available/mysite.conf

Добавь следующую конфигурацию (замени example.com на свой домен):

apache config
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    
    <Directory /var/www/example.com/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Создадим директорию для сайта и включим конфиг:

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

sudo a2ensite mysite.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2

Тестирование полного LAMP стека

Создадим простой PHP-скрипт, который проверит подключение к MySQL:

bash
cat > /var/www/example.com/public_html/test.php << 'EOF'
connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully to MySQL!
"; // Создаём тестовую базу $sql = "CREATE DATABASE IF NOT EXISTS testdb"; if ($conn->query($sql) === TRUE) { echo "Database created successfully"; } else { echo "Error creating database: " . $conn->error; } $conn->close(); ?> EOF

Открой http://IP_сервера/test.php. Если видишь "Connected successfully to MySQL!", значит, весь LAMP стек работает корректно.

Оптимизация и безопасность LAMP

Настройка брандмауэра UFW

bash
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status verbose

Настройка PHP для продакшена

bash
sudo nano /etc/php/8.x/apache2/php.ini

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

php.ini
max_execution_time = 30
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
display_errors = Off
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

Частые проблемы и их решение

1. Apache не запускается

Решение: Проверь синтаксис конфигов и логи:

bash
sudo apache2ctl configtest
sudo journalctl -xe | grep apache

2. Ошибка 403 Forbidden

Решение: Проверь права доступа к директории:

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

3. PHP файлы скачиваются, а не выполняются

Решение: Перезагрузите модуль PHP в Apache:

bash
sudo a2enmod php8.x
sudo systemctl restart apache2

Альтернативы LAMP: LEMP и Docker

Стек Описание Когда использовать
LAMP Apache + MySQL + PHP Классические CMS (WordPress, Joomla), legacy проекты
LEMP Nginx + MySQL + PHP Высоконагруженные проекты, современные фреймворки
Docker Контейнеризация всех компонентов Микросервисы, разработка, продакшн с оркестрацией

FAQ: Ответы на частые вопросы

Какой пароль root для MySQL после установки?

При установке через mysql_secure_installation ты задаёшь пароль самостоятельно. Если забыл, можно сбросить: sudo mysql -u root (если аутентификация через socket) или sudo systemctl stop mariadb && sudo mysqld_safe --skip-grant-tables & для сброса.

Как изменить версию PHP?

Установи нужную версию: sudo apt install php8.1 php8.1-mysql, затем переключите версию для Apache: sudo a2dismod php8.0 && sudo a2enmod php8.1 && sudo systemctl restart apache2.

Как настроить SSL/HTTPS?

Установи Certbot: sudo apt install certbot python3-certbot-apache, затем получи сертификат: sudo certbot --apache -d example.com -d www.example.com.

Как перенести существующий сайт на этот сервер?

1. Скопируй файлы в /var/www/example.com/public_html
2. Импортируй базу данных: mysql -u root -p database_name < backup.sql
3. Настрой права доступа и конфигурацию виртуального хоста.

Заключение

Ты успешно установил и настроил LAMP стек на Ubuntu. Теперь у тебя есть полноценный веб-сервер, готовый к работе. Помни:

  • Регулярно обновляй систему: sudo apt update && sudo apt upgrade
  • Настрой мониторинг и бэкапы
  • Для продакшена используй HTTPS и настройте брандмауэр
  • Рассмотри переход на LEMP (Nginx) для высоких нагрузок

Следующий шаг — установка панели управления (например, phpMyAdmin для MySQL) или развёртывание CMS вроде WordPress. Удачи в разработке!

Поделиться:
Сохранить гайд? В закладки браузера