Selain menggunakan metode tradisional, yaitu LAMP (Linux, Apache, MySQL, PHP) atau LEMP (Linux, Nginx, MySQL, PHP). Kita juga dapat menggunakan metode lain, yaitu menjadikan server MySQL sebagai database remote.

Konsep konfigurasi ini yaitu menyiapkan dua server yang akan digunakan untuk web server dan database. Ada beberapa kelebihan dan kekurangan menggunakan konsep konfigurasi ini.

Beberapa kelebihannya yaitu:

  • Performa website lebih meningkat karena server web server dan database terpisah, sehingga beban server terbagi dua dan dijalankan secara mandiri.
  • Meminimalisir terjadinya kerusakan di sisi server ketika ada serangan siber seperti DDoS atau flood server.
  • Bebas menentukan konfigurasi yang berbeda untuk web server dan database server, misalnya kita menggunakan spesifikasi server AWS t4.micro untuk web server, sedangkan untuk database server kita menggunakan t3.nano. Sehingga kita dapat menentukan spesifikasi yang tepat untuk server kita.
  • Beban server menjadi berkurang karena server database hanya menangani olah data sedangkan web server hanya menangani lalu lintas web, sehingga menjadikan website kita berjalan cepat dan ringan.

Sedangkan beberapa kekurangan dari konsep ini yaitu:

  • Biaya operasional menjadi besar apabila tidak dipersiapkan dengan baik, karena harus menyiapkan dua server. Sehingga biaya tagihan membengkak.
  • Perlu keahlian teknis untuk melakukan konfigurasi pada dua server, serta memiliki pengetahuan yang cukup dalam dunia komputer. Hal ini sangat berguna untuk menentukan spesifikasi server yang akan digunakan sehingga dapat menekan biaya operasional.
  • Metode ini menjadi tidak berguna apabila administrator tidak memiliki keahlian dalam menyiapkan dan mengelola server dengan baik.

Dibalik kelebihan dan kekurangan diatas, tentunya metode ini masih sangat relevan dengan perkembangan teknologi saat ini, terutama untuk mendapatkan website yang ringan dan cepat (walapun ada beberapa faktor lain seperti penggunaan tema dan jumlah plugin, namun hosting dan metode penyiapan server menjadi salah satu faktornya). Hal ini dapat dilihat dari artikel yang diterbitkan oleh GraviteDesign yang menyebutkan bahwa server mempengaruhi kecepatan website.

Uji Coba

Setelah kita mengetahui kelebihan dan kekurangan konsep WordPress dengan remote database, kita akan mengujinya di AWS dengan menggunakan dua instance di region Australia. Anda dapat mencobanya menggunakan penyedia layanan lain seperti Google Cloud, OVH, Linode dan lainnya.

Sebelum Memulai

  • Tutorial ini menggunakan dua server AWS di region yang sama (Sydney/ap-southeast-2), penggunaan region berbeda mungkin saja dilakukan, namun kami tidak menjamin performanya karena jarak kedua server tersebut.
  • Tutorial ini akan menggunakan stack LAMP (Linux, Apache, MariaDB, PHP).
  • Kedua server menggunakan sistem operasi yang sama (Ubuntu 22.04 LTS).
  • Semua paket pada kedua server telah diperbarui.

Variabel Yang Digunakan

  • database-server: Server yang digunakan untuk database.
  • web-server: Server yang digunakan untuk WordPress.
  • example.com: Nama domain yang sepenuhnya memenuhi syarat (FQDN) atau alamat IP statis web-server yang telah disiapkan sebelumnya.
  • wpdb: Nama database.
  • wpuser: Nama pengguna untuk database wordpress.
  • password: Kata sandi untuk MariaDB dan database wordpress.
  • 172.31.20.219: IP private web.
  • 172.31.25.83: IP private database.
  • ubuntu: Pengguna sudo non-root lokal.
  • 13.236.250.97: FQDN atau IP server web.

Langkah Penyiapan

