Представь, что тебе нужно развернуть полноценный веб-сервер для разработки или продакшена. Ты ищешь решение, которое будет стабильным, производительным и легко настраиваемым. Именно для этого существует связка Apache + PHP + MySQL — классический LAMP-стек, который десятилетиями доказывает свою надежность. В этой статье я, как Senior DevOps, проведу тебя через весь процесс установки и настройки, объясняя каждый шаг так, будто ты сидишь рядом со мной за одним компьютером.
Что такое LAMP и зачем он нужен?
LAMP — это акроним, обозначающий набор программного обеспечения для развертывания веб-приложений:
- Linux — операционная система (в нашем случае Ubuntu)
- Apache — веб-сервер
- MySQL — система управления базами данных
- PHP — язык программирования для бэкенда
Эта комбинация идеально подходит для WordPress, Laravel, Symfony и других PHP-фреймворков.
Подготовка системы Ubuntu
Перед началом установки apache php mysql обновим систему:
sudo apt update
sudo apt upgrade -y
Установка Apache на Ubuntu
Давай начнем с установки веб-сервера Apache:
sudo apt install apache2 -y
После установки проверь статус службы:
sudo systemctl status apache2
Открой браузер и перейди по адресу http://localhost или http://твой-ip-адрес. Должна появиться стандартная страница Apache.
Базовая настройка Apache
Настроим виртуальный хост для твоего проекта:
sudo nano /etc/apache2/sites-available/myproject.conf
Добавь следующую конфигурацию:
<VirtualHost *:80>
ServerName myproject.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/myproject/public
ErrorLog ${APACHE_LOG_DIR}/myproject_error.log
CustomLog ${APACHE_LOG_DIR}/myproject_access.log combined
<Directory /var/www/myproject/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Установка PHP на Ubuntu
Теперь перейдем к установке PHP. В Ubuntu установка apache php выполняется одной командой:
sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y
Проверим версию PHP:
php --version
Создаем тестовый PHP-файл
Создадим простой файл для проверки работы PHP:
sudo mkdir -p /var/www/myproject/public
sudo nano /var/www/myproject/public/index.php
Добавь следующий код:
<?php
phpinfo();
?>
Установка MySQL на Ubuntu
Теперь установим систему управления базами данных. Установка apache mysql php почти завершена:
sudo apt install mysql-server -y
Запустим скрипт безопасности:
sudo mysql_secure_installation
Во время настройки тебе предложат:
- Установить пароль для root
- Удалить анонимных пользователей
- Запретить удаленный root-доступ
- Удалить тестовую базу данных
- Перезагрузить привилегии
Создание базы данных и пользователя
Подключись к MySQL и создай базу данных для проекта:
sudo mysql -u root -p
В консоли MySQL выполни:
CREATE DATABASE myproject_db;
CREATE USER 'myproject_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON myproject_db.* TO 'myproject_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Финальная настройка LAMP-стека
Активируем наш виртуальный хост и перезапустим Apache:
sudo a2ensite myproject.conf
sudo a2dissite 000-default.conf
sudo systemctl restart apache2
Добавим запись в hosts файл для локального доступа:
sudo nano /etc/hosts
Добавь строку:
127.0.0.1 myproject.local
Проверка работы стека
Создадим тестовый скрипт, который проверит подключение к MySQL:
sudo nano /var/www/myproject/public/test_db.php
<?php
$host = 'localhost';
$dbname = 'myproject_db';
$username = 'myproject_user';
$password = 'StrongPassword123!';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
echo "Подключение к MySQL успешно!<br>";
echo "Версия MySQL: " . $pdo->getAttribute(PDO::ATTR_SERVER_VERSION);
} catch (PDOException $e) {
echo "Ошибка подключения: " . $e->getMessage();
}
?>
Теперь открой в браузере http://myproject.local/test_db.php. Если все настроено правильно, ты увидишь сообщение об успешном подключении.
Оптимизация и безопасность
| Компонент | Рекомендация | Команда/Настройка |
|---|---|---|
| Apache | Включить mod_rewrite | sudo a2enmod rewrite |
| PHP | Настроить лимиты | sudo nano /etc/php/8.x/apache2/php.ini |
| MySQL | Резервное копирование | mysqldump -u user db > backup.sql |
| Файрвол | Открыть порты | sudo ufw allow 'Apache Full' |
Настройка PHP для продакшена
Отредактируем php.ini для улучшения безопасности:
; Безопасность
expose_php = Off
display_errors = Off
display_startup_errors = Off
; Производительность
max_execution_time = 30
memory_limit = 256M
post_max_size = 50M
upload_max_filesize = 50M
; Сессии
session.cookie_httponly = 1
session.use_strict_mode = 1
Часто задаваемые вопросы (FAQ)
Как проверить, что Apache работает с PHP?
Создай файл info.php с содержимым <?php phpinfo(); ?> в корневой директории сайта и открой его в браузере. Ты увидишь подробную информацию о конфигурации PHP.
Почему я получаю ошибку 403 Forbidden?
Проверь права доступа к директории с файлами: sudo chown -R www-data:www-data /var/www/myproject и sudo chmod -R 755 /var/www/myproject.
Как изменить порт Apache?
Отредактируй файл /etc/apache2/ports.conf и измени Listen 80 на нужный порт, затем обнови конфигурацию виртуальных хостов.
MySQL не подключается из PHP
Убедись, что установлено расширение php-mysql: sudo apt install php-mysql и перезапусти Apache: sudo systemctl restart apache2.
Полезные команды для управления
Apache
sudo systemctl restart apache2— перезапускsudo systemctl status apache2— статусsudo tail -f /var/log/apache2/error.log— логи ошибок
MySQL
sudo systemctl restart mysql— перезапускmysql -u user -p— подключениеSHOW DATABASES;— список баз
Заключение
Поздравляю! Ты только что завершил полную установку сервера apache mysql php на Ubuntu. Теперь у тебя есть полностью функциональный LAMP-стек, готовый к развертыванию веб-приложений. Помни, что это базовая настройка — для продакшн-среды необходимо дополнительно настроить безопасность, мониторинг и бэкапы.
Ключевые моменты, которые мы прошли:
- Установка и настройка Apache 2
- Интеграция PHP с Apache
- Установка и защита MySQL
- Создание виртуальных хостов
- Базовая оптимизация для безопасности и производительности
Теперь ты можешь приступать к развертыванию своего PHP-приложения. Удачи в разработке!