opened image

Дополнительный сервер бази даных в HestiaCP + native phpmyadmin

​​​​​​​

В современных веб-инфраструктурах часто возникает необходимость в создании дополнительных серверов баз данных для повышения отказоустойчивости и производительности. 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, чтобы оставаться в курсе последних технологических решений для веб-хостинга.