WP-ClI İle WordPress Taşıma İşlemi

WordPress ve web sitesi barındırma (hosting) konusuna WordPress web sitesinin bir sunucundan başka bir sunucuya taşınması işlemiyle devam edelim.

AA

Sebep her ne olursa olsun, bu tür taşıma süreçlerinde önemli olan verileri sağlıklı bir şekilde aktarabilmek. Elbette veri ile kastım öncelikli olarak kullanılan veri tabanı (database) ve wp-content içeriği.

Sunucular Arasında WordPress Transferi

Barındırma hizmeti aldığınız firmadan memnun kalmamış olabilirsiniz ya da bir müşteriniz için farklı bir sunucuda çalışma yürütüp sonrasında müşteriye ait sunucuya verileri düzgün bir şekilde taşımak isteyebilirsiniz, özetle sebep her ne olursa olsun günün birinde kendinizi bu tür bir süreç içerisinde bulabilirsiniz. Bu aşamada el yordamıyla ilerlemek mümkün; yönetim panelinizden veri tabanını (tabi uzak erişim sağlanmıyorsa) ve FTP bağlantısı ile tüm WordPress dosyalarını (ya da en temelde wp-config içeriğini) bilgisayarınıza indirebilir ardından yeni sunucuya tekrar yükleyebilirsiniz. Ardından, veri tabanı içerisinde alan adını değiştirmeniz gerekir ki web sayfası erişilebilir ve düzenlenebilir hale gelsin. Bunun için bir metin editörü ya da SQL sorgusu da iş görecektir. Ancak, veri tabanının bir yedeğini aldığınızdan emin olmalısınız ki işlerin ters gitme ihtimaline karşın garantiniz olsun. Ben ilgili taşıma işlemini daha güvenli ve efektif olacağını düşündüğüm için WP-Cli aracılığıyla gerçekleştireceğim. wp-old ve wp-new adında 2 barındırma alanımız olsun. Örnek olarak DigitalOcean altında 2 farklı WordPress droplet oluşturdum. İlk işlemimiz elbette bu sunucular arasında SSH bağlantısı sağlayabilmek. Bunun için ilk olarak wp-old sunucusuna SSH bağlantısı gerçekleştirelim.

ssh root@[wp-old-alanadi-veya-ip-adresi]

Ardından, cat ile var olan public key (id_rsa.pub) içeriğini alabiliriz ya da ssh-keygen ile yeni bir key oluşturabiliriz.

ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub

Şimdi bu kodumuzu yeni sunucumuzdaki ~/.ssh/authorized_keys dosyasına eklememiz gerekiyor.

nano ~/.ssh/authorized_keys

İlgili dosyanın en alt satırına yeni public key içeriğini kaydedelim ve dosyayı kapatalım. Artık sunucular arasında SSH bağlantısı sağlayabiliriz. Eski sunucuya tekrar erişim sağlayıp yeni sunucuya SSH isteği gönderelim. Bağlantı sağlandıktan sonra exit komutuyla erişimi sonlandırabilirsiniz. Yazının başında da belirttiğim gibi websitesinin taşınması sürecinde WP-Cli kullanacağım. Bu nedenle her iki barındırma alanına da WP-Cli kurulumu gerçekleştirmemiz gerekiyor.

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
mkdir /usr/local/bin/.wp-cli
mv wp-cli.phar /usr/local/bin/.wp-cli/
echo "alias wp='/usr/local/bin/.wp-cli/wp-cli.phar'" >> ~/.bashrc
touch /usr/local/bin/.wp-cli/config.yml
echo "WP_CLI_CONFIG_PATH='/usr/local/bin/.wp-cli/config.yml'" >> ~/.bashrc
source ~/.bashrc
wp --info

Gerekli olan tüm araçlarımız ve bağlantılarımız da hazır olduğuna göre taşıma işlemine başlayabiliriz.

Veritabanını Taşımak

Eski barındırma alanında barındırılan WordPress web sitemizin veri tabanına wp core config ile bağlanabilir wp db export ile yedeğini alabiliriz. Hepimizin bildiği üzere, wp-config.php dosyasında veri tabanı bilgileri yer almakta. Buradan ilgili bilgileri alarak ilerleyebiliriz.

wp core config --dbname='[veri-tabaninin-adi]' --dbuser=[veri-tabani-kullanici-adi] --dbpass='[veri-tabani-kullanici-sifresi]'
wp db export /tmp/wp-db-backup.sql

Veri tabanının kopyası hazır olduğuna göre bu dosyayı (wp-db-backup.sql) yeni sunucuya aktarabiliriz.

scp /tmp/wp-db-backup.sql root@[wp-new-alanadi-veya-ip-adresi]:/tmp/wp-db-backup.sql

Bundan sonraki aşamaya yeni barındırma (wp-new) alanında devam edebiliriz. İlk olarak sunucuya WordPress kurulumumuzu yapalım ve ardından kurulumuza veri tabanını aktaralım.

wp core download && wp config create --dbname='[veri-tabaninin-adi]' --dbuser=[veri-tabani-kullanici-adi] --dbpass='[veri-tabani-kullanici-sifresi]' && wp db import /tmp/wp-db-backup.sql -quiet

Hali hazırda WordPress kurulu ancak yapılandırılmamış ise sadece wp db import komutunu da uygulayabilirsiniz. Yine yazının başında da belirttiğim gibi eski WordPress kurulumuna ait URL bilgilerinin de değiştirilmesi gerekiyor ki dosyalarımız görüntülenebilsin ve web sayfamız erişilebilir hale gelsin. Bu amaçla wp search-replace komutunu kullanabiliriz.

wp search-replace "[wp-old\]" "[wp-new\]"

Veri tabanı içeriğini aktarma işlemimiz tamamlandı ve artık wp-new var olan içeriğimizle (wp-old‘dan aktardığımız) görüntülenebilir. Kimi zaman bu aşamada WordPress kullanıcısı oluşturmak isteyebilirsiniz.

wp user create [kullanici-adi] [kullanici-e-posta-adresi] --role=administrator --allow-root

Dosyaları Taşımak

Veri tabanının aktarılmasının yanı sıra görseller, eklentiler ve diğer varlıkların da taşınması aşaması daha kolay çözüme kavuşmaktadır.

rsync -r root@[wp-new-alanadi-veya-ip-adresi]:~/var/www/html/wp-content ~/var/www/html/

Son Kontroller

Veri tabanı ve dosyaların taşınması sürecinde herhangi bir sorun yaşanacağını düşünmüyorum. Ancak olası sınırlandırmalar ya da yazım hataları söz konusu olabilir. Bu gibi durumlarda ilgili adımı kontrol edip tekrarlayabilirsiniz. Ek olarak, WP-Cli‘nin bu web sitesi taşıma işleminin tek yolu olmadığı da aşikar. Mesela el yordamıyla adım adım ilerlemek de bir seçenek iken Duplicator1 gibi eklentilerden de faydalanmak mümkün.