Konfigurasi Server untuk wordpress pada Ubuntu 18.04 dengan PHP 7.2, Nginx, dan MariaDB

Tutorial membangun Virtual Private Server dengan layanan dari Digital ocean untuk keperluan wordpress tanpa panel (server anda akan langsung diisi dengan wordpress self-hosted setelah selesai nantinya). Lebih dulu, jika belum memiliki akun Digital Ocean silahkan daftar dengan menggunakan link refferal ini dan dapatkan $50 untuk saldo belanja droplet untuk 30 hari. Hal yang perlu anda ketahui saat membuat droplet baru:

  • Image, sistem Operasi (OS, Operation System) : pada konfigurasi kali ini kita menggunakan Linux Ubuntu versi 18.04
  • Plan, perencanaan pembangunan server : pada tahap awal khususnya jika anda hanya ingin mengetes konfigurasi ini dulu saja sebaiknya gunakan yang standard dan yang paling kecil dulu, Digital Ocean memiliki pilihan $5/bulan (dengan saldo dari link refferal diatas, anda dapat membuat beberapa server percobaan). Nantinya bisa di upgrade
  • Backups : Untuk jaga-jaga setelah konfigurasi selesai nantinya ternyata anda merasa cocok dan ingin melanjutkan dengan mengisi atau memindahkan file situs anda, disarankan untuk mengaktifkan backups
  • Block storage : Skip, untuk sekarang anda tidak perlu melakukan apa-apa di pilihan ini
  • Datacenter region : Pilih lokasi terdekat dari kira-kira calon mayoritas pengunjung server yang berisi situs anda nantinya, jika anda beranggapan pengunjung mayoritas terbanyak berasal dari Indonesia silahkan pilih lokasi datacenter di Singapura. Tahap lanjutan dari konfigurasi ini anda dapat menggunakan CDN untuk memudahkan akses dari pengunjung yang berada di titik yang saling berjauhan (contoh: server anda ternyata mendapat kunjungan yang tidak memiliki latar mayoritas lokasi tertentu)
  • Additional options : aktifasi Private Networking, IPV6, User Data, dan Monitoring dapat diatur setelah server selesai dibuat, anda bisa men-skip pilihan ini
  • Hostname : untuk memudahkan silahkan ganti nama hostname dengan domain anda

Selanjutnya, mulai tahapan konfigurasi server cepat loading dengan PHP 7.2, Nginx Custom dari easyengine, dan MariaDB pada droplet baru dengan OS Ubuntu versi 18.04 dengan menjalankan perintah berikut ini satu persatu. Harap perhatikan, setiap perintah diawali dengan keterangan sudo

sudo apt update 
sudo apt dist-upgrade -y 
sudo apt install ufw fail2ban
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3050AC3CD2AE6F03
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/rtCamp:/EasyEngine/xUbuntu_18.04/ /' >> /etc/apt/sources.list.d/nginx.list"
sudo apt update
sudo apt install nginx-custom
sudo ufw limit ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirrors.evowise.com/mariadb/repo/10.3/ubuntu bionic main' 
sudo apt install mariadb-server

Instalasi dan Pengaturan MariaDB

Setelah semua perintah diatas di eksekusi, lanjutkan instalasi MariaDB dengan perintah berikut ini:

sudo mysql_secure_installation

Masukkan password untuk akun root database MariaDB pertama kali dibuat, kemudian jawab n atau NO ketika muncul pertanyaan “create a new root password”, setelahnya anda bebas untuk menjawab dengan y atau Yes pada pertanyaan lainnya sampai proses instalasi berakhir.

MariaDB telah selesai di install, sekarang mulai pembuatan database untuk wordpress sebagai pilihan CMS situs anda nantinya. Mulai pembuatan database dengan perintah:

sudo mysql -u root -p

masukkan password root yang tadi telah dipilih saat instalasi awal, shell akan terbuka setelah anda memasukkan password. Semua yang Anda ketik di sini diperlakukan sebagai kueri SQL, jadi pastikan untuk mengakhiri setiap baris dengan titik koma! (sering terlupakan). Lanjutkan dengan perintah untuk membuat database baru, pengguna, dan menetapkan hak istimewa untuk pengguna itu:

CREATE DATABASE namaDB CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON namaDB.* TO 'username'@'localhost';
GRANT SELECT, INSERT, UPDATE, DELETE ON namaDB.* TO 'username'@'localhost';
FLUSH PRIVILEGES;
exit;

Keterangan:

  • namaDB : nama yang anda berikan untuk database (bebas)
  • username : username akun yang akan di integrasikan dan mendapat hak penuh untuk mengelola database (bebas)
  • localhost : keterangan akun untuk server yang digunakan oleh database (sebaiknya tidak diganti, biarkan tetap localhost untuk mempermudah proses instalasi wordpress nantinya)

Instalasi dan Pengaturan Fail2Ban

