Chci se podělit o zkušenost s migrací redakčního systému WordPress na jiný server. U mě šlo o vynucenou situaci, kdy bylo nutno povýšit OS z CentOS 7 na CentOS 8 Stream a musel jsem tedy přenést obsah 1:1. Z různých návodů a tipů jsem poskládal postup, který se mi osvědčil. Snad bude k užitku i dalším administrátorům.
Prvním krokem je záloha:
- databáze
- adresáře webserveru s instalací WordPressu
- konfigurace Apache webserveru
- zjištění verze PHP – důležité pro kompatibilitu s nasazenou verzí WP
Pro zálohu databáze použijte utilitu mysqldump pro MySQL nebo mariadb-dump pro MariaDB.
mariadb-dump --single-transaction -u root --databases wordpress > wordpressbackup.sql
Zálohu adresáře s instalací WordPressu a konfigurace Apache httpd proveďte nástrojem, na jaký jste zvyklý (vlastní backup software, rsync, atd.). My používáme IBM Spectrum Protect (dříve Tivoli Storage Manager), takže v našem případě to bude:
/opt/tivoli/tsm/client/ba/bin/dsmc incr "/var/www/html/*" -sub=yes /opt/tivoli/tsm/client/ba/bin/dsmc incr "/etc/httpd/*" -sub=yes
Zjištění verze php je jednoduché:
[root@www bin]# php -v PHP 8.1.27 (cli) (built: Dec 19 2023 20:35:55) (NTS gcc x86_64) Copyright (c) The PHP Group Zend Engine v4.1.27, Copyright (c) Zend Technologies
Samozřejmě pokud chceme přenést server 1:1 vč. dalších software, je ideální záloha celého adresáře /etc, případně dalších.
Nyní přeskočíme instalaci CentOSu 8. Předpokládejme čistou instalaci v módu „Minimal install“. Nainstalujte repository EPEL a repozitář REMI, odkud budeme instalovat potřebnou verzi PHP.
dnf install epel-release dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm
Vylistujte si aktuální dostupné verze PHP.
dnf module list php \Last metadata expiration check: 0:00:10 ago on Sat 02 Mar 2024 09:31:19 PM CET. CentOS Stream 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language php 8.0 common [d], devel, minimal PHP scripting language php 8.2 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language php remi-8.2 common [d], devel, minimal PHP scripting language php remi-8.3 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Nyní deaktivujeme PHP 7.2 a naopak aktivujeme PHP 8.1 z repozitáře REMI a poté instalujeme příslušné moduly PHP a Apache httpd server.
dnf module disable php:7.2 dnf module enable php:remi-8.1 dnf install httpd php-mysqlnd php-fpm tar curl php-json systemctl enable httpd --now
Zkontrolujte, že verze PHP opdpovídá původnímu serveru:
[root@www ~]# php -v PHP 8.1.27 (cli) (built: Dec 19 2023 20:35:55) (NTS gcc x86_64) Copyright (c) The PHP Group Zend Engine v4.1.27, Copyright (c) Zend Technologies with Zend OPcache v8.1.27, Copyright (c), by Zend Technologies
Nyní nainstalujeme MariaDB, ale nikoliv z CentOS repozitáře, ale přímo z MariadDB repa.
[root@www ~]# wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup --2024-03-02 21:40:22-- https://downloads.mariadb.com/MariaDB/mariadb_repo_setup Connecting to 192.168.156.40:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 36328 (35K) [application/octet-stream] Saving to: ‘mariadb_repo_setup’ mariadb_repo_setup 100%[======================================================================================================================>] 35.48K --.-KB/s in 0.02s 2024-03-02 21:40:23 (1.61 MB/s) - ‘mariadb_repo_setup’ saved [36328/36328] [root@www ~]# chmod +x mariadb_repo_setup [root@www ~]# ./mariadb_repo_setup # [info] Checking for script prerequisites. # [info] MariaDB Server version 11.3 is valid # [info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo # [info] Adding trusted package signing keys... curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above. error: https://supplychain.mariadb.com/MariaDB-Enterprise-GPG-KEY: import read failed(2). # [error] Failed to add trusted package signing keys # [info] Cleaning package cache... 71 files removed dnf install mariadb-server systemctl enable mariadb --now Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service. mariadb-secure-installation
Obnovte instalaci WP a konfiguraci Apache httpd serveru.
/opt/tivoli/tsm/client/ba/bin/dsmc restore "/var/www/html/*" -sub=yes /opt/tivoli/tsm/client/ba/bin/dsmc restore "/etc/httpd/*" -sub=yes
Z původního serveru z wp-config.php zjistíme uživatele, kterého používá WP pro přístup do databáze a jeho heslo. Vytvoříme ho a naimportujeme zálohu databáze WP.
# mysql -u root -p mysql> CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'password'; mysql> GRANT ALL ON wordpress.* TO 'wordpressuser'@'localhost'; mysql> FLUSH PRIVILEGES; mysql> exit mysql -u root < wordpressbackup.sql
Pro jistotu restartujte server a pokud vše proběhlo v pořádku, máte identický WordPress jako před zahájením akce.