Instalasi WordPress dan SSL pada Nginx Debian 9

Posted by

Hari Kamis, waktunya ngeblog kembali. Pada artikel kali ini yaitu membahas mengenai Instalasi WordPress beserta Konfigurasi SSL pada Nginx menggunakan OS Debian 9. Kebetulan ini merupakan materi dan tugas kuliah saya, yaitu System Administrator. Ini merupakan tugas kelompok saya beserta 2 teman saya untuk menjelaskan dan live config langsung di depan kelas. Alhamdulillah berjalan lancar untuk live confignya pada Kamis malam tadi.

Untuk materi saya yaitu Instalasi WordPress beserta SSL pada Nginx. Bagi yang belum mengetahui apa itu wordpress, wordpress merupakan aplikasi opensource yang sangat populer digunakan sebagai blog engine. Selain sebagai blog engine, wordpress juga digunakan sebagai CMS (Content Management System) karena kemampuannya untuk dimodifikasi sesuai selera pengguna. Ref : https://id.wikipedia.org/wiki/WordPress

Untuk instalasi wordpress ini membutuhkan sebuah web server. Untuk web servernya saya gunakan Nginx. Berikut ini saya buatkan tahapan-tahapan proses instalasi wordpress untuk membantu teman-teman kuliah saya untuk mencoba materi ini.

Baca Juga : Tips Mendapatkan Nilai A+ pada Hasil Qualys SSL Labs untuk Apache2

1. Update repository dan instalasi paket-paket dependensi dasar

apt update && apt upgrade -y
apt install ca-certificates apt-transport-https unzip nano vim wget nmap telnet -y

2. Tambahkan repository pihak ketiga untuk PHP 7.2 karena pada Debian 9, pada repository default nya hanya sampai PHP 7.0 saja

wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -
echo "deb https://packages.sury.org/php/ stretch main" | sudo tee /etc/apt/sources.list.d/php.list

3. Instal paket-paket utama yang dibutuhkan seperti nginx, mysql-server dan php 7.2

apt update
apt install php7.2-fpm php7.2-common php7.2-gd php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-mysql mysql-server mysql-client nginx -y

4. Setelah instalasi paket utama diatas selesai, selanjutnya download installer wordpress dari situs wordpress.org, lalu extraxt menggunakan unzip

wget https://wordpress.org/latest.zip
unzip latest.zip

5. Setelah proses unzip tersebut, akan ada folder bernama wordpress hasil extract tersebut. Pindahkan folder tersebut ke directory /var/www dimana directory tersebut merupakan tempat public html untuk nginx. Selanjutnya ubah owner dari folder wordpress tersebut menjadi www-data

mv wordpress /var/www/
chown www-data:www-data -R /var/www/wordpress

6. Selanjutnya yaitu pembuatan database untuk wordpress, namun sebelumnya pastikan untuk setup password root untuk mysql-servernya dahulu supaya aman

mysql_secure_installation

Nanti akan ada beberapa pertanyaan, silakan ikuti seperti berikut

Enter current password for root (enter for none): 
Remove anonymous users? [Y/n] y
 ... Success!
Disallow root login remotely? [Y/n] y
 ... Success!
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

7. Lanjut kita buat database untuk wordpress. Disini kita buat nama databasenya yaitu wordpress dengan user wordpress

mysql -u root -p
create database wordpress;
create user wordpress@localhost identified by 'your_password';
grant all privileges on wordpress.* to wordpress@localhost identified by 'your_password';
flush privileges;
exit

Untuk identified by ‘your_password’, silakan definisikan password untuk user wordpress. Pastikan mengingatnya karena nanti akan digunakan saat menjalankan installer wordpress.

8. Konfigurasi pembatasan maksimal upload file serta memory limit untuk wordpress, silakan edit file /etc/php/7.2/fpm/php.ini. Kemudian sesuaikan baris berikut ini

upload_max_filesize = 10M
post_max_size = 10M
memory_limit = 512M
date.timezone = Asia/Jakarta

9. Pembuatan virtualhost untuk nama website misal pada postingan ini yaitu wordpress.rizkypratama.id, masuk ke directory /etc/nginx/sites-available

cd /etc/nginx/sites-available/
nano wordpress

10. Masukkan script berikut ini

