Перенести сайт на WordPress на локальный сервер

В этой статье я покажу как можно перенести сайт сделанный на WordPress к себе на локальный сервер Debian 12.

Цель переноса

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

Здесь я не рассматриваю полный перенос сайта, то есть сайт на локальном сервере это просто копия для личного использования. Я не настраиваю https, не даю доступ к сайту из вне, сайт остаётся доступным только для моей локальной сети.

Забираем с хостинга файлы и базу данных

Сайт на WordPress состоит из файлов и базы данных, именно их и нужно перенести. А для начала нужно их забрать от вашего хостинга. Я работал только с хостингом reg.ru. На нём бэкапы создаются автоматически раз в сутки. Их нужно найти и скачать:

  • дамп базы данных сайта;
  • файлы сайта.

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

Скаченные архивы распаковываем на локальном компьютере и заливаем на сервер в уже распакованном виде.

Подготавливаем локальный сервер

В этой статье я буду переносить сайт на локальный сервер с операционной системой Debian 12. Установим необходимые пакеты:

# apt install -y nginx php-fpm php-mysql php-curl php-gd \
  php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip mariadb-server curl

Загрузим каталог с файлами в каталог /var/www/, это я проделываю с помощью SFTP. Затем изменим владельца каталога на www-data:

# chown -R www-data:www-data /var/www/<каталог с файлами>/

Создадим конфиг для сайта:

# nano /etc/nginx/sites-available/wp-home

server {
  listen 80;
  listen [::]:80;
  root /var/www/<каталог с файлами>;
  index index.php index.html index.htm;
  server_name wp-home.ru;
  location / {
    try_files $uri $uri/ /index.php$is_args$args;
  }
  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
  }
  location = /favicon.ico { log_not_found off; access_log off; }
  location = /robots.txt { log_not_found off; access_log off; allow all; }
  location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
    expires max;
    log_not_found off;
  }
}

Включим подготовленный конфиг, выключим конфиг по умолчанию, проверим конфигурацию и перезагрузим nginx:

# ln -s /etc/nginx/sites-available/wp-home /etc/nginx/sites-enabled/
# rm /etc/nginx/sites-enabled/default
# nginx -t
# systemctl reload nginx

Подготавливаем базу данных

Повышаем безопасность сервера mysql:

# mysql_secure_installation
 Enter current password for root (enter for none): (оставляем пустым)
 Switch to unix_socket authentication [Y/n] (нажимаем Enter)
 Change the root password? [Y/n] (нажимаем Enter)
 New password: (придумываем пароль)
 Re-enter new password: (повторяем пароль)
 Remove anonymous users? [Y/n] (нажимаем Enter)
 Disallow root login remotely? [Y/n] (нажимаем Enter)
 Remove test database and access to it? [Y/n] (нажимаем Enter)
 Reload privilege tables now? [Y/n] (нажимаем Enter)

Создаём базу данных для WordPres:

# mariadb
> CREATE DATABASE wp1 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
> GRANT ALL ON wp1.* TO 'wp_user1'@'localhost' IDENTIFIED BY 'pass1';
> FLUSH PRIVILEGES;
> exit
  • Здесь я создаю базу wp1 и даю к ней доступ пользователю wp_user1 с паролем pass1. Вы можете изменить эти значения.

