Fork adalah CMS open-source yang mudah digunakan menggunakan Komponen Symfony. Fork memiliki antarmuka yang intuitif dan ramah pengguna, aplikasi hebat yang dapat Anda download untuk memperluas situs Anda, dan koleksi template yang indah.

Dalam tutorial ini, kita akan melalui instalasi dan pengaturan Fork CMS pada sistem Debian 9 dengan menggunakan Nginx sebagai web server, MariaDB sebagai database, dan secara opsional Anda dapat mengamankan transport layer dengan menggunakan Acme.sh client dan sertifikat Let’s Encrypt untuk menambahkan dukungan SSL.

Persyaratan

Persyaratan untuk Install dan Menjalankan Fork CMS adalah :

  • PHP versi 7.1 atau lebih tinggi.
  • Modul PHP extensions terinstall dan diaktifkan : cURLlibxmlDOMSimpleXMLSPLPDO (with MySQL driver)mb_stringiconvGD2 graphics libraryJSONPCREintl.
  • MySQL 5.0 atau lebih tinggi.
  • NGINX atau Apache dengan  .htaccessmod_rewritemod_expires (optional tapi direkomendasikan), mod_deflate(optional).

Prasyarat

  • Server dengan sistem operasi Debian 9.
  • Masuk sebagai root atau user dengan hak sudo

Sebelum Mulai

Sebelum memulai, Anda perlu memperbarui sistem dengan versi terbaru. Anda dapat melakukan ini dengan menjalankan perintah berikut dengan user root atau user biasa dengan hak sudo:

sudo apt update && sudo apt upgrade -y

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 (software). Ini adalah langkah pertama yang penting karena memastikan sistem up-to-date dan mendapat perbaikan keamanan untuk paket perangkat lunak default sistem operasi Anda:

apt update && apt upgrade -y

Instal beberapa paket yang diperlukan untuk administrasi dasar sistem operasi Debian 9 :

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

Langkah 1 – Install PHP and PHP extensions

Debian tidak menyertakan instalasi PHP terbaru di repository resmi mereka. Kita akan Instal PHP, serta ekstensi PHP yang diperlukan dari repository pihak ketiga:

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 dan semua PHP extensions yang di perlukan oleh Fork CMS :

sudo apt install -y php7.2 php7.2-cli php7.2-fpm php7.2-common php7.2-mysql php7.2-curl php7.2-json php7.0-zip php7.2-gd php7.2-xml php7.2-mbstring php7.2-opcache php7.2-intl

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

php -m

ctype
curl
exif
fileinfo
. . .
. . .

periksa versi PHP :

php --version
# PHP 7.2.19-1+0~20190531112637.22+stretch~1.gbp75765b (cli) (built: May 31 2019 11:26: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.19-1+0~20190531112637.22+stretch~1.gbp75765b, Copyright (c) 1999-2018, by Zend Technologies

Layanan PHP-FPM di Debian 9 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 Nginx.

Langkah 2 – Install MariaDB dan Buat Database

Install MariaDB database server:

sudo apt install -y mariadb-server

Periksa versi MariaDB :

mysql --version
# mysql Ver 15.1 Distrib 10.1.38-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

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 Fork CMS. Dalam contoh berikut, kita akan membuat database dengan nama forkdb dan dengan nama user root

mysql> CREATE DATABASE forkdb;
mysql> GRANT ALL ON forkdb.* TO 'root' IDENTIFIED BY 'g4nt!_d3n9an_Pa$$w0rd';
mysql> FLUSH PRIVILEGES;

Exit dari MariaDB:

mysql> exit

Step 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.

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.2

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

Step 4 – Install and configure NGINX

Download dan install NGINX dari repository Debian :

sudo apt install -y nginx

Periksa versi NGINX :

sudo nginx -v
# nginx version: nginx/1.10.3

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

sudo nano /etc/nginx/sites-available/fork.conf

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