### Without SSL
server {
   listen 80;
   server_name wordpress.rizkypratama.id;
   rewrite ^(.*) https://wordpress.rizkypratama.id$1 permanent;
}

### SSL Configuration
    server {
    access_log off;
    log_not_found off;
    error_log  /var/log/nginx/wordpress.rizkypratama.id-error_log warn;
    listen 443 ssl http2;
    server_name  wordpress.rizkypratama.id; 
    ssl on;
    ssl_certificate /etc/nginx/ssl/commercial.pem;
    ssl_certificate_key /etc/nginx/ssl/commercial.pem;
    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCMSHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCMSHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCMSHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSAAES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHERSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCMSHA256:AES256-GCM-SHA384:AES128:AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;
    add_header Strict-Transport-Security "max-age=63072000; preload";
    ssl_dhparam /etc/nginx/ssl/dhparams.pem;
    location ~* .(gif|jpg|jpeg|png|ico|wmv|3gp|avi|mpg|mpeg|mp4|flv|mp3|mid|js|css|wml|swf)$ {
        root   /var/www/wordpress;
        expires max;
        add_header Pragma public;
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }
    location / {
        root   /var/www/wordpress;
        index  index.php index.html index.htm;
        # WordPress permalinks configuration
        try_files $uri $uri/ /index.php?$args;
    }
# php-parsing
    location ~ .php$ {
	root	/var/www/wordpress;
	try_files $uri =404;
	fastcgi_pass	unix:/var/run/php/php7.2-fpm.sock;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
	include	fastcgi_params;
	fastcgi_buffer_size 128k;
	fastcgi_read_timeout 150;
	fastcgi_buffers 256 4k;
	fastcgi_busy_buffers_size 256k;
	fastcgi_temp_file_write_size 256k;
    }
}

Untuk baris yang saya beri warna merah, bisa disesuaikan dengan keinginan masing-masing. Terutama pada bagian ssl_certificate. Pastikan kamu sudah memiliki file SSL Commercial, atau jika belum, bisa pakai SSL Lets Encrypt. Nanti akan ada 3 buah file, yaitu crt, ca dan key. Silakan gabungkan ketiga file tersebut dengan urutan sebagai berikut :

  • file key
  • file crt
  • file ca

Digabung menjadi sebuah file pem

Baca Juga : Enable HTTP/2 pada Apache2 Ubuntu 16.04

11. Generate dhparam untuk meningkatkan reputasi SSL Certificate

openssl dhparam -out /etc/nginx/ssl/dhparams.pem 2048

12. Kalau sudah sesuai, aktifkan virtualhost tersebut dengan membuat shortcut file dari sites-available ke sites-enabled

ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/

13. Setelah OK semua, silakan restart service nginx dan php7.2-fpm nya

service nginx restart
service php7.2-fpm restart

14. Selanjutnya silakan buka browser kemudian akses ke nama website wordpress yang tadi didefinisikan pada virtualhost untuk melakukan instalasi wordpress. Pada tampilan awal yaitu pemilihan bahasa, pilih English (United States)

15. Selanjutnya Klik Lets go untuk mulai proses

16. Isikan sesuai pada saat pembuatan database pada step 8

17. Lalu akan muncul informasi bahwa komunikasi ke database sudah bisa, maka proses bisa dilanjut

18. Masukkan informasi seperti nama Website, kemudian username dan password admin untuk nanti login ke wp-admin

Baca Juga : Pertama Kali Menggunakan Gutenberg di WordPress

19. Pastikan muncul informasi Success seperti berikut ini, berarti instalasi wordpress sudah berhasil, silakan klik Log In untuk login ke wp-admin untuk melakukan management wordpressnya

20. Langkah terakhir dari pembahasan ini yaitu pengecekan kualitas konfigurasi SSL yang sudah kita setup, bisa ke alamat https://www.ssllabs.com/ssltest/ dan silakan masukkan alamat website wordpress yang sudah kamu setup. Kemudian cek dan tunggu hasilnya

21. Untuk hasil pengecekan kualitas SSL, mendapat nilai A+ dengan mengikuti konfigurasi seperti diatas

Cukup mudah bukan, mungkin cukup sekian untuk artikel kali ini, dan Alhamdulillah tugas kuliah satu persatu selesai. Akhir kata, Jangan Lupa Bahagia

Leave a Reply

Your email address will not be published. Required fields are marked *

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