Problem jest oto taki, że chcę przenieść kopię bloga (oryginał jest/był na serwerze nazwa.pl
) na Sheevaplug (taki rodzaj NAS), która byłaby dostępna przez Internet. Pierwszy krok do likwidacji bloga na nazwa.pl
, bo drogo BTW.
Na Sheevaplug jest zainstalowany Debian w wersji Stretch i nie ma WordPressa.
Rozpocząłem od pobrania narzędzia wp-cli
ze strony wp-cli.org/. Zainstalowałem toto (prawie) w sposób opisany na ww. stronie, tj.:
https://raw.github.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar ~/bin/wp
Heurystycznie ustaliłem, że treść tego konkretnego klonowanego bloga znajduje się bazie mysql
(teksty) oraz w katalogu wp-content
, w którym to w szczególności są zdjęcia (wp-content/gallery
) oraz filmy i chmara jakiś plików .gif
(wp-content/wp-uploads
). Oprócz tego są jeszcze katalogi themes
, upgrade
, plugins
, ngg
oraz languages
. Uprzedzając wydarzenia wszystko kopiuję jak leci ze starej instalacji (w obu jest/będzie ta sama wersja WP). Natomiast teksty z bazy eksportuję (do pliku SQL):
wp db export
Można też to zrobić logując się do URL-BLOGA/wp-admin
. Teraz wszystko ściągam korzystając z rsync
(/media/WP-SITE/
oraz /media/WPSQL/
to oczywiście przykłady):
rsync -avzP -e "ssh" USER@BLOG:PATH-TO-WP/wp-content/* /media/WPSITE/
rsync -avzP -e "ssh" USER@BLOG:PATH-TO-WP/_sqldump_/* /media/WPSQL/
Zamiast rsync można użyć ftp
albo:
scp -r USER@BLOG:path/to/files/
Teraz pobrałem archiwum WP ze strony wordpress.org/download/ i rozpakowałem je (Uwaga: być może można skopiować po prostu całą starą instalację WP na nowy komputer i będzie działać, ale ja tak nie robiłem.):
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz
Za pomocą klienta mysql
stworzyłem użytkownika pn. wordpress, który otrzymał stosowne uprawnienia. Utworzyłem następnie bazę pn. wordpress
:
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'user'@'localhost'
-> IDENTIFIED BY '*password*';
Query OK, 0 rows affected (0.00 sec)
Następnie wstawiłem stosowne wpisy do wp-config.php
define('DB_NAME', 'wordpress');
define('DB_USER', '**USER**');
define('DB_PASSWORD', '**PASSWORD**');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
Teraz zaimportowałem treść bloga do bazy:
wp db import kopia-bazy.sql --path='/var/www/html/'
Doczytałem, że trzeba zmienić URLe ze starych na nowe:
wp search-replace 'STARY-URL' 'NOWY-URL' --dry-run
Konkretnie w moim przypadku:
wp search-replace 'http://nazwabloga.nazwa.pl/' 'http://oberon.pinkaccordions.org/' \
--path='/var/www/html/' --dry-run
## --dry-run nic nie zmienia ale wyświetla raport
## jeżeli wszystko jest OK:
wp search-replace 'http://nazwabloga.nazwa.pl/' 'http://oberon.pinkaccordions.org/' \
--path='/var/www/html/'
Sprawdzam i nie działa, ale wypisuje, że nie ma jakiegoś theme. No to kopiuję jak leci ze starej instalacji katalogi themes
, upgrade
, plugins
, ngg
, languages
, o czym już pisałem. Teraz działa.
Jeszcze został problem udostępnienia tego w Interncie poprzez DynDNS. Sprawę komplikuje to, że mam już dwa zarejestrowane serwisy a Tomato wydaje się obsługiwać tylko dwa hosty. Okazuje się wszakże że pole host niekoniecznie musi zawierać pojedynczy wpis, może zawierać listę oddzielonych przecinkami nazw hostów. No to dopisałem następny host z puli, którą mam oraz dopisałem co trzeba w Tomato.
Dodatkowa komplikacja jest taka, że chcę ten sklonowany blog udostępnić na innym komputerze. Konkretnie do tej pory udostępniałem jeden komputer, a teraz będą dwa. Na taką okoliczność oprócz dopisania nazwy hosta do listy trzeba także zmodyfikować wpis w części port forwarding (por. rysunek). Drugi komputer wymaga mianowicie zadeklarowania innego ExPort-u.)
Po tym wszystkim nadal działa:-)