Перенос wordpress

Заметка для переноса сайта на WordPress на другой сервер. В целом схема подходит для чего угодно. Описание будет для MySQL, если PostgreSQL, MariaDB или SQLite, то там синтаксис отличается, но суть одна.

Делаем дамп нужной базы данных:

mysqldump -u [пользователь] -p [имя_базы] > backup.sql

Устанавливаем MySQL на нужный сервер:

apt install mysql-server

Далее задаем root пароль и прочие параметры:

sudo mysql_secure_installation

Запускаем и проверяем статус:

systemctl start mysql
systemctl status mysql

Входим и создаем новую базу данных:

sudo mysql -u root -p
mysql -u root -p -e "CREATE DATABASE new_db_name;"
mysql -u root -p -e "CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'new_password';"
mysql -u root -p -e "GRANT ALL PRIVILEGES ON new_db_name.* TO 'new_user'@'localhost';"
mysql -u root -p -e "FLUSH PRIVILEGES;"
EXIT;

Веб-сервер у нас nginx. Устанавливаем:

apt install nginx -y

Создаем папку и устанавливаем права:

mkdir -p /var/www/wordpressfiles
chown -R www-data:www-data /var/www/wordpressfiles
chmod -R 755 /var/www/wordpressfiles

После создания конфига активируем и проверяем:

ln -s /etc/nginx/sites-available/wordpressfiles /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Импортируем бекап базы данных:

mysql -u new_user -p new_db_name < /path/base.sql

Если возникнет ошибка, то дадим права:

chown mysql:mysql /path/base.sql
chmod 644 /path/base.sql

Проверим:

mysql -u new_user -p
USE new_db_name;
SHOW TABLES;

Теперь настроим wp-config.php для доступа к базе, если данные изменились:

define('DB_NAME', 'new_db_name');
define('DB_USER', 'new_user');
define('DB_PASSWORD', 'new_password');
define('DB_HOST', 'localhost'); // или IP сервера с базой

Если нужно поменять домен сайта, то необходимо внести изменения в таблицу MySQL:

mysql -u new_user -p new_db_name -e "UPDATE wp_options SET option_value='http://newsite.com' WHERE option_name='siteurl' OR option_name='home';"

В целом всё. Если коротко, упрощенно.