Интеграция PHP с MySQL в процессе настройки веб-сервера

Раздел: Администрирование -> Установка PHP и MySQL

Установка PHP и MySQL: подходы и решения

В рамках администрирования веб-сервера требуется настроить взаимодействие PHP с базой данных MySQL. Ниже представлены несколько способов развертывания данных компонентов, от наиболее полного и гибкого до простых решений для тестирования.

Как организовать установку PHP и MySQL через пакетный менеджер (apt) на Ubuntu Server?

Этот метод предоставляет полный контроль над версиями и конфигурацией. Выполняется установка необходимых пакетов, настройка PHP-FPM и создание виртуального хоста.

sudo apt update
sudo apt install php php-fpm php-mysql mysql-server -y

После установки запускаются службы:

sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl start php7.4-fpm
sudo systemctl enable php7.4-fpm

Для проверки работы создается тестовый скрипт:

<?php
$servername = 'localhost';
$username = 'root';
$password = 'password';
$conn = new mysqli($servername, $username, $password);
if ($conn->connect_error) {
    die('Connection failed: ' . $conn->connect_error);
}
echo 'Connected successfully';
?>

Скрипт размещается в корне веб-сервера, например /var/www/html/info.php. При обращении браузер отображает результат.

Типичная проблема: отсутствие модуля mysqli приводит к ошибке "Call to undefined function mysqli_connect".

Решение: установить пакет php-mysql (уже включен в команду выше) и перезапустить PHP-FPM.

Как установить PHP и MySQL с помощью сборки XAMPP?

XAMPP является кроссплатформенным решением, включающим Apache, PHP, MySQL и другие инструменты. Подходит для локальной разработки и быстрой настройки.

wget https://www.apachefriends.org/xampp-files/8.2.4/xampp-linux-x64-8.2.4-installer.run
chmod +x xampp-linux-x64-8.2.4-installer.run
sudo ./xampp-linux-x64-8.2.4-installer.run

После установки запуск осуществляется командой:

sudo /opt/lampp/lampp start

Тестовый скрипт размещается в директории /opt/lampp/htdocs.

Типичная проблема: конфликт портов, если Apache или MySQL уже запущены.

Решение: остановить существующие службы или изменить порты в конфигурационных файлах XAMPP.

Как развернуть PHP и MySQL с использованием Docker?

Docker позволяет изолировать окружения и быстро поднимать контейнеры с необходимыми компонентами.

docker network create mynet
docker run --name mysql --net mynet -e MYSQL_ROOT_PASSWORD=secret -d mysql:latest
docker run --name php --net mynet -p 80:80 -d php:7.4-apache

Проверка подключения:

docker exec php php -r '$conn = new mysqli("mysql", "root", "secret"); echo $conn->connect_error ? "Fail" : "Success";'
Success

Типичная проблема: контейнеры не видят друг друга без указания сети.

Решение: создание общей сети docker network create mynet и запуск контейнеров с --net mynet.

Углубленные настройки и примеры кода для PHP и MySQL

Дополнительные примеры для углубленного администрирования связки PHP и MySQL.

Пример 1: Настройка пула PHP-FPM

Пример
[www]
user = www-data
group = www-data
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500
Результат: пул запускается с указанными параметрами, можно проверить командой sudo systemctl status php7.4-fpm

Пример 2: Создание пользователя MySQL с правами только на одну базу

Пример
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'securepass';
CREATE DATABASE appdb;
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
Пользователь appuser может подключаться к БД appdb с локального хоста.

Пример 3: Подключение через PDO

Пример
<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=appdb;charset=utf8', 'appuser', 'securepass');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo 'PDO connection ok';
} catch (PDOException $e) {
    echo 'PDO error: ' . $e->getMessage();
}
?>
PDO connection ok

Пример 4: Оптимизация php.ini для работы с большими данными

Пример
memory_limit = 256M
max_execution_time = 300
post_max_size = 64M
upload_max_filesize = 64M
max_input_vars = 3000
После перезапуска PHP-FPM новые лимиты применяются.

Пример 5: Удаленный доступ к MySQL (изменение bind-address)

Пример
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# изменить bind-address = 0.0.0.0
sudo systemctl restart mysql
Теперь MySQL принимает соединения с любого IP, если настроен межсетевой экран.

Пример 6: Решение проблемы 'Can't connect to local MySQL server through socket'

Пример
sudo systemctl status mysql
sudo systemctl start mysql
ls -la /var/run/mysqld/
После запуска сокет появляется, подключение восстанавливается.

Установка PHP MySQL - comments

En
Php mysql установка (php)