Cara Install Wordpress di VPS Ubuntu 24.04
Cara menginstall WordPress di VPS memang tidak semudah menginstall di webhosting. Hal ini dikarenakan pada webhosting kita tidak perlu pusing untuk menginstall dan mengatur aplikasi-aplikasi server seperti pada VPS. Selain itu, pada webhosting sudah tersedia cPanel yang sangat memudahkan kita untuk install WordPress.
Namun, jika kita bisa menggunakan VPS kita akan mendapatkan berbagai keuntungan dibandingkan webhosting. Misalnya kemampuan menghandle visitor website yang tinggi dengan biaya murah, bisa mengimplementasikan teknologi web terbaru yang belum tentu ada pada hosting dan keunggulan lainnya. Oleh karena itu, artikel ini saya buat untuk mempermudah anda dalam memanfaatkan VPS dengan materi yang sebisa mungkin mudah dipahami, lengkap mulai dari Nol, terperinci dan bisa langsung dipraktikkan.
Tidak hanya menginstall atau “asal jalan” saja. Kita akan mengoptimisasi server agar performa website cepat dan mampu menghandle banyak pengunjung. Tentunya kita juga akan mengimplementasikan teknologi terbaru seperti HTTPS dengan SSL Let’s Encrypt, HTTP/2, PHP8.3, TLSv1.3 dan keamanan ciphers terbaru.
Pada tutorial ini kita akan menggunakan Ubuntu server 24.04 LTS sebagai sistem operasinya karena selalu mendapatkan update lebih cepat dibanding lainnya. Nginx sebagai webservernya karena lebih ringan dibanding Apache2. PHP8.3-fpm sebagai server PHP karena sangat cepat. Dan MariaDB sebagai MySQL servernya karena berkomitmen untuk selalu menjadi opensource.
Sepertinya saya terlalu panjang menyampaikan informasi pembuka di atas. Namun menurut saya hal di atas sangat penting untuk diketahui. Sebelum install WordPress di VPS, ada beberapa prasyarat yang harus kita lakukan.
Prasyarat:
- Sudah melakukan instalasi server Ubuntu. Silahkan baca tutorial cara install Ubuntu Server 24.04 di VPS.
- Telah melakukan konfigurasi awal server Ubuntu. Silahkan simak panduan pengaturan awal Ubuntu Server 24.04.
- Sudah memiliki domain. Anda dapat membelinya di penyedia domain kesayangan anda.
- Telah menghubungkan domain tersebut ke VPS. Rekomendasi saya menggunakan Cloudflare. Silahkan baca tutorial saya tentang menghubungkan domain ke server dengan DNS Cloudflare.
- Sudah menginstall Nginx, MariaDB dan PHP8.3. Silahkan baca tutorialnya pada materi instalasi web server Nginx, MariaDB, PHP (LEMP) di Ubuntu 24.04.
- Telah menginstall Certbot untuk request SSL dari Let’s Encrypt. Ini digunakan untuk membuat website HTTPS. Silahkan baca tutorialnya tentang instalasi SSL Let’s Encrypt untuk Nginx di Ubuntu 20.04.
Berikut ini adalah cara install WordPress di VPS Ubuntu Server 24.04 LTS.
1. Buat Database untuk Website WordPress
Login ke server melalui SSH lalu akses mysql dengan perintah:
$ sudo mysql
Buat database dengan format perintah sql CREATE DATABASE nama_database_baru CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Contohnya jika nama databasenya adalah db_wp
maka perintahnya adalah:
mysql> CREATE DATABASE db_wp CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Buat user database baru beserta passwordnya dan beri akses pada database yang telah dibuat dengan format perintah GRANT ALL ON nama_database_baru.* TO 'nama_user_database_baru'@'localhost' IDENTIFIED BY 'password_user_database_baru';
Contoh dengan nama user databasenya adalah user_wp
dan passwordnya adalah iniP@sswordS4y4yayaya
maka perintah sqlnya adalah:
mysql> GRANT ALL ON db_wp.* TO 'user_wp'@'localhost' IDENTIFIED BY 'iniP@sswordS4y4yayaya';
Lakukan flush pada sql agar server mereload ulang hak akses terbaru:
mysql> FLUSH PRIVILEGES;
Tutup mysql dengan perintah:
mysql> EXIT;
Ingat-ingat nama database, user database dan password yang telah kita buat tadi karena nanti akan digunakan saat proses install wordpress.
2. Install Semua Ekstensi PHP yang dibutuhkan Oleh WordPress
Perbarui database repositori terbaru menggunakan perintah:
$ sudo apt update
Install ekstensi-ektensi PHP yang dibutuhkan:
$
sudo apt -y install php8.3-xml php8.3-xmlrpc php8.3-curl php8.3-common php8.3-gd php8.3-mbstring php8.3-soap php8.3-intl php8.3-zip php8.3-bz2
Restart PHP server melalui perintah:
$ sudo systemctl restart php8.3-fpm
3. Buat Konfigurasi Snippet Nginx untuk Keamanan WordPress
Buat file dengan nama wordpress-security.conf di direktori snippets:
$ sudo nano /etc/nginx/snippets/wordpress-security.conf
Masukkan konfigurasi di bawah ini:
#untuk block semua akses ke file tersembunyi location ~ ^/\. { deny all; access_log off; log_not_found off; } #untuk block semua akses ke file upload php location ~* /(?:uploads|files)/.*\.php$ { deny all; access_log off; log_not_found off; }
Simpan lalu tutup file di atas.
Penjelasan: Fungsi konfigurasi di atas adalah untuk block akses ke file-file penting yang harusnya tidak boleh diakses oleh pengunjung website kita.
Buat file konfigurasi untuk kompres gzip di direktori snippets:
$ sudo nano /etc/nginx/snippets/gzip.conf
Masukkan konfigurasi di bawah ini:
gzip on; gzip_vary on; gzip_comp_level 6; gzip_types text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript text/plain image/x-icon;
Simpan lalu tutup file di atas.
Buat konfigurasi untuk cache static files pada direktori snippets:
$ sudo nano /etc/nginx/snippets/cache-staticfiles.conf
Masukkan kode ini:
location ~* \.(css|js|png|jpg|jpeg|gif|ico|webp|ttf|ttc|eot|woff|woff2|otf|svg)$ { expires 31d; log_not_found off; access_log off; }
Simpan dan tutup file tersebut.
4. Ubah Konfigurasi Server Block pada Nginx
Yang dimaksud dengan server block adalah block konfigurasi yang dibuka dengan kata server
kemudian diikuti dengan kurung buka {
dan diakhiri dengan kurung tutup }
misalnya server { ..... }
.
Buka file konfigurasi server block website di direktori /etc/nginx/sites-available/
yang pernah kita buat saat melakukan tutorial SSL Let’s Encrypt.
$ sudo nano /etc/nginx/sites-available/itkoding.com
Di sana ada 2 server blocks yaitu block untuk HTTP ditandai dengan listen 80
dan block untuk HTTPS yang ditandai dengan listen 443
. Include semua file yang telah kita buat pada langkah 3 ke dalam server block HTTPS (listen 443) agar pengaturan kita aktif pada website. Letakkan pada bagian paling bawah block konfigurasi sebelum tanda penutup akhir }
.
server { listen 443 ssl http2; ... include /etc/nginx/snippets/wordpress-security.conf; include /etc/nginx/snippets/gzip.conf; include /etc/nginx/snippets/cache-staticfiles.conf; }
Hapus non-www domain pada server_name
server block 443 tersebut dan sisakan www misalnya:
server_name itkoding.com www.itkoding.com;
menjadi:
server_name www.itkoding.com;
Simpan file tersebut lalu tutup.
Mengapa kita perlu melakukan hal di atas. Karena kita hanya akan menaruh wordpress pada HTTPS www saja misalnya https://www.itkoding.com
. Sedangkan untuk HTTPS non-www https://itkoding.com
hanya akan kita redirect 301 (alihkan) ke website HTTPS www kita. Begitu juga server block HTTP (http://www.itkoding.com
dan http://itkoding.com
), kita akan redirect (alihkan) semua pengunjung yang mengakses website HTTP tersebut menuju ke website HTTPS www.
Hal tersebut sangat disarankan untuk menghindari website duplikat pada server kita. Oleh karena itu kita perlu mengatur redirect pada server block.
5. Atur Redirect pada Server Block Nginx
Buka file server block website kita lagi:
$ sudo nano /etc/nginx/sites-available/itkoding.com
Ubah semua konfigurasi yang ada di dalam server block HTTP (listen 80) untuk mengaktifkan redirect. Silahkan sesuaikan dengan nama domain anda:
server { listen 80; server_name itkoding.com www.itkoding.com; return 301 https://www.itkoding.com$request_uri; }
Kode di atas berarti semua pengunjung website yang mengakses website HTTP akan dialihkan ke HTTPS www secara otomatis. Return 301 berarti dialihkan secara permanent.
Buat lagi server block HTTPS di bagian paling bawah file untuk mengalihkan website HTTPS non-www ke HTTPS www:
server { listen 443 ssl http2; server_name itkoding.com; return 301 https://www.itkoding.com$request_uri; add_header Strict-Transport-Security "max-age=31536000"; ssl_trusted_certificate /etc/letsencrypt/live/itkoding.com/chain.pem; ssl_certificate /etc/letsencrypt/live/itkoding.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/itkoding.com/privkey.pem; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; }
Simpan lalu tutup file tersebut.
Dengan demikian pada file /etc/nginx/sites-available/itkoding.com
terdapat 3 server block. Yaitu 1 buah server block HTTP dan 2 buah server block HTTPS.
Bagaimana? Bingung?
Agar tidak bingung berikut ini saya kasih contoh full isi dari file server block website di /etc/nginx/sites-available/itkoding.com
dari gabungan langkah 4 dan langkah 5 di atas. Silahkan sesuaikan dengan domain anda:
server { listen 80; server_name itkoding.com www.itkoding.com; return 301 https://www.itkoding.com$request_uri; } server { listen 443 ssl http2; root /var/www/itkoding; index index.php index.html index.htm index.nginx-debian.html; server_name www.itkoding.com; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include /etc/nginx/snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; } access_log /var/log/nginx/itkoding_com_access.log; error_log /var/log/nginx/itkoding_com_error.log; add_header Strict-Transport-Security "max-age=31536000"; ssl_trusted_certificate /etc/letsencrypt/live/itkoding.com/chain.pem; ssl_certificate /etc/letsencrypt/live/itkoding.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/itkoding.com/privkey.pem; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; include /etc/nginx/snippets/wordpress-security.conf; include /etc/nginx/snippets/gzip.conf; include /etc/nginx/snippets/cache-staticfiles.conf; } server { listen 443 ssl http2; server_name itkoding.com; return 301 https://www.itkoding.com$request_uri; add_header Strict-Transport-Security "max-age=31536000"; ssl_trusted_certificate /etc/letsencrypt/live/itkoding.com/chain.pem; ssl_certificate /etc/letsencrypt/live/itkoding.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/itkoding.com/privkey.pem; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; }
Setelah konfigurasi server block website selesai. Lakukan reload pada Nginx agar diterapkan pada web server.
$ sudo systemctl reload nginx
6. Unduh WordPress Dari Situs Resmi pada VPS atau Server
Masuk ke root direktori website kita sesuai konfigurasi server block yang ditujukkan pada baris root /var/www/itkoding;
artinya kita harus meletakkan file wordpress kita di direktori /var/www/itkoding.
$ cd /var/www/itkoding
Hapus semua file PHP yang pernah kita buat pada direktori tersebut:
$ sudo rm *.php
Unduh file WordPress pada folder tersebut:
$ sudo wget https://wordpress.org/latest.zip
Ektrak file zip yang telah kita unduh:
$ sudo unzip latest.zip
Hapus file zip wordpress:
$ sudo rm latest.zip
Masuk ke direktori hasil unzip file:
$ cd wordpress
Karena hasil unzip berada di dalam direktori wordpress (/var/www/itkoding/wordpress
) maka kita harus memindahkan ke direktori sebelumnya yaitu /var/www/itkoding
dengan cara:
$ sudo mv * ../
Arti dari perintah di atas adalah pindahkan semua file ke direktori 1 level di atas direktori kita berada. Maka direktori wordpress akan kosong.
Kembali ke direktori sebelumnya:
$ cd ../
Hapus direktori wordpress yang sudah kosong:
$ sudo rm -rf wordpress/
Kembali ke directory www:
$ cd ../
Ubah hak hak akses dan kepemilikan direktori website kita awalnya dari dimiliki oleh root:root
menjadi www-data:www-data
agar bisa diakses secara penuh oleh web server Nginx dan php8.3-fpm. Perintahnya adalah:
$ sudo chown www-data:www-data -R itkoding
7. Install WordPress Melalui Browser
Pada langkah ini kita sudah bisa mengakses website yang telah kita bangun melalui internet browser seperti Chrome, Mozilla, Safari dan lainnya. Dengan mengetikkan nama domain kita pada browser maka kita akan langsung diarahkan ke tampilan instalasi wordpress yang diawali dengan pemilihan bahasa.
Buka Google Chrome. Ketikkan nama domain kita misalnya itkoding.com
lalu tekan Enter. Maka akan ada tampilan pemilihan bahasa. Pilih sesuai selera. Kalau saya akan pilih English (United States). Anda bisa pilih Bahasa Indonesia atau bahasa lainnya. Klik Continue.
Selanjutnya akan ada tampilan Welcome to WordPress. Klik Let’s go!
Lalu ada tampilan form konfigurasi database. Ingat! Kita telah membuatnya pada langkah 1. Jadi gunakan nama, user dan password database yang telah kita buat pada langkah 1!
Masukkan nama database pada Database name, user database pada username dan password database pada password. Jangan ubah kolom isian lainnya. Lalu klik Submit.
Jika konfigurasi sudah benar akan ada pesan bahwa sistem berhasil berkomunikasi dengan database. Klik Run the installation.
Masukkan judul website sesuai keinginan anda pada kolom Site Title. Masukkan username untuk login ke website sesuai keinginan anda. Lalu ketik juga password untuk login nantinya pada kolom password. Jika password anda lemah biasanya ada konfirmasi bahwa password lemah. Silahkan centang. Lalu masukkan email anda pada kolom Your Email. Tapi, jangan centang opsi Search Engine Visibility karena jika mencentangnya web anda tidak akan tampil di Google. Lalu klik Install WordPress.
Nah, WordPress terbaru sudah siap digunakan anda dapat login ke dashboard di alamat namadomainanda/wp-admin
untuk melakukan pengaturan website atau membuat post.
Penutup
Ternyata cukup panjang juga ya proses membangun server dan install wordpress pada VPS. Dengan konfigurasi di atas dan template default wordpress saya mendapatkan nilai yang cukup tinggi pada Google Pagespeed Insights. Ini menandakan website tersebut cukup cepat.
Tidak hanya itu, saya juga mendapatkan skor A+ pada ssllabs yang artinya keamanan HTTPS kita sangat baik dan mengimplementasikan teknologi SSL terbaru. Jika ada yang sulit dipahami mohon untuk kirim komentar agar saya bisa memperbaikinya dan mudah dipahami.