WordPress adalah sistem manajemen konten free, open-source, dan paling banyak digunakan di dunia. WordPress adalah platform blog yang sangat kuat yang dapat digunakan untuk meng-host Blog, Situs Web Portofolio, dan platform eCommerce.

WordPress menggunakan Apache/Nginx sebagai web server , MariaDB/MySQL sebagai database dan PHP. WordPress menyediakan sejumlah besar tema dan plugin yang dapat digunakan untuk menyesuaikan fungsinya.

Dalam tutorial ini, kami akan menjelaskan cara menginstal WordPress dengan Nginx di server CentOS 8 dan kemudian mengamankan lalu lintas ke server dengan menggunakan sertifikat gratis SSL Let’s Encrypt SSL.

Prasyarat

  • Server yang menjalankan CentOS 8.
  • Masuk sebagai root atau user dengan hak sudo
  • Nama domain yang valid diarahkan ke alamat IP server Anda.

Mulai

Secara default, SELinux diaktifkan di server CentOS 8. Jadi, Anda harus menonaktifkannya SELinux terlebih dahulu.

Anda dapat melakukan ini dengan mengedit file /etc/selinux/config :

sudo nano /etc/selinux/config

Buat perubahan berikut:

SELINUX=disabled

Simpan dan tutup file. Kemudian, restart server Anda untuk menerapkan perubahan.

Instal LEMP Server

Sebelum memulai, Anda harus menginstal Nginx, MariaDB, PHP dan paket lain yang diperlukan di server Anda. Anda dapat menginstal semuanya dengan menjalankan perintah berikut:

yum install nginx php php-cli php-curl php-zip php-mbstring php-mysqlnd php-fpm curl unzip mariadb-server -y

Setelah semua paket diinstal, mulai layanan Nginx, PHP-FPM, MariaDB dan aktifkan untuk memulai setelah reboot sistem:

systemctl start nginx
 systemctl enable nginx
 systemctl start mariadb
 systemctl enable mariadb
 systemctl start php-fpm
 systemctl enable php-fpm

Anda juga dapat memeriksa status layanan PHP-FPM dengan perintah berikut:

systemctl status php-fpm

Anda harus mendapatkan output berikut:

? php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-10-17 05:39:11 UTC; 4min 40s ago
 Main PID: 1475 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 5060)
   Memory: 28.5M
   CGroup: /system.slice/php-fpm.service
           ??1475 php-fpm: master process (/etc/php-fpm.conf)
           ??1478 php-fpm: pool www
           ??1479 php-fpm: pool www
           ??1480 php-fpm: pool www
           ??1481 php-fpm: pool www
           ??1482 php-fpm: pool www

Oct 17 05:39:10 centos8 systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 17 05:39:11 centos8 systemd[1]: Started The PHP FastCGI Process Manager.

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Konfigurasikan Database WordPress

Secara default, MariaDB tidak diamankan. Jadi, Anda perlu mengamankannya dengan

sudo mysql_secure_installation

Jawab semua pertanyaan seperti yang ditunjukkan di bawah ini:

Enter current password for root (enter for none): 
Set root password? [Y/n] n
Remove anonymous users? [Y/n] Y   
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Setelah MariaDB diamankan, masuk ke shell MariaDB dengan perintah berikut:

sudo mysql -u root -p

Masukkan kata sandi root Anda saat diminta. Kemudian, buat database dan user database untuk CMS ExpressionEngine. Dalam Contoh ini, kita akan membuat nama database wpdb, dengan nama user toni dengan kata sandi GantiDenganPasswordDatabase,

MariaDB [(none)]> CREATE DATABASE wpdb;
 MariaDB [(none)]> GRANT ALL PRIVILEGES on wpdb.* to 'toni'@'localhost' identified by 'GantiDenganPasswordDatabase';

Selanjutnya, flush privilege dan keluar dari shell MariaDB dengan perintah berikut:

MariaDB [(none)]> FLUSH PRIVILEGES;
 MariaDB [(none)]> EXIT;

Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.

Download WordPress

Pada perintah berikut ini, kita akan download WordPress versi terbaru dengan perintah wget berikut:

cd /var/www/html
 wget https://wordpress.org/latest.tar.gz

Setelah diunduh, ekstrak file yang diunduh dengan perintah berikut:

