Grav adalah CMS dan platform berbasis file yang cepat, sederhana, dan fleksibel. Grav dibuat dengan file teks biasa untuk konten Anda. CMS ini tidak memerlukan database.

Arsitektur yang mendasari Grav dirancang untuk menggunakan teknologi mutakhir untuk memastikan bahwa Grav mudah digunakan dan mudah diperluas fungsinya. Beberapa teknologi utama ini termasuk :

  • Twig Templating: untuk kontrol yang kuat dari antarmuka pengguna
  • Markdown: untuk mempermudah pembuatan konten
  • YAML: untuk mempermudah konfigurasi
  • Parsedown: Markdown yang cepat dan dukungan Markdown Ekstra
  • Doctrine Cache: untuk performa
  • Pimple Dependency Injection Container: mempermudah perawatan CMS
  • Symfony Event Dispatcher: Untuk menangani event plugin event
  • Symfony Console: CLI interface di Grav
  • Gregwar Image Library: untuk manipulasi gambar dinamis,

Persyaratan

GravCMS sengaja dirancang dengan beberapa persyaratan. Grav dibuat dengan file teks biasa untuk konten Anda. Tidak diperlukan database. Pastikan sistem Anda memenuhi persyaratan berikut:

  • Web Server (Apache, Nginx, LiteSpeed, Lightly, IIS, dll.) Dalam panduan ini, kita akan menggunakan NGINX.
  • PHP versi 7.1.3 atau lebih tinggi
  • Masuk sebagai user non-root dengan hak sudo.

Langkah awal

Periksa versi CentOS Anda:

cat /etc/centos-release
# CentOS Linux release 7.6.1810 (Core)

Siapkan zona waktu server, Pada contoh kali ini kita akan mengatur pada zona waktu menjadi Asia/Jakarta :

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

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

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

Setup Webtatic YUM repo:

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Install PHP dan juga PHP extensions yang diperlukan :

sudo yum install -y php72w php72w-cli php72w-fpm php72w-common php72w-curl php72w-gd php72w-json php72w-mbstring php72w-xml php72w-zip php72w-opcache php72w-pecl-apcu

Untuk menampilkan modul PHP yang telah terkompilasi, anda dapat menjalankan :

php -m

ctype
curl
exif
fileinfo
. . .
. . .

Periksa versi PHP :

php --version

# PHP 7.2.17 (cli) (built: May 13 2019 18:03: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.17, Copyright (c) 1999-2018, by Zend Technologies

Start dan aktifkan PHP-FPM service dengan perintah :

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

Langkah 2 – Instal Acme.sh client dan install sertifikat Let’s Encrypt

Mengamankan situs web Anda dengan HTTPS sangat penting, ini adalah praktik yang baik untuk mengamankan lalu lintas situs Anda. Untuk mendapatkan sertifikat SSL dari Let’s Encrypt, kita akan menggunakan klien Acme.sh.

Acme.sh adalah perangkat lunak unix shell murni untuk mendapatkan sertifikat SSL dari Let’s Encrypt dengan tanpa dependensi.

Download dan install 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.0

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 di direktori : /home/username/example.com.
  • untuk ECC/ECDSA di direktori : /home/username/example.com_ecc.

Untuk list semua sertifikat, jalankan perintah :

acme.sh --list

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

mkdir -p /etc/letsencrypt/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 3 – Instal dan Konfigurasi Nginx

Grav CMS dapat bekerja dengan baik dengan banyak web server. Dalam tutorial ini, kita akan menggunakan Nginx.

Instal NGINX:

sudo yum install -y nginx

Periksa versi NGINX :

nginx -v
# nginx version: nginx/1.12.2

Start dan enable NGINX service agar mulai otomatis saat reboot :

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

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

 sudo vim /etc/nginx/conf.d/grav.conf

Copy dan paste konfigurasi berikut

server {
  
  listen 80;
  listen 443 ssl;
  server_name example.com;
  root /var/www/grav;
  ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com/private.key;
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
  index index.html index.php;
  
  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }
  
  location ~* /(\.git|cache|bin|logs|backup|tests)/.*$ { return 403; }
  location ~* /(system|vendor)/.*\.(txt|xml|md|html|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
  location ~* /user/.*\.(txt|md|yaml|yml|php|pl|py|cgi|twig|sh|bat)$ { return 403; }
  location ~ /(LICENSE\.txt|composer\.lock|composer\.json|nginx\.conf|web\.config|htaccess\.txt|\.htaccess) { return 403; }

  location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
  }

}

Periksa konfigurasi NGINX agar tidak ada syntax errors:

sudo nginx -t

Reload NGINX service:

sudo systemctl reload nginx.service

Langkah 4 – Install Grav CMS

Buat root direktori untuk Grav CMS, direktori ini merupakan tempat di mana Grav CMS menyimpan semua filenya:

sudo mkdir -p /var/www/grav

Ubah kepemilikan dari direktori /var/www/grav menjadi  username_anda, misal nama user anda adalah romi, maka :

sudo chown -R romi:romi /var/www/grav

Masuk ke direktori document root grav cms:

cd /var/www/grav

Download Grav source code via wget dan unzip :

NOTE: Pada saat penulisan, versi dari GravCMS adalah versi 1.6.9, Kunjungi halaman resmi download GravCMS dan Perbarui URL download  jika ada rilis yang lebih baru..

wget https://getgrav.org/download/core/grav-admin/1.6.9
unzip 1.6.9
mv grav-admin/* . && mv grav-admin/.* .
rm -rf grav-admin 1.6.9

Ubah kepemilikan direktori /var/www/grav menjadi  nginx:

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

kemudian buka konfigurasi berikut :

sudo vim /etc/php-fpm.d/www.conf

Periksa konfigurasi user dan group, jika mereka memiliki nilai apache sebagai user dan group ubah menjadi nginx

user = nginx
group = nginx

Restart PHP-FPM service.

sudo systemctl restart php-fpm.service

Buat direktori /var/lib/php/session/dan ubah kepemilikan menjadi nginx:

sudo mkdir -p /var/lib/php/session/ && sudo chown -R nginx:nginx /var/lib/php/session/

buka domain Anda di web browser dan ikuti instruksi yang ada di layar. Untuk akses Grav admin, tambahkan /admin di url GravCMS anda.

Langkah 5 – Selesaikan Instalasi Grav CMS

Buka situs Anda di web browser dan ikuti instruksi untuk menyelesaikan instalasi Grav CMS. Buat akun admin dengan klik tombol “Create User”

GRAV CMS Installer

Setelah membuat akun admin, Anda akan dialihkan ke dasbor admin Grav:

GRAV CMS Admin Dashboard

Pada poin ini, Instalasi Grav CMS selesai.