Kategori
Panduan

Install WordPress di VPS

Cara install WordPress di VPS Ubuntu, menggunakan software NGINX, MariaDB, dan PHP, tanpa panel.

Panduan berbahasa Indonesia paling sederhana dan paling lengkap, bagaimana cara menginstal WordPress terbaru di VPS Ubuntu 22.04 LTS menggunakan NGINX, MariaDB, dan PHP, tanpa panel.

Tutorial ini saya terapkan langsung untuk menginstal blog pribadi ini.

Saya menggunakan laptop dengan sistem operasi Ubuntu Desktop 22.04 LTS untuk mempraktikkan panduan ini. Jadi apabila Anda menggunakan sistem operasi lain, silakan disesuaikan sendiri. Misalnya, kalau menggunakan Windows, Anda bisa menggunakan software PuTTY atau yang mempunyai fitur sejenis untuk mengakses SSH.

1. Deploy VPS baru

Langkah pertama adalah deploy VPS baru. Anda bebas menggunakan provider manapun. Saya pribadi menggunakan VPS dari NEO Lite.

Saya berlangganan paket termurah XS 1.1 dengan harga Rp55.500,00 per bulan, dapat spesifikasi vCPU 1 Core, RAM 1 GB, Storage 60 GB, 1 Public IP, data transfer tidak terbatas dengan bandwidth hingga 1 Gbps. Untuk sistem operasi, saya memilih Ubuntu Server 22.04 LTS.

Untuk user, saya menggunakan nama ajikur karena minimal harus 6 huruf. Untuk login, saya langsung menggunakan SSH key supaya aman dan tidak ribet. Oh iya, di NEO Lite, saya belum bisa menggunakan SSH key yang menggunakan algoritma Ed25519, jadi harus algoritma RSA.

Setelah VPS running, saya mendapatkan alamat IP publik:

103.150.196.60

Buka Terminal, login ke VPS.

ssh ajikur@103.150.196.60

Perbarui dulu software yang sudah terpasang di VPS.

sudo apt update && sudo apt dist-upgrade -y

Restart untuk menerapkan pembaruan.

sudo reboot

Kita akan logout dari VPS karena reboot.

2. Setting domain

Sembari menunggu reboot, saya menyetel domain agar mengarah ke VPS baru. Caranya cukup dengan membuat A record yang mengarah ke alamat IP publik VPS tersebut.

Kebetulan untuk manage domain, saya menggunakan Cloudflare. Meskipun domain saya ekstensi Indonesia ajiksip.web.id, dengan registrar saat ini Rumahweb, saya selalu menggunakan Cloudflare untuk manage DNS. Alasan utama adalah kecepatan propagasi. Bahkan saya selalu menonaktifkan fitur kecepatan dan keamanan Cloudflare, karena yang saya butuhkan hanya manage DNS yang propagasinya cepat.

Login ke Cloudflare. Klik nama domain. Klik menu DNS Records. Buat A record baru untuk root domain (ajiksip.web.id) dan www yang mengarah ke alamat IP publik VPS. Jangan lupa proxynya dinonaktifkan agar tetap DNS only, demi kelancaran proses request sertifikat SSL.

Kira-kira seperti ini hasilnya.

TypeNameContentProxy statusTTL
Aajiksip.web.id103.150.196.60DNS onlyAuto
Awww103.150.196.60DNS onlyAuto

Setting domain selesai.

3. Install software

Kembali ke Terminal, login lagi ke VPS.

ssh ajikur@103.150.196.60

Install semua software yang dibutuhkan untuk menjalankan WordPress, termasuk NGINX web server, MariaDB database server, dan modul-modul PHP rekomendasi WordPress.

Saya menginstal versi standar yang tersedia di repository Ubuntu 22.04 LTS. Meskipun bukan yang terbaru, tapi stabil, tidak ketinggalan jauh, dan siap digunakan untuk lingkungan production.

sudo apt install nginx mariadb-server php-fpm php-gd php-mysql php-curl php-xml php-imagick php-mbstring php-zip php-intl

Versi default yang terpasang adalah NGINX 1.18.0, MariaDB 10.6.11, dan PHP 8.1.2 saat saya menulis pos ini.

Saya juga memasang Certbot yang nanti digunakan untuk mengaktifkan HTTPS secara otomatis.

sudo snap install --classic certbot

4. Setting MariaDB

Jalankan setup otomatis MariaDB agar siap digunakan untuk environment production.

sudo mysql_secure_installation

