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 pembuatan konten, YAML untuk konfigurasi sederhana, Parsedown untuk Markdown yang cepat dan dukungan Markdown Ekstra, layer Cache Doctrine untuk performa, Gregwar Image Library untuk manipulasi gambar dinamis, dan Symfony Console untuk antarmuka CLI.

Tutorial ini akan memandu Anda melalui prosedur instalasi Grav CMS pada server Ubuntu 18.04 baru menggunakan Nginx sebagai web server dan sertifikat SSL Let’s encrypt.

Persyaratan

  • Web Server (Apache, Nginx, LiteSpeed, Lightly, IIS,)
  • PHP 7.1.3 atau lebih tinggi dengan PHP extensions: curl, ctype, dom, gd, json, mbstring, openssl, session, simplexmlxml, zip, apcu, opcache, yaml

Prasyarat

  • Server yang menjalankan Ubuntu 18.04
  • User non-root dengan hak akses sudo.

Langkah Opsional

Lakukan langkah berikut untuk memeriksa dan juga memastikan Anda telah siap untuk Install Grav CMS di Ubuntu 18.04.

Periksa versi Ubuntu:

Gunakan perintah berikut untuk memeriksa versi Ubuntu Anda.

lsb_release -ds

Pengaturan zona waktu

Pengaturan zona waktu cukup penting agar pengaturan cron job sesuai dengan waktu lokal, untuk melihat seluruh zona waktu gunakan perintah timedatectl dan tampilkan seluruh zona waktu yang tersedia.

timedatectl list-timezones

Pada contoh kali ini kita akan mengatur pada Zona waktu menjadi Asia/Jakarta :

sudo timedatectl set-timezone 'Asia/Jakarta'

Perbarui paket sistem operasi Anda:

sudo apt update && sudo apt upgrade -y

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

sudo apt install -y curl wget vim git unzip socat bash-completion

Langkah 1 – Install PHP dan PHP extensions

Install PHP dan semua PHP extensions :

sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-xml php7.2-zip php7.2-opcache php-apcu

Untuk menampilkan PHP yang dikompilasi dalam modul, Anda dapat menjalankan:

php -m

ctype
curl
exif
fileinfo
. . .
. . .

periksa versi PHP :

php --version

# PHP 7.2.17-0ubuntu0.18.04.1 (cli) (built: Apr 18 2019 14:12:38) ( 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-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

Layanan PHP-FPM secara otomatis dimulai dan diaktifkan saat reboot, sehingga tidak perlu memulai dan mengaktifkannya secara manual. Kita bisa beralih ke langkah selanjutnya, yaitu instalasi dan pengaturan SSL.

Langkah 2 – Dapatkan Sertifikat Let’s Encrypt (opsional)

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.

Unduh 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.1

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/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 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 apt install nginx

Periksa versi NGINX :

sudo nginx -v
# nginx version: nginx/1.14.0 (Ubuntu)

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

sudo vim /etc/nginx/sites-available/grav.conf
server {

 listen 80;
 listen 443 ssl;

  server_name example.com;

  root /var/www/grav;

  index index.php;

  ssl_certificate /etc/letsencrypt/status.example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/status.example.com/status.example.com.key;
  ssl_certificate /etc/letsencrypt/status.example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/status.example.com_ecc/status.example.com.key;

  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 unix:/var/run/php/php7.2-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
  }

}

Aktifkan konfigurasi grav.conf dengan membuat symlink ke direktori sites-enabled  :

sudo ln -s /etc/nginx/sites-available/grav.conf /etc/nginx/sites-enabled/

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]:

sudo chown -R [username_anda]:[username_anda] /var/www/grav

Masuk ke direktori document root grav cms:

cd /var/www/grav

Download Grav source code via wget dan unzip :

NOTE: 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.8
unzip 1.6.8
mv grav-admin/* . && mv grav-admin/.* .
rm -rf grav-admin 1.6.8

Ubah kepemilikan direktori /var/www/grav menjadi www-data:

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

Buka situs Anda di web browser dan ikuti instruksi untuk menyelesaikan instalasi Grav CMS.

Langkah 5 – Selesaikan pengaturan Grav CMS

Buat akun admin:

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.