Secure-Wordpress-with-Cloudflare =============== Repositori untuk melakukan instalasi dan konfigurasi wordpress dengan menggunakan keamanan SSL dari CloudFlare ## Task Instalasi dan Konfigurasi: * Web Server NGINX * Database Server MariaDB 10.1.44 * PHP 7.2 Ketentuan pengerjaan: * Menggunakan VPS dengan OS centos7 * Menggunakan subdomain dari domain utama (wp.domain.tld) * Menggunakan mangement DNS di CloudFlare * SSL yang digunakan ialah SSL dari CloudFlare ## Langkah 1 Instalasi dan Konfigurasi LEMP #### Step 1: Instalasi Web Server Nginx Untuk melakukan instalasi Nginx yang pertama adalah melakukan remote ke IP VPS dengan menggunakan SSH > ```$ ssh root@ipaddress``` Setelah berhasil login ke VPS, lakukan pembaharuan paket/repository dari system operasi Centos7 dengan perintah sebagai berikut: > ```#yum -y update``` Lakukan instalasi paket epel-release sebelum melakukan instalasi paket pada OS centos7 dengan memasukan perintah berikut: > ```# yum install epel-release -y``` Setelah paket epel-release selesai diinstall selanjutnya ialah instalasi webserver Nginx dan biasanya instalasi ini memakan waktu 10 sd 20 second, untuk melakukan instalasi Nginx masukan perintah berikut: > ```# yum install nginx -y``` Selanjutnya lakukan enable direktori dan file webserver Nginx, berikut perintahnya: > ```# systemctl enable nginx``` Setelah direktori dan file webserver Nginx dienable, jalankan service Nginx dengan perintah berikut: > ```# systemctl start nginx``` Apabila paket webserver Nginx telah selesai diinstal pastikan service Nginx berjalan dengan status Running. > ``` # systemctl status nginx ● nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2020-03-08 16:33:22 WIB; 1h 29min ago Process: 10899 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 10896 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 10895 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 10901 (nginx) CGroup: /system.slice/nginx.service ├─10901 nginx: master process /usr/sbin/nginx └─10902 nginx: worker process``` #### Step 2: Instalasi Database Server MariaDB 10.1.44 Setelah webserver Nginx telah diinstall selanjutnya lakukan instalasi database server mariaDB 10.1.44 dan langkah pertama ialah menambahkan repository untuk mariaDB. > ```# vi /etc/yum.repos.d/mariadb.repo``` Masukan perintah berikut: > ``` [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1``` Setelah menambahkan repo mariaDB, lakukan instalasi mariaDB dengan perintah berikut: > ```# yum install mariadb-server``` Selanjutnya lakukan enable direktori dan file database mariaDB, berikut perintahnya: > ```# systemctl enable mariadb``` Setelah direktori dan file database mariaDB dienable, jalankan service mariaDB dengan perintah berikut: > ```# systemctl start mariadb``` Apabila paket database server telah selesai diinstall pastikan service mariaDB berjalan dengan status Running. > ``` # systemctl status mariadb ● mariadb.service - MariaDB 10.1.44 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Drop-In: /etc/systemd/system/mariadb.service.d └─migrated-from-my.cnf-settings.conf Active: active (running) since Sat 2020-03-07 20:09:38 WIB; 22h ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Process: 29925 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Process: 29885 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= || VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ] && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS) Process: 29883 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS) Main PID: 29897 (mysqld) Status: "Taking your SQL requests now..." CGroup: /system.slice/mariadb.service └─29897 /usr/sbin/mysqld ``` #### Step 3: Instalasi PHP 7.2 Setelah melakukan instalasi database server selanjutnya ialah install PHP versi 7.2 dan langkah pertama adalah mengambil dan menginstall repository untuk PHP versi 7 keatas. > ```# yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm``` Setelah repository untuk PHP versi 7 diinstall, langkah selanjutnya adalah enable remi/repository untuk PHP 7.2 > ```# yum-config-manager --enable remi-php72``` Selanjutnya lakukan instalasi PHP 7.2 beserta paket php yang akan digunakan > ```# yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd``` Lihat versi dan pastikan service PHP berjalan > ``` # php -v PHP 7.2.28 (cli) (built: Feb 18 2020 11:07:04) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.28, Copyright (c) 1999-2018, by Zend Technologies ``` ## Langkah 2 Konfigurasi CMS wordpress #### Step 1: Membuat folder untuk meletakan root folder CMS wordpress > ``` # cd /home home# mkdir A home# cd A/ home/A# ``` Folder untuk mendownload dan menyimpan folder dan file CMS Wordperss #### Step 2: Download dan Extract File CMS Wordpress Setelah folder untuk CMS wordpress selesai dibuat, selanjutnya adalah melakukan instalasi wget dan unzip . > ```# yum install wget unzip -y``` Unduh File CMS wordpress > ```# wget http://wordpress.org/latest.tar.gz``` Extract File CMS wordpress > ```# tar xf latest.tar.gz``` Beri hak akses dan hak kepemilikan untuk folder A > ``` # chown -R nginx:nginx /home/A/ # chmod -R 755 /home/A/ ``` #### Step 3: Konfigurasi File PHP dan menetukan PHP socket > ```# vi /etc/php-fpm.d/www.conf``` Rubah user dan grub menjadi nginx dan buat php socket  #### Step 4: Konfigurasi Server Blok untuk CMS Wordpress Buat file baru dengan nama _wp.conf_ > ```# vi /etc/nginx/conf.d/wp.conf``` Di dalam file _wp.conf_ masukan kode berikut > ``` server { listen 80; listen [::]:80; server_name wp.padiakse.my.id www.wp.padiakse.my.id; return 302 https://$server_name$request_uri; } server { # SSL configuration listen 443 ssl http2; listen [::]:443 ssl http2; ssl on; ssl_certificate /etc/ssl/certs/cert.pem; ssl_certificate_key /etc/ssl/private/key.pem; server_name wp.padiakse.my.id www.wp.padiakse.my.id; root /home/A/wordpress/; index index.html index.php ; error_log /var/log/nginx/wppadiakse-error.log; access_log /var/log/nginx/wppadiakse-access.log; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name; include fastcgi_params; } } ``` Seve dan close #### Step 5: Buat database baru, edit wp-config dan login ke akun CloudFlare Pertama buat database baru pada mariaDB > ```# mysql -u root -p``` Setelah masuk tambahkan database baru dengan nama _wp_ / **isikan bebas sesuai kebutuhan** > ```MariaDB [(none)]> create database nama_database;``` Masukan user dan password untuk database _wp_ > ```MariaDB [(none)]> GRANT ALL ON nama_database.* TO 'isikan_user'@'localhost' IDENTIFIED BY 'isikan_password';``` Beri hak akses untuk database yang dipilih > ```MariaDB [(none)]> FLUSH PRIVILEGES;``` Exit untuk keluar dari MariaDB > ```MariaDB [(none)]> exit;``` Kemudian masuk ke folder wordpress > ```# cd /home/A/wordpress```