Akan muncul 7 pertanyaan:

  1. Enter current password for root, langsung tekan Enter
  2. Switch to unix_socket authentication, jawan n, tekan Enter
  3. Change the root password, jawab n, tekan Enter
  4. Remove anonymous users, jawab y, tekan Enter
  5. Disallow root login remotely, jawab y, tekan Enter
  6. Remove test database and access to it, jawab y, tekan Enter
  7. Reload privilege tables now, jawab y, tekan Enter

Setelah MariaDB siap, saatnya membuat database untuk WordPress. Masuk ke console MariaDB.

sudo mariadb

Saya membuat database baru dengan nama ajiksipwebid sesuai dengan domain blog. Lebih mudah mengelolanya jika akan menggunakan lebih dari satu domain di satu VPS.

CREATE DATABASE ajiksipwebid;

Buat user baru dengan nama yang sama dengan database untuk memudahkan pengelolaan, saya pakai nama yang sama ajiksipwebid.

Pastikan menggunakan kata sandi yang sangat kuat. Saya sendiri menggunakan karakter campuran acak dengan jumlah digit lebih dari 15. Tidak perlu dihafal karena jarang digunakan, paling hanya saat setup atau backup saja, yang penting dicatat.

CREATE USER ajiksipwebid@localhost IDENTIFIED BY 'YS/udXr;7|oYUZR&4Zbl';

Berikan privilege kepada user ajiksipwebid untuk mengelola database ajiksipwebid.

GRANT ALL PRIVILEGES ON ajiksipwebid.* to ajiksipwebid@localhost;

Reload database.

FLUSH PRIVILEGES;

Keluar dari console MariaDB.

exit

5. Setting awal NGINX

Langkah kelima adalah setting awal NGINX. Saya membuat konfigurasi baru bernama ajiksip.web.id sesuai domain, lagi untuk memudahkan pengelolaan apabila ingin host lebih dari satu domain di satu VPS.

sudo nano /etc/nginx/sites-available/ajiksip.web.id

Isi dengan konfigurasi awal ini.

server {
	listen 80;
	root /var/www/ajiksip.web.id;
	index index.php;
	server_name ajiksip.web.id www.ajiksip.web.id;

	location / {
		try_files $uri $uri/ /index.php?$args;
	}

	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        }
}

Simpan dengan Ctrl+S, tutup dengan Ctrl+X.

Buat link ke folder sites-enabled untuk mengaktifkan konfigurasi baru ini.

sudo ln -s /etc/nginx/sites-available/ajiksip.web.id /etc/nginx/sites-enabled/

Sekarang buat folder baru untuk menyimpan blog WordPress. Di setting NGINX di atas, saya sudah menyetel root di /var/www/ajiksip.web.id. Jadi buat folder tersebut (lagi, saya namai domain supaya lebih mudah pengelolaannya)

sudo mkdir /var/www/ajiksip.web.id

Download WordPress terbaru.

wget https://wordpress.org/latest.tar.gz

Ekstrak ke dalam folder yang baru saja dibuat.

sudo tar xf latest.tar.gz --strip-components 1 --directory=/var/www/ajiksip.web.id

Ubah ownernya ke www-data supaya NGINX bisa menulis ke dalam folder tersebut, untuk kelancaran proses install, update, install theme, install plugin, backup, dll.

sudo chown www-data:www-data -R /var/www/ajiksip.web.id

Restart semua software untuk memutakhirkan konfigurasi dan menerapkan setting baru.

sudo systemctl restart nginx mariadb php8.1-fpm

Sampai di tahap ini, blog WordPress sudah bisa diakses. Kalau URL blog dibuka di browser, akan muncul halaman setup WordPress. Tapi jangan dilanjutkan dulu karena belum secure.

6. Setting HTTPS

Langkah selanjutnya adalah menyetel HTTPS agar blog lebih aman dan lebih dipercaya pengunjung baik bot maupun manusia. Untuk urusan ini, saya menggunakan bantuan Certbot.

sudo certbot --nginx

Akan muncul 4 pertanyaan:

  1. Enter email address, tulis alamat email, tekan Enter
  2. Please read the Terms of Service, jawab y, tekan Enter
  3. Would you be willing to share your email address with the Electronic Frontier Foundation, jawab y, tekan Enter
  4. Which names would you like to activate HTTPS for, ketik nomor urut domain yang ingin diaktifkan HTTPS nya, tekan Enter

Certbot akan request sertifikat SSL ke Let’s Encrypt untuk domain yang dipilih di pertanyaan 4 di atas dan otomatis membuatkan konfigurasinya di NGINX.

