Catatan Migrasi WordPress dari Hosting ke VPS
Proses migrasi situs web sudah memasuki tahap akhir. Saya sempat mengalami kegalauan karena proses propagasi DNS yang cukup lama. Sore ini, waktu propagasi DNS akhirnya selesai dan saya bisa lanjut ke langkah akhir. Catatan migrasi WordPress dari hosting ke VPS ini saya tulis sebagai panduan bila dikemudian bulan saya harus melakukan migrasi lagi.
Bagian tersulit dari rangkaian migrasi ini, menurut saya, terletak di konfigurasi SSL. Sedangkan bagian yang paling membosankannya sudah saya katakan didepan. Selebihnya, saya lakukan sesuai dengan langkah-langkah yang sudah saya posting lebih dulu di Instagram.
Alasan kenapa saya harus susah-susah memigrasikan situs web saya dari hosting ke VPS (virtual private server) adalah karena saya ingin punya akses penuh terhadap mesin pribadi saya.
Mungkin Anda sudah tahu, sebenarnya, hosting tidak jauh beda dengan VPS. Perbedaan umum dari keduanya terletak pada fitur utamanya saja. Dimana hosting sudah dilengkapi dengan panel kontrol yang friendly; cPanel, DirectAdmin, Plesk dan sebagainya. Sedangkan VPS masih kosongan; hanya mesin dengan sistem operasinya saja. Hosting biasanya dipakai rame-rame (shared hosting), sedangkan VPS, satu mesin itu sepenuhnya milik kita.
Tanpa panjang kali lebar, berikut catatan migrasi WordPress dari hosting ke VPS selengkapnya.
Cadangkan Aset Situs
Pencadangan ini dilakukan agar Anda tidak memulai semuanya dari awal lagi di mesin yang baru. Beberapa aset yang perlu dicadangkan adalah berkas aplikasi web yang ada di public_html, DNS record, dan basis data.
Proses pencadangan saya lakukan di mesin lokal dengan mengunduh semua berkas yang diperlukan melalui FileZilla, sang FTP client populer.
Cara menggunakan FileZilla bisa dibilang cukup mudah. Anda cukup memasukkan IP atau subdomain yang mengarah ke server FTP Anda, nama pengguna, sandi, dan porta FTP.
FileZilla kilen FTP |
Setelah semua berkas aset utama dari public_html berhasil terunduh, langkah berikutnya untuk mencadangkan aset situs adalah mengekspor basis data. Dalam hal ini, Anda bisa menggunakan alat yang sudah disediakan oleh kontrol panel hosting Anda, phpMyAdmin, misalnya.
Untuk mengekspor basis data menggunakan phpMyAdmin, silahkan masuk ke dasbor phpMyAdmin melalui kontrol panel Anda. Klik nama basis data yang ada di panel sebelah kiri, setelah daftar tabel yang ada di basis data tampil, klik menu Ekspor yang ada di atas daftar tabel, klik tombol Go.
Langkah pertama ini, Anda sudah berhasil mencadangkan aset situs Anda ke mesin lokal.
Migrasi DNS ke Cloudflare
Proses migrasi DNS dimulai dengan memasang NS (nameserver) yang didapatkan dari Cloudflare ke domain manager registrar. Nah, dibagian ini saya baru sadar kalau Cloudflare ini lumayan canggih. Dimana saat saya pertama kali mendaftarkan domain, saat proses lookup berlangsung, Cloudflare dapat langsung mengenali berbagai DNS record yang sebelumnya ada di DNS manager hosting.
Dibagian ini, saya sudah membuat catatan khusus tentang cara mengarahkan DNS manager ke Cloudflare. Anda bisa mengikuti langkah-langkah yang sudah saya buat disana.
Tidak seperti saat memigrasikan domain baru, proses propagasi DNS lama membutuhkan waktu hingga enam jam lamanya. Saya yang awalnya semangat, gegara nungguin waktu propagasi malah jadi gabut sendiri.
Mempersiapkan Server
Proses mempersiapkan server atau VPS ini dimulai dengan merencanakan paket-paket apa saja yang akan dipasang untuk kebutuhan aplikasi web berbasis PHP. Pada kasus ini, saya akan memasang dan mengkonfigurasi paket LEMP Stack; Linux (saya menggunakan Ubuntu Server 20.04 LTS), Nginx, MariaDB dan PHP-FPM.
Paket LEMP Stack ini nantinya akan saya kombinasikan dengan Let's Encrypt untuk kebutuhan koneksi aman (SSL).
Pasang dan konfigurasi blok server Nginx
Nginx merupakan salah satu aplikasi web server yang populer diantara para pengembang web. Selain terkenal ringan, berkas instalasi Nginx lebih kecil jika dibandingkan dengan Apache2.
Untuk memasang Nginx, Anda dapat mengeksekusi perintah berikut, langsung di mesin VPS Anda.
$ sudo apt install nginx
Setelah Nginx terpasang, silahkan matikan local site yang secara default jalan otomatis setelah Nginx terpasang. Gunakan perintah ini:
$ sudo rm -rf /etc/nginx/sites-enable/default
Buat salinan konfigurasi untuk menyiapkan blok server yang akan Ada gunakan untuk situs web baru ini. Gunakan perintah berikut.
$ sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/domainanda.tld
Buka konfigurasi yang baru saja Anda buat.
$ sudo nano /etc/nginx/sites-available/domainanda.tld
Buat konfigurasi blok server seperti berikut ini.
server {
listen 80;
listen [::]:80;
server_name domainanda.tld www.domainanda.tld;
return 301 https://www.$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
root /var/www/public_html;
# Add index.php to the list if you are using PHP
index index.php index.html index.htm;
server_name domainanda.tld www.domainanda.tld;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
Simpan konfigurasi blok server yang sudah Anda buat.
Pasang dan Konfigurasi PHP-FPM
Apa itu PHP-FPM? Menurut situs resminya, PHP FPM merupakan implementasi PHP FastCGI alternatif dengan beberapa fitur tambahan yang sebagian besar berguna untuk situs-situs berat. Nah, PHP-FPM ini sangat cocok dipadukan dengan EngineX. Bisa dibilang kalau keduanya adalah pasangan yang serasi.
Pemasangan PHP-FPM pada kasus ini harus memperhatikan kebutuhan WordPress terhadap modul-modul PHP lainnya. Anda bisa mengunjungi laman Server Environment - Make WordPress Hosting untuk membaca lebih detail terkait modul PHP yang dibutuhkan oleh WordPress.
Berikut perintah untuk memasang PHP beserta dengan modul-modulnya.
$ sudo apt install php php-fpm php-curl php-gd php-json php-mbstring php-tokenizer php-xml php-common php-imagick php-mysql php-zip php-soap php-xmlrpc
Oiya, saya lupa bilang diawal. Pada kasus ini, saya menggunakan Ubuntu 20.04 LTS, ya. Jadi, secara bawaan, PHP yang terpasang adalah versi PHP 7.4.x meskipun, secara spesifik, saya tidak menyebutkan versinya saat pemasangan.
Setelah pemasangan selesai, sebenarnya PHP-FPM sudah bisa langsung digunakan dengan Nginx. Berhubung tema yang saya pakai membutuhkan pengaturan khusus, jadi mau tidak mau saya harus melakukan beberapa penyesuaian konfigurasi.
Konfigurasi PHP-FPM dapat dilakukan dengan perintah berikut:
$ sudo nano /etc/php/7.4/fpm/php.ini
Berikut beberapa konfigurasi pada PHP-FPM yang saya lakukan untuk improvisasi.
Ubah zona waktu
Zona waktu baku PHP digunakan oleh semua fungsi date atau time. Mengubahnya berarti mengubah zona waktu baku yang digunakan. Silahkan cari variabel date.timezone dengan cara Ctrl W, kemudian ketikkan variabel yang ingin Anda cari. Ubah pengaturannya menjadi seperti berikut.
data.timezone = Asia/Jakarta
Konfigurasi untuk improvisasi (optional)
upload_max_filesize 64M
memory_limit 256M
max_input_time 180
post_max_size 128M
max_input_vars 3000
max_execution_time 180
Simpan semua konfigurasi yang sudah Anda buat.
Pasang dan Konfigurasi MariaDB
Kenapa harus pake MariaDB kok gak pake MySQL? Hmm. Dari dulu, ini pertanyaan yang belum bisa saya jawab secara spesifik. Intinya, baik MariaDB maupun MySQL, keduanya berasal dari otak yang sama, yaitu Pak Michael "Monty" Widenius. Silahkan cari saja tentang sejarah mariadb.
Menurut saya pribadi. MariaDB dan MySQL itu ibadah urutan nomor 11 dan 13. Hanya saja, si MariaDB tampak-nya lebih open source ketimbang MySQL.
Untuk memasang MariaDB, Anda bisa menggunakan perintah berikut:
$ sudo apt install mariadb-server mariadb-client
Setelah proses pemasangan selesai, Anda disarankan untuk menjalankan skrip keamanan yang sudah terpasang saat Anda memasang MariaDB. Berikut perintahnya:
$ sudo mysql_secure_installation
Sistem akan menampilkan beberapa pertanyaan, Anda cukup ketik "n" atau enter saja. Berikut panduannya.
Enter current password for root (enter for none): <tekan enter>
Set root password? [Y/n] <tekan enter, lalu masukkan sandinya>
Remove anonymous users? [Y/n] <tekan enter>
Disallow root login remotely? [Y/n] <tekan enter>
Remove test database and access to it? [Y/n] <tekan enter>
Reload privilege tables now? [Y/n] <tekan enter>
Bikin pengguna untuk basis data baru
MariaDB secara baku dapat diakses dengan root. Tapi saya sangat tidak merekomendasikan menggunakan pengguna tersebut. Lebih baik, bikin pengguna baru lalu beri dia hak akses penuh ke basis data yang dibuat.
Berikut beberapa perintah yang bisa Anda gunakan. Pertama-tama, silahkan akses MariaDB dengan perintah berikut.
$ sudo mysql
atau
$ sudo mysql -u root -p
Setelah berhasil masuk, silahkan buat basis datanya terlebih dahulu.
> CREATE DATABASE nama_database;
Buat pengguna baru untuk akses khusus ke basis data yang akan digunakan oleh WordPress.
> CREATE USER 'nama_user'@'localhost' IDENTIFIED BY'!nipasswd-nya@';
Beri akses pengguna yang baru dibuat ke basis data yang akan digunakan oleh WordPress.
> GRANT ALL ON nama_database.* TO 'nama_user'@'localhost';
Silahkan keluar dari konsol MaraDB dengan perintah beikut.
> exit;
Pasang SSL dari Let's Encrypt
Pada bagian ini, Anda akan memerlukan bantuan manajer paket snapd untuk memasangnya.
Sebelum lanjut, saya ingin mengingatkan kembali. Bahwa semua langkah-langkah pada tutorial ini dieksekusi di Ubuntu Server 20.04 LTS. Jadi, Anda tidak memerlukan konfigurasi lebih lanjut untuk menggunakan manajer paket snapd.
Jadi, yang perlu Anda lakukan pertama adalah memperbarui manajer paket snapd. Eksekusi perintah berikut.
$ sudo snap refresh core
Sistem akan melakukan pengecekan ke layanan repositori tertentu untuk memeriksa apakah ada daftar paket terbaru, sebelum akhirnya mengunduh dan memasangnya secara otomatis ke sistem Anda.
Jika persiapan ini sudah selesai, mari beranjak ke langkah berikutnya, yaitu memasang Certbot. Sebelum itu, pastikan Anda belum memasang Certbot, ya. Jika Anda sudah memasangnya, Anda bisa mengabaikan langkah pada bagian ini.
Eksekusi perintah berikut untuk memasang Certbot.
$ sudo snap install certbot
Sekilas tentang Certbot. Certbot merupakan perkakas perangkat lunak bebas bersumber terbuka yang bisa Anda manfaatkan untuk membuat sertifikat Let's Encrypt untuk mengaktifan HTTPS di situs web Anda. Certbot dikembangkan oleh organisasi nirlaba yang bernama Electronic Frontier Foundation (EFF).
Oke, kita lanjut. Secara bawaan, Certbot yang dipasang via manajer paket snapd belum bisa langsung dijalankan, Anda perlu membuat symbolic link-nya terlebih dahulu agar Certbot bisa dieksekusi di lingkungan Terminal. Eksekusi perintah berikut.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Sekarang, Certbot sudah bisa diakses di lingkungan Terminal, sekarang, Anda bisa membuat sertifikat SSL Let's Encrypt untuk domain aktif Anda sendiri. Eksekusi perintah berikut.
$ sudo certbot --nginx
Setelah mengeksekusi perintah di atas, Certbot akan meminta Anda untuk memasukkan kontak surel, silahkan diisi dengan surel Anda yang masih aktif. Certbot akan mengirim informasi perpanjangan dan pemberitahuan keamanan melalui surel tersebut. Setelah itu, Anda tinggal mengikuti instruksi yang ditampilkan berikutnya.
Melalui perintah ini juga, Certbot akan membuat perubahan pada konfigurasi blok server situs Anda. Perubahan yang dibuat oleh Certbot bisa Anda lihat di konfigurasi blok server Anda dengan akhiran #managed by Certbot.
Langkah teakhir dari subbab pasang SSL dari Let's Encrypt adalah mengizinkan Certbot untuk memperpanjang sertifikat secara otomatis. Eksekusi perintah berikut.
$ sudo certbot renew --dry-run
Certbot akan berjalan dilatar belakang dan akan memperbarui sertifikat SSL Anda secara otomatis.
Penyelesaian dan Pengujian
Catatan migrasi WordPress dari hosting ke vps ini sudah memasuki tahap akhir. Anda tinggal membutuhkan beberapa langkah lagi untuk mengembalikan aset situs dan data-data dari basis data.
Kita mulai dari mengunggah data-data yang sudah dicadangkan ke vps.
Unggah cadangan data ke server
Sesuai dengan sub bab cadangkan aset situs, ada dua macam data yang sudah saya cadangkan. Data dari aset situs web dan data dari basis data.
Data-data tersebut perlu Anda unggah lagi ke vps Anda. Disini akan saya tunjukkan bagaimana cara mengunggah data dari mesin lokal Anda ke vps dengan bantuan perkakas secure-copy.
Pertama-tama, mari kita mengunggah data aset situs terlebih dahulu. Silahkan eksekusi perintah berikut.
$ scp aset_situs.zip username@192.168.10.1:/home/username
Dari perintah di atas, aset situs sudah saya kompres menjadi berkas zip. Sebenarnya bisa langsung berupa direktori, dengan menambahkan opsi -R setelah perintah scp. Akan tetapi, saya lebih suka dengan mengkompres-nya terlebih dahulu.
Oiya, pada bagian perintah yang dicetak tebal, Anda bisa menyesuaiannya dengan kondisi Anda, ya.
Untuk mengunggah data-data dari cadangan basis data sebelumnya, perintahnya sama dengan perintah di atas. Anda tinggal meyesuaikan nama berkas cadangannya saja.
$ scp cadangan_basisdata.sql username@192.168.10.1:/home/username
Kembalikan data basis data
Cara mengembalikan cadangan basis data bisa dilakukan dengan sangat mudah. Anda tinggal mengeksekusi perintah berikut.
$ sudo mysql -u root -p nama_basisdata < cadangan_basisdata.sql
Anda bisa membaca keterangannya lebih lanjut terkait maksud dari perintah di atas dengan mengunjungi artikel saya yang berjudul backup dan restore basis data di MySQL atau MariaDB.
Kembalikan aset situs
Ekstrak berkas aset_situs.zip dan ubah nama berkasnya menjadi public_html dengan perintah berikut.
$ unzip aset_situs.zip && mv aset_situs public_html
Pindahkan direktori public_html ke /var/www/.
$ sudo mv public_html /var/www/
Terakhir, ubah kepemilikan direktori public_html agar sepenuhnya menjadi www-data dan ubah hak aksesnya menjadi 755.
$ sudo chown -R www-data:www-data /var/www/public_html
$ sudo chmod -R 755 /var/www/public_html
Muat ulang semua layanan
Tiba saatnya untuk mengakhiri rumitnya konfigurasi yang sudah Anda buat. Untuk menerapkan konfigurasi, Anda harus memuat ulang semua layanan yang diperlukan. Eksekusi perintah berikut dan pastikan tidak ada informasi galat yang ditampilkan.
$ sudo systemctl restart nginx php7.4-fpm
Berbeda dengan waktu pemasangannya, untuk memuat ulang PHP-FPM, Anda harus mengetik lengkap dengan versinya. Karena meskipun waktu pemasangan Anda cuman pakai php-fpm saja, sejatinya yang terpasang adalah paket php7.4-fpm. Tergantung sama distro-nya, ya.
Sampai pada langkah ini, proses migrasi WordPress dari mesin hosting ke vps telah selesai dilakukan.
Uji coba
Proses uji coba dilakukan melalui peramban web. Silahkan buka peramban web favorit Anda dan ketikkan alamat situs Anda.
Disini, Anda bisa mengecek ulang apakah semua berjalan dengan normal atau masih ditemukan kendala.
Akhir kata
Akhirnya artikel yang panjang ini berakhir juga. Tadinya, tutorial ini mau saya pisah menjadi beberapa postingan. Hanya saja, saya merasa kurang srek dengan artikel yang dipisah-pisah. Akhirnya saya memutuskan untuk menjadikan satu.
Semoga Anda tidak bosan, ya.
Saya ucapkan terima kasih buat Anda yang membaca sampai bab terakhir ini. Semoga tutorial ini bermanfaat untuk Anda dan orang-orang yang Anda cintai.
Komentar
Posting Komentar
Silahkan tinggalkan komentar Anda di sini.