Instalasi & Konfigurasi WordPress + SSL Let’s Encrypt Menggunakan Nginx di CentOS 6

WordPress menurut saya adalah pilihan terbaik dari berbagai blog engine yang tersedia. Saya bisa mengatakan itu karena Bukan Coder juga menggunakan WordPress untuk website utama kami. Sama seperti judul artikel ini, ini merupakan gambaran dapur rahasia dari Bukan Coder. Website Bukan Coder dibuat menggunakan WordPress, ditambah SSL yang disediakan Let’s Encrypt, Nginx sebagai webserver dan semuanya berjalan di server yang menggunakan CentOS 6.

Saya terinspirasi untuk menulis ini setelah baru saja selesai untuk mengurus migrasi website utama Bukan Coder. Sebelumnya kami menggunakan server dengan Apache sebagai webserver, dan lokasi datacenter di US. Sekarang Bukan Coder sudah kami pindahkan ke server yang lokasi datacenter nya dekat dengan Indonesia, yaitu Singapore.

Sebelumnya untuk tutorial Install Nginx, PHP & MySQL di CentOS 6 bisa dibaca di Installasi dan Konfigurasi Nginx, PHP FPM 5.4 dan MySQL 5.5 di CentOS 6. Untuk tutorial Intalasi Let’s Encrypt silahkan dibaca di Intalasi & Konfigurasi Let’s Encrypt SSL Menggunakan Nginx di CentOS 6

Setelah itu kita lanjutkan dengan proses install WordPress

Konfigurasi Virtual Host Nginx + Let’s Encrypt

Buatlah file konfig baru untuk website kita yang akan menggunakan wordpress. Berikut contoh konfigurasi virtual host untuk website menggunakan subdomain https://wordpress.bukancoder.co

cd /etc/nginx/sites-available
nano wordpress.bukancoder.co.conf
server {
listen 443 http2 ssl;
listen 80;

server_name wordpress.bukancoder.co;

if ($scheme = http) {
return 301 https://$server_name$request_uri;
}

ssl_certificate /etc/letsencrypt/live/wordpress.bukancoder.co/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/wordpress.bukancoder.co/privkey.pem;

########################################################################
# from https://cipherli.st/ #
# and https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html #
########################################################################

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
#add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

##################################
# END https://cipherli.st/ BLOCK #
##################################

ssl_dhparam /etc/ssl/certs/dhparam.pem;

location ~ /.well-known {
allow all;
}
error_log /home/teguh/www/wordpress.bukancoder.co/error.log;
access_log /home/teguh/www/wordpress.bukancoder.co/access.log;
root /home/teguh/www/wordpress.bukancoder.co/public_html;

location / {
index index.php index.html index.htm;
}
location ~ .php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/teguh/www/wordpress.bukancoder.co/public_html$fastcgi_script_name;
include fastcgi_params;
}
}

Untuk bagian yang suduah ditandai dengan warna merah, disesuaikan dengan konfigurasi milik kita. Setelah itu kita lanjutkan dengan mendaftarkan SSL untuk subdomain wordpress.bukancoder.co

service nginx stop
cd /opt/letsencrypt
sudo -H ./letsencrypt-auto certonly --standalone -d wordpress.bukancoder.co

Setelah itu jalankan kembali Nginx

service nginx start

Download Wordpress

Pertama kita masuk dulu ke direktori dimana nantinya akan menjadi dir untuk website kita yang menggunakan wordpress

cd /home/teguh/www/wordpress.bukancoder.co/public_html
Setelah itu download wordpress
wget http://wordpress.org/latest.tar.gz
sudo rsync -avP ~/wordpress/ /home/teguh/www/wordpress.bukancoder.co/public_html

Setelah itu keseluruhan file wordpress akan dipindahkan ke direktori wordpress kita. Selanjutnya buatlah sebuah dir uploads untuk digunakan sebagai direktori konten statis WordPress kita

mkdir /home/teguh/www/wordpress.bukancoder.co/public_html/wp-content/uploads

Konfigurasi WordPress

cd /home/teguh/www/wordpress.bukancoder.co/public_html
cp wp-config-sample.php wp-config.php
nano wp-config.php

Setelah itu kita sesuaikan baris berikut ini dengan informasi koneksi database yang kita gunakan untuk WordPress

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'databasewordpresskita');

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

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

Membuat Database MySQL untuk WordPress

WordPress tentu membutuhkan database untuk menyimpan keseluruhan konten dan konfigurasi. Oleh karena itu kita harus membuat database untuk wordpress terlebih dahulu

mysql -u root -p

Setelah itu buatlah sebuah database untuk koneksi wordpress

CREATE DATABASE databasewordpresskita;

Setelah itu kita buat user untuk koneksi database wordpress

CREATE USER [email protected] IDENTIFIED BY 'passwordwordpressdatabase';

Kita harus menghubungkan akses untuk database dengan user yang kita buat

GRANT ALL PRIVILEGES ON databasewordpresskita.* TO [email protected] IDENTIFIED BY 'passwordwordpressdatabase';
FLUSH PRIVILEGES;

Instalasi WordPress

Setelah itu kita jalankan sebuah browser dan mengakses URL website kita yang menggunakan WordPress

Silahkan isi semua informasi yang dibutuhkan untuk website kita yang menggunakan wordpress. Setelah itu klik Install WordPress dan website kita siap untuk digunakan

Konfigurasi Permission WordPress di Nginx

Setelah melewati proses Instalasi PHP-FPM, secara default PHP telah mengatur apache sebagai user default. Kita harus mengganti apache menjadi nginx

nano /etc/php-fpm.d/www.conf

Kemudian ganti user dan group yang sebelumnya apache menjadi nginx seperti berikut ini

Setelah itu restart PHP-FPM

service php-fpm restart

Kemudian ganti permission direktori wordpress

cd /home/teguh/www/wordpress.bukancoder.co/public_html
sudo chown nginx:nginx * -R
sudo usermod -a -G nginx teguh

Ganti teguh sesuai dengan user default yang kita gunakan. Setelah itu apply untuk perubahan yang telah kita buat

sudo find . -type f -exec chmod 664 {} +
sudo find . -type d -exec chmod 775 {} +

Setelah itu website kita yang menggunakan WordPress sebagai blog engine akan dapat digunakan dengan lancar tanpa hambatan. Semoga tulisan yang sudah dibuat ini bermanfaat.

Terima kasih

Salam,
Teguh Aprianto

Add a Comment