server {
    listen 80;
    listen 443 ssl;
    root /var/www/fork;
    index index.php index.html;

    server_name example.com;

    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;

    location / {
    # Checks whether the requested url exists as a file $uri or directory $uri/ in the root, else redirect to /index.php.
        try_files $uri $uri/ @redirects;
    }

    location @redirects {
        rewrite ^ /index.php;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_read_timeout 60;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # Don't pollute the logs with common requests
    location = /robots.txt  { access_log off; log_not_found off; }
    location =https://cdn.linuxid.net/favicon.ico?x99223 { access_log off; log_not_found off; }

    # As Fork CMS has the app_root as doc_root, we need to restrict access to a few things for security purposes!
    location ~* ^/(composer\..*|vendor\/.*|Procfile$|\.git\/.*|src\/Console.*|.*\.gitignore|\.editorconfig|\.travis.yml|autoload\.php|bower\.json|phpunit\.xml\.dist|.*\.md|app\/logs\/.*|app\/config\/.*|src\/Frontend\/Cache\/CompiledTemplates.*|src\/Frontend\/Cache\/Locale\/.*\.php|src\/Frontend\/Cache\/Navigation\/.*\.php|src\/Frontend\/Cache\/Search\/.*|src\/Backend\/Cache\/CompiledTemplates\/.*|src\/Backend\/Cache\/Locale\/.*\.php)$ {
        deny all;
        access_log off;
        log_not_found off;
    }

    # Deny access to dot-files.
    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}

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

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

Periksa konfigurasi NGINX untuk melihat tidak ada syntax errors:

sudo nginx -t

Reload NGINX service:

sudo systemctl reload nginx.service

Langkah 5 – Install Composer

Install Composer, PHP dependency manager :

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

php -r "if (hash_file('sha384', 'composer-setup.php') === '48e3236262b34d30969dca3c37281b3b4bbe3221bda826ac6a9a62d6444cdb0dcd0615698a5cbe587c3f0fe57a54d8f5') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

php composer-setup.php

php -r "unlink('composer-setup.php');"

sudo mv composer.phar /usr/local/bin/composer

Periksa versi Composer :

composer --version
# Composer version 1.8.5 2019-04-09 17:46:47

NOTE: Perintah instalasi komposer kemungkinan akan berubah di masa mendatang, jadi periksa https://getcomposer.org/download/ untuk perintah yang paling mutakhir jika perintah di atas tidak berfungsi.

Step 6 – Install Fork CMS

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

sudo mkdir -p /var/www/fork

Ubah kepemilikan dari direktori /var/www/fork menjadi  username anda, misal username saya budi, maka:

sudo chown -R budi:budi /var/www/fork

Ganti budi dengan username login Anda. pada langkah berikutnya masuk ke direktori document root Fork cms dan download stable release dari Fork CMS :

cd /var/www/fork
composer create-project forkcms/forkcms .

Ubah kepemilikan direktori /var/www/fork menjadi www-data.

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

Edit file app/config/parameters.yml.dist dan atur informasi database .

sudo nano /var/www/fork/app/config/parameters_install.yml

Dengan menggunakan browser web pilihan Anda, buka situs Anda dan ikuti installer Fork CMS. Untuk mengakses admin area Fork cukup tambahkan /private ke URL situs Anda.

Langkah 7 – Selesaikan Setup Fork CMS

Pastikan server Anda memenuhi semua persyaratan dan lanjutkan:

page 1- Fork CMS installer

Pilih bahasa dan klik next:

page 2 - Fork CMS Select language

Pilih pengaturan sesuai keinginan dan klik next:

page 3 - Fork CMS Settings

Masukkan pengaturan database Anda dan klik next. Pastikan Anda sudah membuat database.

page 4 - Fork CMS Database details

Buat user dan selesaikan instalasi:

page 5 - Fork CMS Finish installation

Anda akan melihat halaman berikut setelah Anda menyelesaikan semua langkah di atas:

page 6 - Fork CMS login

Pada poin ini Anda telah berhasil menginstal Fork CMS.