Migrasi WordPress ke Komputer Lokal Dengan WP-CLI dan SSH

Suatu ketika mungkin Anda butuh menambahkan fitur-fitur pada web WordPress Anda tetapi tidak ingin menggangu pengunjung dengan tiba-tiba halaman tidak dapat diakses/error karena kesalahan dari plugin/fitur baru tersebut. Karena itulah local development atau bisa juga disebut staging phase dibutuhkan untuk melakukan uji coba berbagai fitur yang akan diterapkan sebelum dapat dinikmati pengunjung/pengguna Anda.

Sebelum melanjutkan mungkin Anda perlu membaca tutorial ini dan juga ini.

Persiapan Awal

Kali ini saya akan berbagi pengalaman untuk melakukan migrasi web WordPress dari live server ke local computer, untuk itu ada beberapa hal yang harus Anda ketahui sebelum menjutkan tutorial ini, yaitu :

  1. Pastikan server/hosting Anda mendukung akses ke SSH, beberapa penyedia shared hosting yang pernah saya gunakan adalah Hostinger, Niagahoster, HostGator, HawkHost dan DewaWeb. Catatan: tidak semua paket shared hosting mendukung SSH.
  2. Pastikan WP-CLI telah terpasang, biasanya untuk WordPress hosting sudah dilengkapi dengan WP-CLI, namun jika belum Anda dapat memasangnya secara manual atau minta bantuan penyedia hosting Anda.
  3. Pada komputer lokal siapkan sebuah web WordPress kosong menggunakan aplikasi Local by FlyWheel, silahkan lihat tutorial ini.

Menyiapkan File Backup pada Server

Buka aplikasi terminal/cmd pada komputer Anda, kemudian akses ke SSH dengan perintah berikut: ssh username@ip-address  kemudian enter, Anda akan diminta memasukkan password untuk dapat masuk. Jika port bukan 22 (biasanya shared hosting menggunakan port yang berbeda), maka perintahnya adalah ssh -P nomorport username@ip-address

Contoh penggunaanya adalah :
ssh usernamesolusipress@123.456.789.101  atau
ssh -P 65002 usernamesolusipress@123.456.789.101

Atau jika Anda mempunyai akun CodeAnywhere, Anda dapat langsung mengakses file-file beserta SSH dengan cara klik kanan pada menu Connections, kemudian pilih New Connection lalu pilih SFTP-SSH pada Connection Wizard.

Pada layar diatas, isi Hostname dengan IP Address, sesuaikan juga Initial dir dan Port. Setelah masuk ke layar console SSH, saatnya backup data-data yang diperlukan.

Kita membutuhkan backup dari database dan direktori wp-content beserta isinya.

  1. Backup database dengan perintah: wp db export  lalu enter, Anda akan mendapatkan file .sql pada direktori public_html ( WordPress root ).
  2. Backup direktori wp-content dengan perintah :
    zip -r wp-content-20180606.zip wp-content lalu enter, Anda bebas menentukan nama untuk ini wp-content-20180606.zip

Download File Backup ke Komputer Lokal

Sampai disini langkah pertama telah selesai, selanjutnya adalah mendownload kedua file (.sql & .zip) tersebut. Pastikan Anda telah membuat web WordPress baru dengan aplikasi Local, kemudian "Open Site SSH".

Pada console SSH, masuk ke direktori root WordPress dengan perintah:
cd app/public kemudian copy file yang ada di server dengan perintah berikut :
scp username@ip-address:/full/path/to/file.sql .  tanda titik di akhir menyatakan bahwa file yang didownload diletakan pada direktori ini (dalam hal ini adalah direktori public pada komputer lokal). Contoh:

scp usernamesolusipress@123.456.789.101:/usernamesolusipress/public_html/databasebackup-2018-06-06-6b0a5ae.sql .

Anda akan diminta mengisi password FTP/SSH untuk melanjutkan proses.

Untuk mendapatkan lokasi /usernamesolusipress/public_html/ secara pasti, silahkan kembali ke SSH console pada server, masuk ke direktori file .sql kemudian ketik perintah pwd  lalu enter.

Lakukan hal yang sama untuk mendownload file wp-content-20180606.zip

Import Database dan WP-Content

Lanjut ke langkah ketiga, yaitu mengimport file-file yang telah didownload. Namun sebelum itu, Anda perlu menginstall software zip pada virtual machine terlebih dahulu.

Sebagai informasi, Local menggunakan Docker untuk mengkontruksi sebuah web WordPress pada komputer lokal Anda dan tidak semua tools terinstall termasuk tool untuk melakukan zip/unzip. Untuk itu kita perlu menginstallnya sendiri.

Pada tampilan layar diatas, diketahui distro Linux yang digunakan adalah Debian, maka kita perlu menginstall zip dengan perintah berikut :
apt-get update  lalu enter
apt-get install zip  lalu enter.

Setelah selesai, saatnya import file-file tersebut:

  1. Import database, jalankan perintah
    wp db import databasebackup-2018-06-06-6b0a5ae.sql  lalu enter.
  2. Hapus direktori wp-content dengan perintah rm -rf wp-content lalu enter.
  3. Import wp-content, jalankan perintah unzip wp-content-20180606.zip lalu enter.

Sampai disini mungkin Anda perlu mengganti $table_prefix , karena secara default Local menggunakan prefix wp_

Finishing

Jika Anda coba jalankan dengan url http://solusi-press.local/ (contoh untuk web saya), maka Anda akan dialihkan ke versi live web Anda, mengapa demikian? Karena Anda belum men-setting ulang url-url yang tersimpan pada database.

Untuk menggantinya, silahkan gunakan perintah berikut :
wp search-replace 'https://solusipress.com' 'http://solusi-press.local'  lalu enter. Harap sesuaikan dengan url Anda.

Sebelum Anda test, ada baiknya menonaktifkan plugin-plugin yang tidak dibutuhkan pada local development. Semisal plugin cache, ads, security, dan lain-lain.

Anda dapat melihat plugin-plugin yang terinstall dengan perintah wp plugin list  kemudian nonaktifkan plugin-plugin yang Anda rasa perlu.

Saatnya luncurkan web lokal Anda

Luar biasa... sesuai harapan. Sekarang Anda dapat melanjutkan seperti penambahan fitur atau melakukan aktifitas koding pada komputer lokal tanpa mengganggu pengunjung.

Kesimpulan

Untuk pertama kali mungkin proses-proses diatas terkesan panjang, namun untuk selanjutnya Anda akan merasa lebih nyaman dengan cara ini. Anda juga dapat menggunakan plugin untuk melakukan hal ini seperti Duplicator, namun semua kembali kepada Anda.

Cara ini juga bisa diimplementasikan jika Anda ingin melakukan migrasi antar server atau dari komputer lokal ke live server.

Happy WordPressing

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
envelope-otagscalendarwhatsapp
0
Would love your thoughts, please comment.x
()
x