tar -xvzf latest.tar.gz

Selanjutnya, ubah kepemilikan direktori wordpress ke nginx:

chown -R nginx: /var/www/html/wordpress/

Selanjutnya, masuk ke direktori wordpress dan ganti nama file konfigurasi default wordpress dengan perintah cp :

cd /var/www/html/wordpress
 cp wp-config-sample.php wp-config.php

Selanjutnya, edit file wp-config.php di editor teks favorit Anda:

nano wp-config.php

Tetapkan informasi database Anda seperti yang ditunjukkan di bawah ini:

/** The name of the database for WordPress */
define( 'DB_NAME', 'wpdb' );

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

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

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

Simpan dan tutup file, ketika Anda selesai.

Konfigurasi Nginx untuk WordPress

Selanjutnya, Anda perlu membuat server block Nginx untuk melayani WordPress. Anda dapat membuatnya dengan perintah berikut:

sudo nano /etc/nginx/conf.d/wordpress.conf

Tambahkan baris berikut:

server {
    listen 80;
    server_name example.com;
    root /var/www/html/wordpress;
    index index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location =https://cdn.linuxid.net/favicon.ico?x87109 {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index   index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

}

Simpan dan tutup file. Kemudian, periksa nginx untuk setiap kesalahan sintaks dengan perintah berikut:

nginx -t

Jika tidak ada kesalahan syntax, Anda akan mendapatkan output berikut:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Terakhir, restart Nginx service untuk menerapkan perubahan konfigurasi:

systemctl restart nginx

Akses Instalasi WordPress

Setelah konfigurasi pada server selesai, saatnya mengakses installer web.

Buka browser web dan ketik URL http://example.com. Anda akan diarahkan ke halaman berikut:

Page 1 - WordPress Installation Wizard

Berikan semua informasi yang diperlukan seperti nama situs, nama pengguna admin, kata sandi, email admin dan klik tombol Install WordPress. Setelah instalasi selesai. Anda akan melihat halaman berikut:

Klik pada tombol login. Anda akan diarahkan ke halaman login WordPress:

Page 3 - WordPress Login

Berikan nama user admin, kata sandi, dan klik tombol Log In. Anda akan melihat dashboard WordPress di halaman berikut:

Secure WordPress dengan Let’s Encrypt

Untuk mengamankan lalu lintas situs WordPress Anda dengan Let’s Encrypt SSL, Anda harus menginstal Certbot Let’s Encrypt client di sistem Anda. Secara default, Certbot tidak tersedia di repositori default CentOS 8. Jadi, Anda perlu mengunduhnya dari situs web resmi Certbot.

Anda dapat mengunduh dan menginstal Certbot dengan perintah berikut:

wget https://dl.eff.org/certbot-auto
 mv certbot-auto /usr/local/bin/certbot-auto
 chown root /usr/local/bin/certbot-auto
 chmod 0755 /usr/local/bin/certbot-auto

Sekarang, jalankan perintah berikut untuk mendapatkan dan menginstal sertifikat SSL untuk situs web WordPress Anda.

certbot-auto --apache -d example.com

Anda akan diminta untuk memberikan alamat email dan menyetujui persyaratan layanan. Anda juga perlu memilih untuk mengarahkan lalu lintas HTTP ke HTTPS atau tidak. Silakan pilih opsi yang sesuai dan tekan Enter. Setelah instalasi berhasil diselesaikan, Anda harus mendapatkan output berikut:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2019-08-14. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Setting Update Otomatis Let’s Encrypt

Sertifikat Let’s Encrypt valid selama 90 hari. Jadi disarankan untuk memperbarui sertifikat sebelum habis masa berlakunya. Anda dapat mengatur Cron job untuk memperbarui sertifikat secara otomatis.

Untuk melakukannya, buat crontab dengan perintah berikut:

crontab -e

Tambahkan baris berikut:

0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew

Simpan dan tutup file, ketika Anda selesai.

Kesimpulan

Dalam tutorial di atas, kita belajar cara menginstal dan mengkonfigurasi WordPress dengan Nginx di server CentOS.

kita juga telah mempelajari cara mengamankan situs WordPress dengan Let’s Encrypt SSL gratis. Saya harap Anda sekarang dapat dengan mudah meng-host situs web WordPress sendiri dengan mudah.