ExpressionEngine adalah sistem manajemen konten (CMS) open-source, fleksibel, aman, yang ditulis dalam bahasa pemrograman PHP. Source code dari ExpressionEngine di-host dan dapat Anda temukan di Github.

Dengan ExpressionEngine, Anda dapat membangun situs web berfitur lengkap, membuat aplikasi web, atau menyajikan konten ke aplikasi seluler. Semua tanpa memerlukan keterampilan pemrograman yang kompleks.

Panduan ini akan memandu Anda melalui proses instalasi ExpressionEngine pada CentOS 8 baru menggunakan PHP, MariaDB sebagai database, dan Nginx sebagai web server.

Persyaratan ExpressionEngine

ExpressionEngine membutuhkan web server yang menjalankan PHP dan MySQL/MariaDB. software stack dan versi software yang disarankan adalah:

  • PHP versi 7.0 atau lebih tinggi, berjalan dengan PHP-FPM dan dengan ekstensi PHP berikut (gdfileinfointlmbstring)
  • MySQL versi 5.6 atau lebih tinggi atau Percona versi 5.6 atau lebih tinggi. Tutorial ini akan menggunakan MariaDB.
  • Server web seperti Nginx atau Apache. Tutorial ini akan menggunakan Nginx.

Prasyarat Tutorial

  • Server dengan sistem operasi CentOS 8.
  • Masuk sebagai root atau user dengan hak sudo

Sebelum Mulai

Siapkan zona waktu, Pada contoh ini saya memilih zona waktu Jakarta:

timedatectl list-timezones
sudo timedatectl set-timezone 'Asia/Jakarta'

Perbarui paket sistem operasi(software). Ini adalah langkah pertama yang penting karena memastikan Anda memiliki pembaruan terbaru dan perbaikan keamanan untuk paket perangkat lunak default sistem operasi.

Anda dapat melakukan update sistem dengan menjalankan perintah berikut dengan user root atau user biasa dengan hak sudo:

sudo yum update -y

Instal beberapa paket penting yang diperlukan untuk administrasi dasar sistem operasi CentOS:

sudo yum install -y curl wget vim git unzip socat bash-completion epel-release

Langkah 1 – Install PHP dan PHP extensions

Install PHP dan semua PHP extensions yang dibutuhkan ExpressionEngine :

sudo yum install -y php-cli php-fpm php-common php-mbstring php-gd php-intl php-mysql php-json php-zip

periksa versi PHP :

php --version
# PHP 7.2.19 (cli) (built: Jun  2 2019 09:49:05) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Untuk menampilkan modul PHP yang dikompilasi, Anda dapat menjalankan:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Start dan aktifkan PHP-FPM service:

sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service

Langkah 2 – Install MariaDB dan Buat Database

Install MariaDB database server:

sudo yum install -y mariadb-server

Periksa versi MariaDB :

mysql --version
# mysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1

Start dan aktifkan layanan MariaDB :

sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service

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] Y
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
# Enter password:

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

CREATE DATABASE expressionengine ;
GRANT ALL ON expressionengine .* TO 'toni' IDENTIFIED BY 'GantiDenganPassword';
FLUSH PRIVILEGES;
quit

NOTE: ganti kata expressionengine  dan toni sesuai dengan kehendak Anda. Serta ganti kata “GantiDenganPassword” dengan kata sandi pilihan Anda.

Langkah 3 – Install Acme.sh client dan Let’s Encrypt certificate (optional)

Mengamankan blog/website Anda dengan HTTPS memang langkah opsional, tetapi HTTPS adalah praktik yang baik untuk mengamankan lalu lintas situs Anda.

Untuk mendapatkan sertifikat TLS dari Let’s Encrypt, kita akan menggunakan klien acme.sh. Acme.sh adalah perangkat lunak shell UNIX yang digunakan untuk mendapatkan sertifikat TLS dari Let’s Encrypt dengan tanpa dependensi.