Tapi saya mengubah sedikit konfigurasi NGINX nya.

sudo nano /etc/nginx/sites-available/ajiksip.web.id

Saya ubah menjadi seperti ini:

server {
	listen 80;
	server_name ajiksip.web.id www.ajiksip.web.id;
	return 301 https://ajiksip.web.id$request_uri;
}

server {
	server_name www.ajiksip.web.id;	
	return 301 https://ajiksip.web.id$request_uri;
	listen 443 ssl http2;
	ssl_certificate /etc/letsencrypt/live/ajiksip.web.id/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/ajiksip.web.id/privkey.pem;
	include /etc/letsencrypt/options-ssl-nginx.conf;
	ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

server {
	root /var/www/ajiksip.web.id;
	index index.php;
	server_name ajiksip.web.id;
	
	location / {
		try_files $uri $uri/ /index.php?$args;
	}
	
	location ~ \.php$ {
		include snippets/fastcgi-php.conf;
		fastcgi_pass unix:/run/php/php8.1-fpm.sock;
	}

	listen 443 ssl http2;
	ssl_certificate /etc/letsencrypt/live/ajiksip.web.id/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/ajiksip.web.id/privkey.pem;
	include /etc/letsencrypt/options-ssl-nginx.conf;
	ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

Sedikit penjelasan untuk konfigurasi NGINX yang saya gunakan. Ada 3 blok server utama.

Blok server pertama adalah untuk mengarahkan semua lalu lintas http ke https://ajiksip.web.id.

Blok server kedua adalah untuk mengarahkan lalu lintas https://www.ajiksip.web.id ke https://ajiksip.web.id. Dari www ke non www. Kenapa? Karena domain saya bekas Blogger yang URL nya pakai www, sekarang saya inginnya tanpa www, jadi perlu redirection.

Blok server ketiga adalah yang utama, hampir mirip seperti konfigurasi awal, tapi sekarang ditambah blok sertifikat ssl yang tadi dibuat otomatis oleh Certbot, dan hanya untuk domain ajiksip.web.id saja.

Simpan dengan Ctrl+S, tutup dengan Ctrl+X.

Kalau Anda install situs baru, bukan pindahan dari platform blog lain, tidak perlu blok server kedua. Mungkin cukup satu blok server untuk redirect http dan www ke non www (atau sebaliknya), dan blok server utama.

Restart semua untuk menerapkan pembaruan konfigurasi.

sudo systemctl restart nginx mariadb php8.1-fpm

7. Install WordPress

Langkah terakhir adalah install WordPress.

Buka URL blog di browser. Akan muncul halaman yang sama, WordPress installation, namun kali ini sudah HTTPS. Proses instalasi bisa dilanjutkan dengan aman.

Pilih Bahasa Indonesia, klik tombol Lanjutkan.

Selamat datang di WordPress, klik tombol Ayo!

Masukkan nama basis data ajiksipwebid, nama pengguna ajiksipwebid, dan sandi YS/udXr;7|oYUZR&4Zbl sesuai dengan yang tadi dibuat di MariaDB. Host dan prefiks biarkan apa adanya. Klik tombol Kirim.

Ok sobat! Anda telah berhasil melewati bagian instalasi ini. Klik tombol Jalankan pemasangan.

Isi Judul Situs, Nama Pengguna dan Sandi untuk login ke dasbor WordPress, Email Anda. Klik tombol Instal WordPress.

Berhasil! Klik tombol Log Masuk untuk login ke dasbor WordPress.

Ketik nama pengguna dan sandi yang barusan dibuat, klik tombol Log Masuk.

Anda akan masuk di dasbor WordPress.

Sampai di tahap ini, proses install WordPress di VPS telah selesai.

Penutup

Demikian panduan install WordPress di VPS Ubuntu menggunakan NGINX, MariaDB, dan PHP versi standar dari repository Ubuntu 22.04 LTS, tanpa panel.

Sebagai catatan bahwa panduan ini masih basic, masih sangat dasar sekali, sekadar agar WordPress bisa running dengan lancar (sudah bisa setting, posting, install theme, install plugin, dll) dan dengan keamanan yang ala kadarnya (setidaknya menggunakan kata sandi yang kuat dan HTTPS aktif).

Di tulisan selanjutnya, saya akan membahas tentang bagaimana cara meningkatkan keamanan dan kecepatan WordPress di VPS. Tentu saja dengan mempraktikkannya langsung di blog pribadi ini.

Semoga bermanfaat.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *