Приватную сеть – функционал, доступный пользователям VPS – можно использовать для вынесения MySQL на отдельный сервер. В этом случае веб-сервер обрабатывает запросы от клиентов и через приватное подключение обменивается данными с базой.
Это может быть полезно в случае, когда база данных требует значительное количество ресурсов сервера. При переносе MySQL на отдельный сервер появляется возможность выделить для работы базы данных практически все ресурсы, доступные серверу, и не повредить этим работе прочих приложений.
Ниже мы приведём пример разворачивания такого проекта – мы будем устанавливать WordPress с подключением базы данных на другом сервере. Для этого мы используем два сервера с Ubuntu 20.04.
Подготовка серверов
- Перейдите в Панель Управления аккаунтом и создайте два VPS. Подробнее о создании сервера Вы можете прочитать здесь.
- На первый сервер установите Ubuntu 20.04 и LEMP-стек. Далее мы будем обозначать этот сервер как VPS 1, на нём будет располагаться веб-сервер. На второй сервер установите Ubuntu 20.04 – мы будем обозначать его как VPS 2, на нём будет располагаться база данных.
- Подключите VPS 1 и VPS 2 к приватной сети по инструкции “Как подключить VPS к приватной сети”.
Установка MySQL-сервера
- Подключитесь по протоколу SSH к VPS 2, используя его внешний IP. Подробнее этот процесс описан в нашей статье.
- Установите на сервер MySQL. Вы можете сделать это с помощью команд:
sudo apt-get update
sudo apt-get install mysql-server
- Установите root-пароль для MySQL. Для этого используйте клиент MySQL. Подключитесь к серверу:
mysql -u root
- Выполните команду изменения доступа к серверу, где MyNewPass – выбранный Вами пароль:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
- Отправьте команду MySQL-серверу для того, чтобы он переприменил настройки доступа:
mysql> FLUSH PRIVILEGES;
Если Вы разворачиваете проект для проверки возможностей серверов и сети, Вы можете пропустить этот шаг. Однако, если Вы разворачиваете проект для дальнейшей работы на нём, рекомендуем всё же установить root-пароль для обеспечения безопасности данных сайта.
- Перейдите в конфигурационный файл MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
В этом файле найдите раздел [mysqld]
и измените в нём значения bind-address
и mysqlx-bind-address
, указав вместо 127.0.0.1 IP-адрес VPS 2 во внутренней сети. В нашем примере этот раздел выглядит следующим образом:
[mysqld]
#
# * Basic Settings
#
user = mysql
# pid-file = /var/run/mysqld/mysqld.pid
# socket = /var/run/mysqld/mysqld.sock
# port = 3306
# datadir = /var/lib/mysql
# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 10.16.0.3
mysqlx-bind-address = 10.16.0.3
- Сохраните и закройте файл. Перезапустите MySQL-сервер командой:
sudo systemctl restart mysql
- Подключитесь к MySQL. Для этого введите команду:
mysql -u root -p
Если ранее Вы не устанавливали root-пароль для MySQL, то в ответ на запрос пароля потребуется просто нажать Enter. После успешного подключения Вы увидите в терминале приглашение ко вводу данных.
- Создайте БД для проекта. Укажите имя БД. Например, в нашем примере БД будет названа
beget_test
:
CREATE DATABASE beget_test;
- Далее потребуется создать два пользователя для только что созданной БД: для локального и для удалённого подключения. Начнём с создания локального пользователя.
Вам потребуется придумать имя пользователя и пароль. В нашем примере имя пользователя – begetuser
, пароль для него – testpassword
.
CREATE USER 'begetuser'@'localhost' IDENTIFIED BY 'testpassword';
- Присвойте пользователю права на любые изменения в базе данных:
GRANT ALL PRIVILEGES ON beget_test.* TO 'begetuser'@'localhost';
- Создайте пользователя для удалённого подключения. В качестве хоста укажите приватный IP, присвоенный VPS 1.
Для пользователя БД мы указываем тот IP, с которого будет производиться подключение к БД, а не IP хоста, на котором расположена сама БД.
Вы можете использовать те же логин и пароль, которые устанавливали для локального пользователя. В нашем случае имя пользователя – так же begetuser
, IP, с которого будет производиться подключение к БД – 10.16.0.2, пароль для пользователя – testpassword
.
CREATE USER 'begetuser'@'10.16.0.2' IDENTIFIED BY 'testpassword';
- Этому пользователю также нужно выдать права на любые изменения в базе данных:
GRANT ALL PRIVILEGES ON beget_test.* TO 'begetuser'@'10.16.0.2';
- Чтобы изменения вступили в силу, обновите привилегии для пользователей:
FLUSH PRIVILEGES;
Пользователи созданы. Теперь Вы можете выйти из MySQL при помощи команды exit.
Проверка подключения к MySQL-серверу
- Протестируйте локальное подключение к базе:
mysql -u begetuser -p
Если подключение прошло успешно, Вы можете выйти из MySQL при помощи команды exit.
- Проверьте, что удалённое подключение также работает корректно. Перейдите на VPS 1 и подключитесь к БД, находящейся на VPS 2:
mysql -u begetuser -h 10.16.0.3 -p
После ключа – h укажите приватный IP VPS 2.
Если возникнет такая ошибка:
ERROR 1130 (HY000): Host '10.16.0.2' is not allowed to connect to this MySQL server
вероятнее всего, в конфигурации MySQL на стороне VPS 2 не был изменен конфигурационный файл или не перезапущен сервер MySQL.
Установка WordPress
- После предыдущего шага останьтесь на VPS 1 и скачайте установочный пакет WordPress с официального сайта с помощью команды:
curl -O https://wordpress.org/latest.tar.gz
- Распакуйте архив:
tar xzvf latest.tar.gz
- Создайте копию конфигурационного файла и переименуйте её, чтобы WordPress смог её обработать:
cp wordpress/wp-config-sample.php wordpress/wp-config.php
- Откройте конфигурационный файл WordPress и укажите данные для подключения к базе:
nano wordpress/wp-config.php
Что указывать в переменных:
- DB_NAME – имя базы данных;
- DB_USER – имя пользователя MySQL для удалённого подключения;
- DB_PASSWORD – пароль от базы данных;
- DB_HOST – приватный IP VPS 2.
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'beget_test' );
/** MySQL database username */
define( 'DB_USER', 'begetuser' );
/** MySQL database password */
define( 'DB_PASSWORD', 'testpassword' );
/** MySQL hostname */
define( 'DB_HOST', '10.16.0.3' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
Сохраните и закройте файл.
- Скопируйте папку с файлами WordPress в корневую папку nginx:
sudo cp -a wordpress/* /var/www/html
- Измените владельца файлов на www-data, чтобы Nginx смог корректно их обрабатывать:
sudo chown -R www-data:www-data /var/www/html
- Перейдите в файл
/etc/nginx/sites-enabled/default
и добавьте index.php в строку под комментарием:
# Add index.php to the list if you are using PHP
Должно получиться вот так:
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
После этого используйте команду systemctl restart nginx, чтобы перезагрузить Nginx.
- Откройте браузер и перейдите по адресу
http://внешний-ip-vps1/wp-admin/install.php
. Вы можете увидеть внешний IP VPS 1 в Панели управления аккаунтом, выбрав нужный VPS из списка слева.

Откроется страница установщика WordPress.
- Выберите язык установки, нажмите “Продолжить” и заполните данные в появившейся форме. Не забудьте скопировать пароль от панели администратора сайта!

- Нажмите на кнопку “Войти” и введите имя пользователя и пароль, указанные Вами на предыдущем шаге.

- Готово! Проект развёрнут.
Свежие комментарии