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,
Tutorial ini akan memandu Anda melalui prosedur instalasi Grav CMS pada sistem operasi Debian 9 menggunakan Nginx sebagai web server, serta menggunakan acme.sh dan Let’s Encrypt untuk mengkonfigurasi HTTPS.
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,
simplexml
,xml,
zip, apcu, opcache, yaml
apcu(optional), opcache(optional).
Prasyarat
- Server yang menjalankan debian 9.
- User non-root dengan hak akses sudo.
Langkah Opsional
Gunakan perintah berikut untuk memeriksa versi Debian :
lsb_release -ds # Debian GNU/Linux 9.9 (stretch)
Atur 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 Debian operating :
sudo apt install -y curl wget vim git unzip socat apt-transport-https
Langkah 1 – Install PHP dan PHP extensions
Grav CMS membutuhkan PHP versi 7.1 atau lebih tinggi. Pada saat penulisan artikel ini, Debian hanya memiliki PHP versi 7 di repositori default, sehingga Anda harus menggunakan repo pihak ketiga untuk menginstal versi yang lebih baru.
sudo apt install apt-transport-https lsb-release ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list sudo apt update
Install PHP 7.2 dan semua PHP extensions yang diperlukan :
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
periksa versi PHP :
php --version # PHP 7.2.18-1+0~20190503103213.21+stretch~1.gbp101320 (cli) (built: May 3 2019 10:32:13) ( NTS ) # Copyright (c) 1997-2018 The PHP Group # Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies # with Zend OPcache v7.2.18-1+0~20190503103213.21+stretch~1.gbp101320, 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 mkdir /etc/letsencrypt git clone https://github.com/Neilpang/acme.sh.git cd acme.sh sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected] cd ~
Periksa versi acme.sh:
/etc/letsencrypt/acme.sh --version # v2.8.0
Dapatkan sertifikat RSA dan ECC/ECDSA untuk domain/hostname Anda:
# RSA 2048 sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength 2048 # ECDSA sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --keylength ec-256
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
.
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.
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 :
nginx -v # nginx version: nginx/1.10.3
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
Copy dan paste konfigurasi berikut
server {
listen 80;
server_name example.com;
root /var/www/grav;
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 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
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.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 www-data:
sudo chown -R www-data:www-data /var/www/grav
Langkah 5 – Selesaikan pengaturan Grav CMS
Buka situs Anda di web browser dan ikuti instruksi untuk menyelesaikan instalasi Grav CMS. Buat akun admin dengan klik tombol “Create User”
Setelah membuat akun admin, Anda akan dialihkan ke dasbor admin Grav:
Pada poin ini, Instalasi Grav CMS selesai.