
Установить Apache, MySQL и PHP на Ubuntu - задача на 20-30 минут при наличии чистого сервера. В этой статье пройдём весь путь: от установки пакетов до рабочего VirtualHost с SSL-сертификатом от Let's Encrypt.
Что понадобится
Сервер или VPS с Ubuntu 22.04 LTS или 24.04 LTS
Минимум 1 GB RAM, 10 GB диска
Root-доступ или пользователь с sudo
Зарегистрированный домен, если планируете SSL
Обновление системы
sudo apt update && sudo apt upgrade -y
sudo reboot
После перезагрузки подключитесь снова. Проверьте версию ядра:
uname -r
# 6.8.0-35-generic

Установка Apache
sudo apt install -y apache2
sudo systemctl enable apache2
sudo systemctl start apache2
Проверьте статус:
sudo systemctl status apache2
Откройте порты в файрволе:
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status
Apache 2.4 теперь отвечает на порту 80. Перейдите по IP-адресу сервера в браузере - появится страница-заглушка «Apache2 Ubuntu Default Page».
Полезные команды управления Apache:
sudo apache2ctl configtest # проверка синтаксиса конфигов
sudo systemctl reload apache2 # перезагрузка без прерывания
sudo apache2ctl -M # список загруженных модулейУстановка MySQL 8
sudo apt install -y mysql-server
sudo systemctl enable mysql
Запустите скрипт начальной безопасности:
sudo mysql_secure_installation
Скрипт предложит:
Настроить VALIDATE PASSWORD COMPONENT - выберите уровень 1 (MEDIUM) для продакшена
Установить пароль root (или пропустить, если работаете через Unix-сокет)
Удалить анонимных пользователей - Yes
Запретить удалённый root-логин - Yes
Удалить тестовую базу test - Yes
Перезагрузить таблицы привилегий - Yes
mysql --version
# mysql Ver 8.0.37-0ubuntu0.24.04.1

Установка PHP 8.3
Для Ubuntu 24.04 PHP 8.3 доступен в стандартных репозиториях. Для Ubuntu 22.04 добавьте PPA:
# Только для Ubuntu 22.04:
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
Установите PHP и нужные модули:
sudo apt install -y php8.3 libapache2-mod-php8.3 php8.3-mysql \
php8.3-curl php8.3-mbstring php8.3-xml php8.3-zip php8.3-gd \
php8.3-intl php8.3-bcmath
libapache2-mod-php8.3 - это mod_php, который интегрирует PHP прямо в процесс Apache. В отличие от LEMP, где PHP-FPM работает отдельно, здесь PHP выполняется внутри Apache.
Перезапустите Apache и проверьте PHP:
sudo systemctl restart apache2
php --version
# PHP 8.3.6 (cli)Тестовая страница phpinfo
echo "<?php phpinfo();" | sudo tee /var/www/html/info.php
Откройте http://YOUR_IP/info.php в браузере. Убедитесь, что в таблице отображается PHP Version 8.3.x и модуль mysqli или pdo_mysql активен. После проверки удалите файл:
sudo rm /var/www/html/info.phpНастройка VirtualHost
Создайте директорию для сайта:
sudo mkdir -p /var/www/example.com/public
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com
Создайте тестовый файл:
cat << 'EOF' | sudo tee /var/www/example.com/public/index.php
<?php
echo "<h1>LAMP работает!</h1>";
echo "<p>PHP " . PHP_VERSION . "</p>";
EOF
Создайте конфиг VirtualHost:
sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
<Directory /var/www/example.com/public>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Активируйте хост и модуль rewrite:
sudo a2ensite example.com.conf
sudo a2enmod rewrite
sudo a2dissite 000-default.conf
sudo apache2ctl configtest
sudo systemctl reload apache2Создание базы данных
sudo mysql -u root
CREATE DATABASE example_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'SecurePass_2024!';
GRANT ALL PRIVILEGES ON example_db.* TO 'example_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Проверьте подключение из PHP. Создайте файл /var/www/example.com/public/dbtest.php:
<?php
$conn = new PDO('mysql:host=localhost;dbname=example_db', 'example_user', 'SecurePass_2024!');
echo "Подключение к MySQL: " . $conn->getAttribute(PDO::ATTR_SERVER_VERSION);
После проверки удалите файл.
SSL через Certbot
Установите Certbot с плагином Apache:
sudo apt install -y certbot python3-certbot-apache
Получите сертификат:
sudo certbot --apache -d example.com -d www.example.com
Certbot автоматически:
Создаст сертификат Let's Encrypt (действителен 90 дней)
Добавит конфиг для порта 443
Настроит редирект с HTTP на HTTPS
Проверьте автопродление:
sudo certbot renew --dry-run
Если команда завершилась без ошибок, cron-задача (или systemd-таймер) продлит сертификат раньше истечения. Certbot сам добавляет таймер /etc/cron.d/certbot при установке.

Структура файлов после настройки
/var/www/example.com/public/ - корень сайта
/etc/apache2/sites-available/ - конфиги виртуальных хостов
/etc/apache2/sites-enabled/ - симлинки на активные хосты
/etc/letsencrypt/live/ - сертификаты Let's Encrypt
/var/log/apache2/ - логи доступа и ошибокИтог
Рабочий LAMP-стек на Ubuntu включает Apache 2.4, MySQL 8.0, PHP 8.3 с mod_php и SSL-сертификат от Let's Encrypt. Стек подходит для любых PHP-приложений, особенно тех, которые активно используют .htaccess - WordPress, Laravel, Drupal. Для высоконагруженных сайтов стоит рассмотреть LEMP с PHP-FPM: Nginx потребляет меньше памяти при большом числе соединений.