Newer
Older
Secure-Wordpress-with-Cloudflare / README.md
Ilazog on 8 Mar 2020 7 KB Update README.md
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

![GitHub Logo](https://manan.s3-id-jkt-1.kilatstorage.id/gambar/user.png)


#### 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```