Представь, что это твой первый развёрнутый веб-сервер. Ты только что получил VPS с Ubuntu и хочешь запустить на нём сайт. LAMP (Linux, Apache, MySQL, PHP) — классический стек для этого. Давай разберём, как установить его правильно, как настоящий DevOps инженер.
Что такое LAMP и зачем он нужен
LAMP — это акроним, обозначающий набор программного обеспечения для развёртывания динамических веб-сайтов и приложений:
- Linux — операционная система (у нас Ubuntu)
- Apache — веб-сервер, обрабатывает HTTP-запросы
- MySQL/MariaDB — система управления базами данных
- PHP — язык программирования для бэкенда
Подготовка системы перед установкой LAMP
Первым делом обновим пакетный менеджер и установленные пакеты:
sudo apt update
sudo apt upgrade -y
sudo apt upgrade без флага -y.
Пошаговая установка Apache на Ubuntu
Apache — один из самых популярных веб-серверов в мире. Установим его:
sudo apt install apache2 -y
После установки проверь статус службы:
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. Установим его:
sudo apt install mariadb-server mariadb-client -y
После установки запустим скрипт безопасности:
sudo mysql_secure_installation
Скрипт задаст несколько вопросов. Рекомендую:
- Установить пароль для root (запомни его!)
- Удалить анонимных пользователей — Y
- Запретить удалённый доступ root — Y
- Удалить тестовую базу — Y
- Перезагрузить привилегии — Y
Проверка установки MySQL
sudo systemctl status mariadb
sudo mysql -u root -p -e "SHOW DATABASES;"
Установка PHP и необходимых модулей
PHP — сердце нашего LAMP стека. Установим PHP 8.x (актуальную версию):
sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
Давай проверим, что PHP работает с Apache. Создадим тестовый файл:
echo "" | sudo tee /var/www/html/info.php
Теперь открой в браузере http://IP_сервера/info.php. Увидишь подробную информацию о PHP — значит, связка Apache+PHP работает.
sudo rm /var/www/html/info.php. Он раскрывает информацию о системе.
Настройка виртуального хоста Apache
Для хостинга нескольких сайтов на одном сервере используем виртуальные хосты. Создадим конфиг для нашего сайта:
sudo nano /etc/apache2/sites-available/mysite.conf
Добавь следующую конфигурацию (замени example.com на свой домен):
<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>
Создадим директорию для сайта и включим конфиг:
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:
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
sudo ufw allow OpenSSH
sudo ufw allow 'Apache Full'
sudo ufw enable
sudo ufw status verbose
Настройка PHP для продакшена
sudo nano /etc/php/8.x/apache2/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 не запускается
Решение: Проверь синтаксис конфигов и логи:
sudo apache2ctl configtest
sudo journalctl -xe | grep apache
2. Ошибка 403 Forbidden
Решение: Проверь права доступа к директории:
sudo chown -R www-data:www-data /var/www/example.com
sudo chmod -R 755 /var/www/example.com
3. PHP файлы скачиваются, а не выполняются
Решение: Перезагрузите модуль PHP в Apache:
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. Удачи в разработке!