В современных веб-инфраструктурах часто возникает необходимость в создании дополнительных серверов баз данных для повышения отказоустойчивости и производительности. HestiaCP, популярная панель управления веб-хостингом с открытым исходным кодом, предоставляет возможность легко интегрировать дополнительные серверы баз данных и управлять ими.
В этой статье мы рассмотрим процесс добавления дополнительного сервера базы данных MySQL в HestiaCP, используя Docker контейнер, и настраивание доступа к нему через phpMyAdmin.
Для этого мы будем использовать Docker для развертывания контейнера с MySQL, настроим его параметры и интегрируем новый сервер базы данных в HestiaCP. После этого мы добавим конфигурационные изменения в phpMyAdmin, чтобы обеспечить удобный доступ и управление базами данных на новом сервере. Подробные инструкции и скриншоты помогут вам шаг за шагом выполнить все необходимые действия, даже если у вас минимальный опыт работы с Docker и HestiaCP.
Прежде чем начать, убедитесь, что у вас установлен Docker и HestiaCP на вашем сервере. Следуя приведенным ниже инструкциям, вы сможете быстро и эффективно добавить дополнительный сервер базы данных и оптимизировать работу вашего веб-приложения.
Установка Docker и Docker Compose
Перед тем как начать работу с новой базой в контейнере, нам нужно установить Docker и Docker Compose. Следуйте приведенным ниже инструкциям:
Устанавливаем необходимые зависимости:
apt-get install ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
Добавляем репозиторий Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновляем репозитории и устанавливаем Docker:
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker
Устанавливаем Docker Compose:
curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Запускаем docker контейнер с базой данных mysql:5.7.44:
docker run --name mysql-5.7 -v /var/lib/mysql-5.7:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=MySQL_root_password -p 3310:3306 -d mysql:5.7.44-oraclelinux7
Здесь создается сервер базы данных с папкой данных /var/lib/mysql-5.7 , пользовательским паролем root - MySQL_root_password , перенаправление порта - будет прослушивать порт 3310. mysql:5.7.44-oraclelinux7 - это один из образов, которые можно найти на docker hub .
Так же можно использовать Docker Compose.
Создадим файл docker-compose.yml:
vim /root/docker_mysql-5.7/docker-compose.yml
В него добавим следующий код:
version: '3.8'
services:
mysql-5.7:
image: mysql:5.7.44-oraclelinux7
container_name: mysql-5.7
ports:
- "3310:3306"
environment:
MYSQL_ROOT_PASSWORD: 6mMhekkK7z0qhXxI
volumes:
- /var/lib/mysql-5.7:/var/lib/mysql
restart: always
Добавляем доступ к базе данных из панели HestiaCP.
v-add-database-host mysql 127.0.0.1 root MySQL_root_password '' '' '' 3310
Создается сервер баз данных с хостом 127.0.0.1
На скриншоте показано, как создать базу данных в палитре HestiaCP на новом сервере.
В файл /etc/phpmyadmin/conf.d/01-localhost.php добавляем:
$i++;
// Второй сервер: новый MySQL сервер на порту 3310
$cfg['Servers'][$i]['host'] = '172.20.0.1';
$cfg['Servers'][$i]['port'] = '3310';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
// Настройки завершения сеанса
$cfg['LoginCookieValidity'] = 1440;
$cfg['LoginCookieStore'] = 0;
$cfg['ShowPhpInfo'] = true;
// Дополнительные настройки интерфейса
$cfg['ShowChgPassword'] = true;
$cfg['ShowDbStructureCharset'] = true;
$cfg['ShowDbStructureCreation'] = true;
$cfg['ShowDbStructureLastUpdate'] = true;
$cfg['ShowDbStructureLastCheck'] = true;
// Настройки памяти и времени выполнения
$cfg['MemoryLimit'] = '512M';
$cfg['ExecTimeLimit'] = 300;
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';
где $cfg['Servers'][$i]['host'] = '172.20.0.1'; это IP на котором приподнят контейнер, или можно использовать 127.0.0.1
В зависимости от того, какой IP будете использовать, замените IP в этой команде:
v-add-database-host mysql 172.20.0.1 root MySQL_root_password '' '' '' 3310
Заключение
Интеграция дополнительного сервера базы данных в HestiaCP с помощью Docker и phpMyAdmin значительно повышает надежность и производительность вашей веб-инфраструктуры. В ходе этой статьи мы пошагово рассмотрели процесс создания Docker-контейнера с MySQL и его интеграцию в HestiaCP, а также настройку phpMyAdmin для удобного доступа к базам данных на новом сервере.
Используя предоставленные инструкции и скриншоты, даже начинающие пользователи смогут успешно выполнить необходимые настройки, минимизировав возможные ошибки и ускорив процесс внедрения. Этот подход не только упрощает управление базами данных, но и позволяет масштабировать вашу инфраструктуру в соответствии с растущими потребностями веб-приложений.
Благодаря HestiaCP и Docker вы получаете гибкость и контроль над вашими базами данных, что способствует более эффективному использованию ресурсов и повышению общей отказоустойчивости системы. Не забывайте регулярно обновлять ваши инструменты и следить за новыми возможностями HestiaCP, чтобы оставаться в курсе последних технологических решений для веб-хостинга.