Fail2Ban adalah kerangka kerja perangkat lunak pencegahan intrusi yang melindungi server dari serangan brute-force. Ini mungkin salah satu alat keamanan favorit yang umum digunakan server, karena sangat kuat dan fleksibel. Agar lebih aman, sebelum membuat modifikasi, kita perlu membuat salinan lokal. Selengkapnya baca panduan Digital Ocean mengenai instalasi Fail2Ban dengan Nginx dan ikuti tutorial untuk mengatur dan mengaktifkan lock berikut ini;

  • Perubahan Defaults per tutorial
  • nginx-http-auth
  • nginx-badbots
  • nginx-nohome
  • nginx-noproxy

Pastikan juga untuk mengaktifkan jail pada SSH dan SSH-DDoS, serta pertimbangkan untuk mengaktifkan filter residif. Rekomendasi aktivasi Jail untuk WordPress dapat melalui plugin WP Fail2ban untuk wordpress, langkah selanjutnya dapat mengikuti instruksi yang tersedia pada plugin.

Instalasi dan Konfigurasi PHP 7.2

Eksekusi perintah berikut ini pada terminal atau layar ssh yang anda gunakan:

sudo apt install -y zip unzip php-fpm php-mysql php-xml php-gd php-mbstring php-zip php-curl 

Perintah diatas juga menginstal paket MySQL, XML, Curl dan GD sehingga WordPress dapat berinteraksi dengan database, memberi dukungan untuk XMLRPC (diperlukan untuk Jetpack), dan secara otomatis memotong dan mengubah ukuran gambar. Selain Itu juga menginstal zip / unzip untuk memudahkan penggunaan zip dan unzip di beberapa plugin dan alat cadangan lainnya.

Ubah pengaturan php.ini untuk memungkinkan lebih banyak memori dan ukuran file yang lebih besar. ketik perintah ini pada layar terminal:

sudo nano /etc/php/7.2/fpm/php.ini

Gunakan ctrl+w untuk menemukan baris-baris yang akan diubah

  • Tingkatkan nilai post_max_size
  • Tingkatkan nilai upload_max_filesize
  • Tingkatkan nilai memory_limit

Sesuaikan nilai dengan kebutuhan anda, saya merekomendasikan nilai 128MB dan 256MB untuk ditetapkan secara bijak pada pengaturan diatas. Setelahnya restart PHP dengan perintah:

sudo service php7.2-fpm restart

Tahapan selanjutnya adalah memberitahu Nginx untuk menggunakan PHP 7.2, maka buka konfigurasi default pada nginx dengan menjalankan perintah ini:

sudo nano /etc/nginx/sites-available/default

Edit sehingga terlihat seperti atau hapus seluruhnya dan gantikan dengan pengaturan dibawah ini:

server {
  listen 80 default_server;
  listen [::]:80 default_server;
 
  root /var/www/html;
  index index.php index.html;
 
  server_name domainanda.com www.domainanda.com;
 
  location / {
    try_files $uri $uri/ =404;
  }
 
  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.2-fpm.sock;
  }
 
  location ~ /\.ht {
    deny all;
  }
}

Pastikan untuk mengganti domainanda dengan domain anda. Kemudian simpan lalu keluar dengan menjalankan ctrl+x lalu y dan enter.

Restart nginx atas konfigurasi yang baru saja dilakukan:

sudo service nginx restart

Untuk memastikan semua berfungsi dengan baik, sekarang saatnya untuk menguji semuanya. Buat file PHP di folder /var/www/html Anda yang dengan nama index.php melalui eksekusi perintah:

echo "<?php phpinfo();" | sudo tee /var/www/html/index.php > /dev/null

Buka browser web, kunjungi http://ALAMAT.IP (contoh: Http://192.168.1.1 ) atau langsung domain anda jika sebelumnya telah dihubungkan dengan droplet ini. Dapat diasumsikan seluruh tahapan sebelumnya tereksekusi dengan baik jika anda melihat tampilan berikut ini pada layar browser

Instalasi dan konfigurasi Postfix (aplikasi layanan email) pada server

Sebagai pengelola server, salah satu hal yang terbilang wajib adalah selalu terhubung dan memiliki akses dengan setiap perubahan dan pembaharuan pada server web yang di kelola. Informasi perilaku server, termasuk didalamnya perubahan-perubahan tidak wajar harus selalu terpantau.

Tapi, tentu akan sangat sulit jika itu artinya anda harus selalu terhubung melalui terminal. Olehnya, meskipun ada beberapa pilihan cara untuk memudahkan perlakuan atas permasalahan ini, konfigurasi Postfix adalah yang terbaik dan paling direkomendasikan. Instalasi dan konfigurasi postfix memastikan anda untuk selalu mendapat kabar pembaharuan dan perubahan langsung dari server ke email anda. Sesuaikan dengan layanan email yang anda gunakan, ikuti salah satu dari 2 metode konfigurasi postfix dibawah ini:

  • Konfigurasi Postfix untuk pengiriman mail dengan Gmail & Google Apps (G suite) di Ubuntu
  • Konfigurasi Postfix untuk Mengirim Email Menggunakan server SMTP eksternal