Pertama-tama, kita akan menyiapkan dua instance dengan spesifikasi t4.micro untuk web server dan t3.nano untuk server database.

959e8525

Setelah membuat dua server seperti pada gambar diatas, langkah selanjutnya yaitu membuat IP statis (AWS menyebutnya elastic IP, namun fungsinya sama saja dengan IP statis).

⚠️ Info
IP statis memungkinkan instance tetap menggunakan IP yang sama ketika instance di muat ulang atau di stop.

Untuk web-server, kita akan gunakan IP statis 13.236.250.97, sedangkan untuk database-server yaitu IP 3.24.175.76.

6aa4bdd1

Setelah menyetel IP statis untuk kedua server, langkah selanjutnya menyiapkan web server dan database server.

Jangan lupa membuka port 3306 pada masing-masing Security Group agar MySQL dapat diakses secara remote.

Instalasi Web Server

Karena kita menggunakan metode LAMP, kita akan menyiapkan Apache, PHP dan phpMyAdmin untuk mengelola dabatase pada server kita yang nantinya akan berperan sebagai web server.

⚠️ Info
phpMyAdmin dipasang di web server sebagai antarmuka untuk mengelola database, sedangkan semua data yang ada pada database tetap berada di database-server.

Instalasi Apache

Untuk menginstal Apache, lakukan perintah sudo apt install apache2 dan tunggu sampai selesai.

00ade69a

Setelah instalasi Apache selesai, cek apakah servis Apache sudah berjalan atau belum dengan cara membuka IP server di browser.

6cd351f0

Apabila browser menampilkan halaman seperti diatas, artinya Apache sudah terpasang dan berjalan dengan baik.

Instalasi PHP

Setelah instalasi Apache, selanjutnya kita akan menginstal PHP versi 7.4, karena merupakan versi yang tersedia di Ubuntu tanpa harus menggunakan repositori tambahan.

Lakukan perintah sudo apt install php dan modul-modul yang diperlukan seperti php-bcmath php-curl php-imagick php-intl php-json php-mbstring php-mysql php-xml php-zip. Jadi perintah lengkapnya seperti ini:

sudo apt install php php-bcmath php-curl php-imagick php-intl php-json php-mbstring php-mysql php-xml php-zip

Instalasi Database Server

Setelah menginstal kedua software diatas, langkah selanjutnya kita akan menginstal MariaDB pada server database.

  1. Instalasi MariaDB
    Gunakan perintah sudo apt install mariadb-server untuk mulai instalasi, tunggu sampai instalasi selesai.
  2. Selesaikan instalasi menggunakan perintah sudo mysql_secure_installation untuk menetapkan password root dan menghapus service yang tidak digunakan. Ikuti perintah yang muncul di layar.
  3. Terima koneksi remote
    Ubah bagian bind-address pada file 50-server.cnf dan tambahkan IP private web-server agar MariaDB dapat menerima koneksi remote:
    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
    | bind-address = 172.31.25.83
  4. Restart service MariaDB dan izinkan koneksi ke port 3306 melalui firewall lanjutkan ke langkah berikutnya. Konfigurasi melalui Firewall (misalnya ufw) tidak berlaku ketika menggunakan layanan AWS, karena kita dapat membuka dan menutup port pada Security Group.
    sudo systemctl restart mysql
  5. Masuk ke MariaDB sebagai root, buat database dan pengguna remote dan berikan akses ke database. Jangan lupa untuk mengubah IP 172.31.20.219 dengan IP private web-server Anda.
    sudo mysql -u root -p
    CREATE DATABASE wpdb;
    CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'localhost';
    CREATE USER 'wpuser'@'172.31.20.219' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON wpdb.* TO 'wpuser'@'172.31.20.219';
    FLUSH PRIVILEGES;
    exit

Mengakses Remote Database dari Web Server

Setelah melakukan penyiapan baik server, konfigurasi port maupun software, langkah selanjutnya yaitu menguji coba koneksi remote database yang telah dibuat sebelumnya.

