Перенести сайт на 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:WindowsSystem32driversetchosts». Здесь нужно прописать следующую строку:




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), это легко восстанавливается.









Итог




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




Также вам могут быть интересны следующие статьи по WordPress — здесь.






2024-01-10T15:23:42
WordPress