Статьи

Перенос базы данных WordPress на новый сервер

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

Основные среды, которые вы найдете в любом проекте сайта:

  • Сервер разработки — разработчики локальной машины для разработки сайта.
  • Сервер тестирования — После завершения разработки именно в этом месте проводится все тестирование.
  • Сервер тестирования принятия пользователя — где клиент будет просматривать изменения на веб-сайте.
  • Производственный сервер — живой сайт.

Две среды, которые вам всегда понадобятся, — это среда разработки и производственная среда. Обычно эти две среды будут доступны только в том случае, если клиенту не нужно просматривать сайт до его запуска. Это означает, что как только разработчик закончит работу над сайтом, он может просто поместить это на рабочий сервер. Обычно они предназначены для самых простых проектов, в которых разработчик может просто протестировать на своем локальном сервере разработки перед запуском.

Конфигурация базы данных

В предыдущей статье мы обсуждали, как вы можете изменить файл wp-config.php для работы с несколькими средами и изменить настройки базы данных контента. Мы делаем это путем добавления в файл wp-config.php ключа для изменения конфигурации базы данных в зависимости от имени сервера.

switch( $_SERVER['SERVER_NAME'] )
{
    case 'dev':
 	// Dev Environment
	define( 'DB_NAME', 'project_dev' );
	define( 'DB_USER', 'project_dev_user' );
	define( 'DB_PASSWORD', 'password' );
	define( 'DB_HOST', 'localhost' );
	
	define( 'WP_HOME', 'http://project.dev');
	define( 'WP_SITEURL', WP_HOME);
    break;

    case 'uat':
	// UAT Environment
	define( 'DB_NAME', 'project_uat' );
	define( 'DB_USER', 'project_uat_user' );
	define( 'DB_PASSWORD', 'password' );
	define( 'DB_HOST', 'localhost' );
	
	define( 'WP_HOME', 'http://project.uat'); 
	define( 'WP_SITEURL', WP_HOME);
    break;

    case 'live':
	// Production Environment
	define( 'DB_NAME', 'project_live' );
	define( 'DB_USER', 'project_live_user' );
	define( 'DB_PASSWORD', 'password' );
	define( 'DB_HOST', 'localhost' );
	
	define( 'WP_HOME', 'http://project.com'); 
	define( 'WP_SITEURL', WP_HOME); 
    break;
}

Экспорт базы данных

Для экспорта базы данных вы можете использовать командную строку и экспортировать файл оттуда с помощью следующей команды

mysqldump -p -u username -h hostname database_name > dbname.sql

Или вы можете использовать PHPMyAdmin GUI и экспортировать базу данных отсюда, если у вас установлен PHPMyAdmin на вашем сервере, то вы, скорее всего, сможете добраться до него, перейдя по адресу http://example.com/phpmyadmin, где вы будете представлен экран входа в систему для получения доступа к вашей базе данных.

После того как вы вошли в систему, вы можете экспортировать базу данных, нажав на кнопку экспорта в верхнем меню.

Этот экран загрузит файл sql всех данных и структуру таблицы в базе данных. Теперь вы можете использовать этот файл базы данных для импорта в новую базу данных на другом сервере со всем содержимым и настройками из тестовой среды.

Импорт базы данных на новый сервер

Чтобы импортировать файл базы данных на новый сервер, у вас снова будет две опции: либо импорт из командной строки, либо через графический интерфейс PHPMyAdmin. Проблема, с которой вы можете столкнуться при использовании PHPMyAdmin, заключается в ограничении загрузки вашего приложения, по умолчанию оно, скорее всего, установлено в 2 МБ, поэтому, если размер файла вашей базы данных больше этого, вам придется использовать командную строку для импорта файла базы данных.

Чтобы импортировать с помощью командной строки, вам необходимо загрузить файл данных SQL на сервер, вы можете сделать это с помощью FTP и поместить файл данных в непубличную папку.

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

mysql -p -u username -h hostname database_name < /var/data/backup/dbname.sql

Изменить домен в базе данных

Поскольку мы работали на наших локальных машинах, домен, который мы используем в базе данных, будет отличаться от домена, используемого на других серверах. Поэтому, когда вы тестировали в одной среде, у вас будет база разработки в базе данных для таких вещей, как ссылки в публикациях, руководства для постов, HOME_URL, SITE_URL , пользовательские мета, комментарии.

Это означает, что вам нужно будет заменить старый домен на новый, и самый быстрый способ сделать это — запустить поиск MySQL и заменить старый домен на новый. Следующие SQL-запросы могут быть запущены в вашей базе данных, чтобы изменить URL-адрес домена в базе данных, все что вам нужно, чтобы заменить olddomain.com доменом тестовой среды и заменить newdomain.com доменом вашего сервера имен.

UPDATE `wp_commentmeta` SET `meta_value` = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE `wp_comments` SET `comment_content` = replace(comment_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE `wp_options` SET `option_value` = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE `wp_posts` SET `post_content` = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE `wp_posts` SET `guid` = replace(guid, 'http://olddomain.com', 'http://newdomain.com');
UPDATE `wp_postmeta` SET `meta_value` = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE `wp_usermeta` SET `meta_value` = replace(meta_value, 'olddomain.com', 'newdomain.com');

Многосайтовые столы

В рамках многоузловой установки у вас будут дополнительные таблицы, необходимые для смены доменной, поэтому, если у вас есть эта настройка, вы можете использовать следующие запросы.

UPDATE `wp_blogs` SET `domain` = replace(domain, 'olddomain.com', 'newdomain.com');
UPDATE `wp_site` SET `domain` = replace(domain, 'olddomain.com', 'newdomain.com');
UPDATE `wp_sitemeta` SET `meta_value` = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

Многофункциональный плагин WordPress для миграции

Вы можете использовать плагин All-in_one WordPress Migration, чтобы помочь перемещать файлы тем, медиа-файлы, плагины и экспортировать базу данных.

Плагин позволяет экспортировать вашу базу данных, медиа-файлы, плагины и темы. Вы можете применять неограниченные операции поиска и замены к вашей базе данных, и плагин также исправит все проблемы с сериализацией, возникающие во время операций поиска / замены.

Этот плагин пока не поддерживает многосайтовый экспорт, но будет работать в следующей версии.