Setelah Postfix di install dan terkonfigurasikan dengan benar, sesuai panduan diatas, langkah selanjutnya adalah mengatur pemberitahuan via email untuk pembaharuan server secara otomatis. Jalankan perintah berikut ini, untuk membuka file yang akan di edit;

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades 

Lakukan pengeditan file, sehingga baris perintah didalam menjadi seperti ini

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}-security";
        "${distro_id}:${distro_codename}-updates";
        "${distro_id}ESM:${distro_codename}";
};
Unattended-Upgrade::Mail "admin@yoursite.com";
//Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

Baris perintah diatas berfungsi untuk:

  • memberi tahu server agar menerapkan pembaharuan dan reguler secara otomatis,
  • mengirim email ke admin ketika pembaharuan dilakukan,
  • menghapus dependensi yang tidak digunakan,
  • reboot secara otomatis jika diperlukan, dan
  • melakukan reboot secara rutin pada pukul 02:00 jika perlu.

Selanjutnya edit file 10periodic untuk mengaktifkan beberapa opsi lainnya, buka melalui perintah:

sudo nano /etc/apt/apt.conf.d/10periodic

Lakukan pengeditan file, sehingga baris perintah didalam menjadi seperti ini

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Instalasi dan konfigurasi Lets Encrypt

Dalam perkembangan pengelolaan situs web kekinian harus diakui; SSL bukan lagi pilihan, melainkan persyaratan (wajib). Sementara untuk melakukannya anda membutuhkan sertifikat TLS/SSL.

Sertifikat ini dapat di beli sesuai kebutuhan (terdapat banyak jenis, silahkan konsuiltasikan ke penyedia yang anda pilih sebelum memilih), atau anda dapat menggunakan yang gratis disediakan oleh Letsencrypt.org. Saya merekomendasikan penggunaan panduan instalasi dan konfigurasi letsencrypt dari digitalocean. Pastikan seluruh proses dijalankan dan tereksekusi sesuai panduan tersebut dan kembali untuk melanjutkan tahapan Konfigurasi Server untuk wordpress pada Ubuntu 18.04 dengan PHP 7.2, Nginx, dan MariaDB disini.

Instalasi dan Konfigurasi WordPress

Akhirnya sampai juga di tahapan penghujung, mengisi server yang telah dibangun dengan salah satu CMS ternama dan paling banyak digunakan hari ini ~ WordPress. Tutorial konfigurasi wordpress pada artikel ini mengarahkan anda untuk menggunakan wp-cli sebagai perangkat instalasi wordpress di server web, berikut ini tahapannya (jalankan per baris);

#Pastikan untuk memulainya dari direktori home
cd ~/
#download WP-CLI menggunakan cURL
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
#berikan izin untuk mengeksekusi
chmod +x wp-cli.phar
#pindahkan untuk mendapatkan akses perintah dengan awalan wp
sudo mv wp-cli.phar /usr/local/bin/wp
#Masuk ke direktori tempat anda ingin menempatkan file wordpress, pada contoh ini kita menempatkannya di /var/www/html (direktori default penempatan file dari nginx)
cd /var/www/html
#Download wordpress
sudo wp core download

Proses instalasi wordpress akan dilanjutkan setelah men-skip tahapan Instalasi dan Konfigurasi MariaDB diatas (pastikan saat ini anda masih berada didalam direktori tempat wordpress diletakkan, pada contoh ini /var/www/html), jalankan baris perintah berikut;

#hubungkan wp-config dengan database yang telah dibuat
wp core config --dbname=namaDB --dbuser=username --dbpass=password-untuk-akun-root-database-MariaDB
#install wordpress
wp core install --url=https://domainanda.com --title='Judul situs anda' --admin_user=namaadmin --admin_email=emailadmin@doaminanda.com --admin_password=passwordadmin

Selesai, server anda telah berisi wordpress dan dapat diakses melalui browser. Tapi sebelumnya, manfaatkan fitur dari wp-cli dengan menghapus dan menambahkan plugin tertentu yang direkomendasikan:

#hapus hello doli
sudo wp plugin delete hello --allow-root
#download plugin nginx-helper
sudo wp plugin install nginx-helper --allow-root
#aktifkan plugin nginx-helper
sudo wp plugin activate nginx-helper --allow-root
#download jetpack
sudo wp plugin install jetpack --allow-root
#aktifkan jetpack
sudo wp plugin activate jetpack --allow-root

Optimasi dan peningkatan keamanan WordPress

upcoming (capek nulis)

Mau punya Tema WordPress unik ?, atau punya desain kesukaan yang ingin dibuat menjadi Tema WordPress ?

Pesan Jasa Desain Tema Wordpress Sekarang

Berikan tanggapan

This site uses Akismet to reduce spam. Learn how your comment data is processed.