Download dan instal acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Periksa versi acme.sh:

acme.sh --version
# v2.8.3

Dapatkan sertifikat RSA dan ECC/ECDSA untuk domain/hostname Anda:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Jika ingin membuat sertifikat palsu untuk pengujian, Anda dapat menambahkan flag--stagingke perintah di atas.

Setelah menjalankan perintah di atas, certificates dan keys akan berada di:

  • untuk RSA/home/username/example.com directory.
  • untuk ECC/ECDSA/home/username/example.com_ecc directory.

Untuk list semua sertifikat, jalankan perintah :

acme.sh --list

Buat direktori untuk menyimpan sertifikat Anda. Kita akan menggunakan direktori /etc/letsencrypt

mkdir -p /etc/letsecnrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc

Install/copy sertifikat ke direktori /etc/letsencrypt.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Semua sertifikat akan diperpanjang secara otomatis setiap 60 hari.

Setelah mendapatkan sertifikat, keluar dari user root dan kembali ke user biasa dengan hak sudo :

exit

Langkah 4 – Install and Konfigurasi Nginx

Download dan install NGINX dari repository CentOS:

sudo yum install -y nginx

Periksa versi NGINX :

nginx -v
# nginx version: nginx/1.12.2

Start and enable Nginx:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Selanjutnya, konfigurasikan NGINX untuk ExpressionEngine. Kita akan membuat server block untuk ExpressionEngine dan tambahkan konfigurasi berikut.

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

copy dan paste kontent berikut, jangan lupa mengganti example.com dengan nama domain Anda.

server {

  listen 443 ssl;
  listen 80;
  
  server_name example.com;
  root /var/www/expressionengine;
  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
  index index.php;
  
  location / {
    index index.php;
    try_files $uri $uri/ @ee;
  }
  
  location @ee {
    rewrite ^(.*) /index.php?$1 last;
  }
  
  location ~* \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    include fastcgi_params;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

}

Periksa konfigurasi NGINX untuk melihat tidak ada syntax errors:

sudo nginx -t

Reload NGINX service:

sudo systemctl reload nginx.service

Langkah 5 – Install ExpressionEngine

Buat root direktori untuk ExpressionEngine, direktori ini merupakan tempat di mana ExpressionEngine menyimpan semua data dan file dari CMS.

sudo mkdir -p /var/www/expressionengine

pada langkah berikutnya masuk ke direktori document root

cd /var/www/expressionengine

Download rilis terbaru ExpressionEngine menggunakan perintah wget dan unzip file ke direktori root document :

sudo wget -O ExpressionEngine.zip --referer https://expressionengine.com/ 'https://expressionengine.com/?ACT=243'
sudo unzip ExpressionEngine.zip
sudo rm ExpressionEngine.zip

Ubah kepemilikan direktori /var/www/expressionengine menjadi nginx.

sudo chown -R nginx:nginx /var/www/expressionengine

Buka file www.conf dan atur user dan group ke nginx:

sudo nano /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx

Setelah selesai, restart PHP-FPM service:

sudo systemctl restart php-fpm.service

Buka browser dan ketik URL domain dan tambahkan /admin.php di belakang nama domain, misal http://example.com/admin.php.

Ikuti petunjuk di layar untuk menginstal ExpressionEngine. Setelah Installation Wizard selesai, Anda harus mengganti nama atau menghapus direktori installer di bawah direktori system/ee/installer/ dari server Anda.

Langkah 6 – Selesaikan Setup ExpressionEngine

Selesaikan instalasi ExpressionEngine dengan memasukkan detail akun database dan administrator:

Setelah itu, Anda akan melihat halaman login default:

Page 2 - Log in page

Ini adalah dasbor administrasi ExpressionEngine:

Page 3 - Administrator dashboard

Dan ini halaman depan:

Page 4 - Default website

Pada poin ini, Anda telah berhasil melakukan instalasi ExpressionEngine di server Anda.