Untuk melakukan koneksi remote database, lakukan langkah-langkah dibawah ini:

  1. Pasang modul PHP-MySQL sebagai jembatan antara web-server dan database-server, sehingga keduanya saling terhubung.
    sudo apt update && sudo apt install mariadb-client php-mysql
  2. Uji coba remote login menggunakan username dan password yang telah dibuat tadi, gunakan IP private database-server 172.31.25.83.
    mysql -u wpuser -h 172.31.25.83 -p
  3. Apabila telah berhasil masuk, sistem akan menampilkan konsol MySQL seperti gambar dibawah ini:
    dd7a2bdc
  4. Untuk mengetahui status koneksi yang sedang terhubung, ketik status dan akan tampil informasi seperti dibawah ini:
    10ad05a3

Apabila empat langkah diatas telah berhasil dilakukan, artinya remote database telah berhasil dibuat dan terhubung dengan baik, langkah selanjutnya yaitu menginstal WordPress di web-server.

Instalasi WordPress

  1. Unduh WordPress terbaru menggunakan perintah wget https://wordpress.org/latest.zip.
  2. Kemudian ekstrak file latest.zip dengan perintah unzip latest.zip.
  3. Salin ke direktori html menggunakan perintah sudo cp -R wordpress/* /var/www/html/.
  4. Ubah kepemilikan direktori www dari root ke www-data (apache) dengan perintah sudo chown -R www-data:www-data html.
  5. Ubah permission untuk file dan direktori yang ada di dalam direktori html:
    find . -type d -exec chmod 755 {} \; #Mengubah permission direktori ke rwxr-xr-x
    find . -type f -exec chmod 644 {} \; #Mengubah permission file ke rw-r–r–
  6. Edit file wp-config.php dan isi seperti dibawah ini:
    /** The name of the database for WordPress */
    define('DB_NAME','wpdb');

    /** MySQL database username */
    define('DB_USER', 'wpuser');

    /** MySQL database password */
    define('DB_PASSWORD', 'password');

    /** MySQL hostname */
    define('DB_HOST', '172.31.25.83');
  7. Buka IP publik web-server 13.236.250.97 di browser.
    screen shot 2022 06 30 at 07.09.18

    085f2919

Instalasi phpMyAdmin

Untuk mengelola database, kita dapat menggunakan phpMyAdmin yang konfigurasinya sedikit di modifikasi agar dapat mengelola remote database. Sebelumnya, pasang terlebih dahulu phpMyAdmin, gunakan perintah sudo apt install phpmyadmin dan tunggu sampai instalasi selesai. Ikuti petunjuk yang ada di layar, pilih server Apache2 pada pemilihan server seperti gambar dibawah ini karena kita menggunakan web server Apache.

2a6cd625

Apabila sistem meminta password root MySQL, masukkan kata sandi yang digunakan di database-server.

Setelah instalasi selesai, ubah konfigurasi phpMyAdmin dengan menambahkan baris dibawah ini pada file /etc/phpmyadmin/config.inc.php:

$i++;
$cfg['Servers'][$i]['host'] = '172.31.25.83:3306';
$cfg['Servers'][$i]['user'] = 'wpuser';
$cfg['Servers'][$i]['password'] = 'password';
$cfg['Servers'][$i]['auth_type'] = 'config';

Simpan, dan coba buka phpMyAdmin di browser.

94773fd6

Masuk menggunakan username dan password yang telah dibuat di konsol MariaDB, kemudian login ke phpMyAdmin.

70047e19

phpMyAdmin berhasil mengakses remote database dan berjalan dengan baik.

Penutup

Dengan menggunakan dua server yang berbeda, kita dapat menyesuaikan spesifikasi untuk masing-masing server, serta kedua server memiliki beban kerja masing-masing dan tentunya tidak saling mengganggu satu sama lain. Ini karena kedua server tadi bekerja secara terpisah, sehingga pengelolaan database dan web server dilakukan terpisah.

Tertarik mencoba remote database untuk proyek Anda selanjutnya?