На локальном компьютере открываем дамп скачанной базы данных любым текстовым редактором. На Windows, например, можно использовать Notepad++. Затем в тексте ищем и заменяем старый домен (например: https://sysadminium.ru) на новый домен (например: http://wp-home.ru). Подготовленный дамп базы данных кидаем на сервер.

А затем загружаем в базу данных:

# mysql wp1 < /home/alex/db.sql
  • wp1 — это имя базы данных, в которую мы загружаем дамп.
  • db.sql — это имя дампа базы данных, у вас оно может быть другим.

Редактируем конфиг WordPress

Вначале получим новые ключи для этого экземпляра WordPress:

# curl -s https://api.wordpress.org/secret-key/1.1/salt/
define('AUTH_KEY',         '-cnVks63bC]HD%|08eL#tJu(|gh+3#z}*g]_UQoiS@zk!MEar>5xe,g$PbCT8xq;');
define('SECURE_AUTH_KEY',  '9`HM?e;7+n8!&(ptv0ONFEZ=Ym;KRs41b*6k:@w-a@(X!<9F9t7a+ttSQw>l@6w|');
define('LOGGED_IN_KEY',    'um4G|;(qI;CKvrU%k=.&R5JKw%;UK_.|<|Y+&:39kqn;K~n=4qQNF^KmR=!}QOpT');
define('NONCE_KEY',        'dKvnl_dY&!U=5x>]5|qFG| v&!iYi^!3JFlMwHfEp]GQ?31]N+Z-+p~M+4b&&<a-');
define('AUTH_SALT',        '!y7_1;3sY~wlbTTA3[yiberXY`5+i%|2kArQW|{nok|~F-E0}1K@;@~MM~xd;JZ2');
define('SECURE_AUTH_SALT', 'n|le>;^cH.qbu:yz0/J `|q3+>ul2/goE2,SGj1| k}+4J&<x^m`7q#6Iv4loG7f');
define('LOGGED_IN_SALT',   'z6>z*?TYVK*!5rNh@+8CJCo,WWl=->pO~|Ta-7_@ey8/DDM(NIBNV719@.ur.W$8');
define('NONCE_SALT',       '+/8,<^#- NEN`;5&!a+We;C:OOE][t$vI)^q:ETRNMTA-1xH~c$0:q=zOeN`<j.w');

Теперь отредактируем конфиг WordPress:

# nano /var/www/<каталог с файлами>/wp-config.php
define('DB_NAME', 'wp1');
define('DB_USER', 'wp_user1');
define('DB_PASSWORD', 'pass1');
define('AUTH_KEY',         '-cnVks63bC]HD%|08eL#tJu(|gh+3#z}*g]_UQoiS@zk!MEar>5xe,g$PbCT8xq;');
define('SECURE_AUTH_KEY',  '9`HM?e;7+n8!&(ptv0ONFEZ=Ym;KRs41b*6k:@w-a@(X!<9F9t7a+ttSQw>l@6w|');
define('LOGGED_IN_KEY',    'um4G|;(qI;CKvrU%k=.&R5JKw%;UK_.|<|Y+&:39kqn;K~n=4qQNF^KmR=!}QOpT');
define('NONCE_KEY',        'dKvnl_dY&!U=5x>]5|qFG| v&!iYi^!3JFlMwHfEp]GQ?31]N+Z-+p~M+4b&&<a-');
define('AUTH_SALT',        '!y7_1;3sY~wlbTTA3[yiberXY`5+i%|2kArQW|{nok|~F-E0}1K@;@~MM~xd;JZ2');
define('SECURE_AUTH_SALT', 'n|le>;^cH.qbu:yz0/J `|q3+>ul2/goE2,SGj1| k}+4J&<x^m`7q#6Iv4loG7f');
define('LOGGED_IN_SALT',   'z6>z*?TYVK*!5rNh@+8CJCo,WWl=->pO~|Ta-7_@ey8/DDM(NIBNV719@.ur.W$8');
define('NONCE_SALT',       '+/8,<^#- NEN`;5&!a+We;C:OOE][t$vI)^q:ETRNMTA-1xH~c$0:q=zOeN`<j.w');
  • Я указал только те опции, которые необходимо изменить.
  • Если вы меняли имя базы данных, имя пользователя или пароль, то указываете свои данные.

Дополнительные действия

Теперь прописываем на своем локальном компьютере в файл hosts адрес к вашему локальному серверу. Например на windows это файл: C:\Windows\System32\drivers\etc\hosts. Здесь нужно прописать следующую строку:

192.168.0.25 wp-home.ru
  • 192.168.0.25 — это ip адрес моего локального сервера,
  • wp-home.ru — название сайта на локальном сервере.

Открываем сайт http://wp-home.ru в браузере и видим свой перенесенный сайт на локальном сервере.

Переходим в админку, для этого используем следующий адрес: http://wp-home.ru/wp-login.php. Вводим свой пароль и логин, как от рабочего сайта. Затем выключаем ненужные плагины.

Также мне пришлось немного восстановить внешний вид сайта. Например, у меня слетело меню сайта, пришлось указать область его отображения. И слетело изображение заголовка и надпись заголовка (Blog Title), это легко восстанавливается.

После проделанного - статьи открываются, все рисунки и ссылки работают. Резервная копия сайта проверена. Дополнительно, вы можете поэкспериментировать с локальной версией сайта.


Если понравилась статья, подпишись на мой канал в  VK  или  Telegram .