Cara Install Candy CBT dengan Nginx di VPS CentOS 7

Saat ini, penerapan sistem pembelajaran daring atau e-learning sedang digencarkan, baik untuk kegiatan belajar, tes, atau ujian secara daring. Jika biasanya ujian daring dilakukan melalui hosting, kali ini kamu akan mempelajari cara install Candy CBT yang dilakukan di cloud server (VPS) dengan sistem operasi CentOS 7 menggunakan Nginx sebagai web server.

Apa Itu Candy CBT

Candy CBT adalah salah satu aplikasi atau software ujian berbasis komputer yang dilakukan secara daring dan kini mulai banyak digunakan oleh berbagai instansi pendidikan karena fitur dan kegunaannya. Satu hal yang membuatnya lebih menarik, Candy CBT termasuk aplikasi open source yang memungkinkan pengguna untuk mengunduh secara gratis dan memodifikasinya sesuai keperluan.

Cara Install Candy CBT dengan Nginx di CentOS 7

Sebelum meng-install Candy CBT di CentOS 7, pastikan kamu sudah mempersiapkan beberapa hal berikut:

  1. Kamu sudah memiliki VPS (cloud server) dan domain yang aktif. Jika belum, kamu bisa melakukan pembelian Cloud VPS Murah Indonesia dan domain murah terlebih dulu.
  2. Sudah memiliki berkas Candy CBT.

Inilah langkah-langkah instalasi yang akan dilakukan:

  • Update Server
  • Install Firewall
  • Install Nginx
  • Install dan Konfigurasi PHP-FPM
  • Install MariaDB dan Buat Database
  • Download & Konfigurasi Candy CBT
  • Import SQL
  • Install SSL Let’s Encrypt dan Konfigurasi Virtual Host
  • Konfigurasi SELinux
  • Testing

Simak penjabarannya berikut ini.

Baca juga: Apa itu VPS? Penjelasan Lengkap dan Manfaatnya untuk Website

Update Server

Login sebagai root ke server, kemudian perbarui server dan reboot untuk memastikan bahwa server kamu sudah up-to-date.

$ yum update -y

$ reboot

 

Install Firewall

Firewall yang akan digunakan dalam cara install Candy CBT di CentOS 7 ini adalah CSF (ConfigServer Security & Firewall). Gunakan perintah berikut.

 

$ cd /usr/src

$ wget https://download.configserver.com/csf.tgz 

$ tar -xzf csf.tgz

$ cd csf

$ install.sh

Edit csf.conf lalu ubah value make TESTING menjadi 0.

 

$ nano /etc/csf/csf.conf

make TESTING=’0’

 

Simpan dan keluar, kemudian reload CSF dengan perintah di bawah ini

$ csf -r

 

Install Nginx

Mengingat package Nginx tidak tersedia di CentOS 7 secara default, maka kamu perlu menambahkan epel-repository untuk meng-install Nginx.

$ yum install epel-release -y

$ yum install nginx -y

 

Setelah itu, mulai dan enable on-boot pada Nginx.

$ systemctl start nginx

$ systemctl enable nginx

 

Install dan Konfigurasi PHP-FPM

Bahasa script PHP pada instalasi Candy CBT ini menggunakan versi terbarunya, yaitu 7.3. Namun, versi terbaru PHP juga tidak tersedia secara default di repositori CentOS sehingga kamu perlu menambahkan repositori di bawah ini.

$ wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm

$ rpm -Uvh remi-release-7.rpm

$ yum install yum-utils -y

$ yum-config-manager --enable remi-php73

$ yum --enablerepo=remi,remi-php73 install php-fpm php-common -y

$ yum --enablerepo=remi,remi-php73 install php-opcache php-pecl-apcu php-cli php-pear php-pdo php-mysqlnd php-pgsql php-pecl-mongodb php-pecl-redis php-pecl-memcache php-pecl-memcached php-gd php-mbstring php-mcrypt php-xml -y

 

Setelah instalasi selesai, edit konfigurasi file php.ini

$ nano /etc/php.ini

 

Uncomment atau hilangkan “#” pada cgi.fix_pathinfo dan ubah value-nya menjadi 0.

cgi.fix_pathinfo=0

 

Jika sudah, simpan lalu keluar. Kemudian, kunjungi direktori php-fpm dan ubah konfigurasi php-fpm pada file www.conf.

$ cd /etc/php-fpm.d/

$ nano www.conf

 

Mengingat web server yang digunakan adalah Nginx, maka kamu perlu mengubah user dan group menjadi ‘nginx’.

user = nginx

group = nginx

 

Ubah baris listen yang sebelumnya ” listen = 127.0.0.1:9000 “, menjadi seperti di bawah ini.

listen = /run/php-fpm/php-fpm.sock

 

Uncomment dan ubah owner, group, dan mode seperti di bawah ini.

listen.owner = nginx

listen.group = nginx

listen.mode = 0660

 

Lalu lakukan uncomment lagi di security limit extension, hanya aktifkan .php saja.

security.limit_extensions = .php

 

Uncomment PHP Environment.

env[HOSTNAME] = $HOSTNAME

env[PATH] = /usr/local/bin:/usr/bin:/bin

env[TMP] = /tmp

env[TMPDIR] = /tmp

env[TEMP] = /tmp

 

Lalu simpan dan keluar. Kemudian, kita perlu membuat direktori baru untuk keperluan php session path dan mengubah owner-nya menjadi Nginx.

$ mkdir -p /var/lib/php/session/

$ chown -R nginx:nginx /var/lib/php/session/

 

Ubah owner pada php-fpm socket file ke Nginx juga.

$ chown -R nginx:nginx /run/php-fpm/

 

Saat ini, konfigurasi PHP-FPM telah selesai, mulai ulang php-fpm dan enable on-boot.

$ systemctl start php-fpm

$ systemctl enable php-fpm

 

PHP-FPM akan jalan pada socket file, untuk memastikannya kamu bisa menggunakan perintah netstat berikut.

$ netstat -lx | grep php-fpm.sock

unix  2      [ ACC ]     STREAM     LISTENING     58063    /run/php-fpm/php-fpm.sock

 

Sampai saat ini, proses install dan konfigurasi PHP-FPM untuk Candy CBT di CentOS 7 sudah selesai.

Install MariaDB dan Create Database

Database Server yang digunakan dalam tutorial ini adalah MariaDB. Kamu bisa menemukan package MariaDB di repositori CentOS. Namun, kami ingin menggunakan versi terbarunya, yaitu 10.3, menggunakan perintah di bawah ini.

$ nano /etc/yum.repos.d/maria10-3.rep

 

Setelah menambahkan repositori dengan script di atas, sekarang tambahkan script di bawah ini pada repositori yang sudah ter-install.

 

# MariaDB 10.3 CentOS repository list - created 2018-11-19 23:14 UTC

# http://downloads.mariadb.org/mariadb/repositories/

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.3/centos7-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1




$ yum install mariadb-server mariadb -y


Edit konfigurasi pada my.cnf.

$ nano /etc/my.cnf

 

Di akhir section [mysqld], tempelkan konfigurasi berikut ini.

default_storage_engine = innodb

innodb_file_per_table = 1

innodb_file_format = Barracuda

 

Semudian simpan dan keluar, lalu start dan enable on-boot.

$ systemctl start mariadb

$ systemctl enable mariadb

 

MariaDB dan MySQL berjalan pada port 3306, lakukan secure installation.

$ mysql_secure_installation

 

Enter current password for root (enter for none):

OK, successfully used password, moving on...

 

Set root password? [Y/n] y

New password:

Re-enter new password:

Password updated successfully!

Reloading privilege tables..

 ... Success!




Remove anonymous users? [Y/n] y

 ... Success!




Disallow root login remotely? [Y/n] y

 ... Success!




Remove test database and access to it? [Y/n] y

 - Dropping test database...

 ... Success!

 - Removing privileges on test database...

 ... Success!




Reload privilege tables now? [Y/n] y

 ... Success!




Cleaning up...




All done!  If you've completed all of the above steps, your MariaDB

installation should now be secure.




Thanks for using MariaDB!

 

Jika sudah sampai di sini, berarti konfigurasi MariaDB sudah selesai. Langkah selanjutnya adalah membuat database untuk candycbt, lalu berikan izin hak (grant privileges) untuk pengguna database tersebut.

 

$ mysql -u root -p

Masukkan password yang tadi digunakan pada secure installation. Kemudian buat database, database user, password, kemudian grant privileges.

 

CREATE DATABASE candycbtdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'candycbtuser'@'localhost' IDENTIFIED BY 'p4ssw0rd123';

GRANT ALL PRIVILEGES ON candycbtdb.* TO 'candycbtuser'@'localhost' IDENTIFIED BY 'p4ssw0rd123';

FLUSH PRIVILEGES;

Jika sudah sampai di sini, berarti kamu sudah berhasil membuat user dan database untuk Candy CBT.

Download dan Konfigurasi Candy CBT

Pengunduhan Candy CBT kali ini dilakukan melalui Github Repository, maka kamu perlu menginstal dengan perintah Git berikut.

$ yum install git -y

 

Buat direktori web root /var/www/.

$ mkdir -p /var/www/

 

Gandakan candycbt dari Github Repository.

$ cd /var/www/

$ git clone https://github.com/sutam21/candycbt

 

Jangan lupa untuk mengubah owner-nya menjadi Nginx dan izin direktorinya.

$ chown -R nginx:nginx /var/www/candycbt

$ chmod 755 /var/www/candycbt

 

Setelah itu, ubah konfigurasi database pada file config candycbt.

$ cd /var/www/candycbt/config

$ nano config.database.php

 

Ubah pada bagian berikut:

//konfigurasi server database

$host = 'localhost';

$user = candycbtuser;

$pass = 'p4ssw0rd123';

$debe = candycbtdb;

 

Lalu ubah dari HTTP menjadi HTTPS pada berkas konfigurasi berikut.

$ cd /var/www/candycbt

$ nano config.default.php

 

Di bagian  $homeurl = “http://” ubah menjadi:

 $homeurl = "https://"

 

Pastikan kamu telah mengubah semua $homeurl menjadi “https”.

Baca Juga: Google Sangat Menyukai Website yang Menggunakan HTTPS atau SSL

Import SQL

Langkah install Candy CBT di CentOS 7 selanjutnya adalah melakukan impor berkas SQL Candy CBT yang berada pada path ‘/var/www/candycbt/config’ dengan cara berikut.

$ cd /var/www/candycbt/config

$ mysql -u candycbtuser -p candycbtdb < ecandy28r3.sql 

 

Kemudian masukkan kata sandi database.

Install SSL Let’s Encrypt dan Konfigurasi Virtual Host

Agar dapat meningkatkan keamanan dan menjalankan program dalam protokol HTTPS, kamu memerlukan Secure Socket Layer (SSL). Rekomendasi dari Dewaweb adalah Let’s Encrypt SSL yang bisa memberikan perlindungan transfer data secara gratis dengan instalasi yag mudah. Pastikan domain kamu sudah diarahkan ke server IP, karena Let’s Encrypt akan membaca pointing dari domain yang kamu gunakan.

Matikan web server Nginx terlebih dulu, karena Let’s Encrypt akan melakukan binding port saat instalasi nanti.

$ systemctl stop nginx

$ cd /opt/

 

Kemudian clone Let’s Encrypt dari Github Repository.

$ git clone https://github.com/letsencrypt/letsencrypt

$ ./letsencrypt/letsencrypt-auto certonly --standalone 

 

Lalu ikuti instruksinya. Path sertifikat ada pada:/etc/letsencrypt/live/namadomain/

Full Chain: /etc/letsencrypt/live/namadomain/fullchain.pem

Private Key: /etc/letsencrypt/live/namadomain/privkey.pem

Jika SSL sudah dipastikan ter-install di domainmu, maka langkah selanjutnya adalah konfigurasi virtual host. Kunjungi direktori Nginx, lalu buat virtual host file candycbt.conf

$ cd /etc/nginx/

$ nano conf.d/candycbt.conf

 

Tempelkan perintah konfigurasi di bawah ini ke file konfigurasi candycbt.conf. Konfigurasi di bagian SSL akan membuat SSL kamu menjadi Grade A, ubah domainnya sesuai nama domain kamu.

# Nginx redirect HTTP to HTTPS - candycbtvps.dewiweb.net

server {

    listen 80;

    server_name candycbtvps.dewiweb.net;

    # enforce https

    return 301 https://$server_name$request_uri;

}




# HTTPS

server {

        listen 443 ssl;     # port default untuk https

    server_name candycbtvps.dewiweb.net;




        # Grade A

        # Use certificate and key provided by Let's Encrypt:

        ssl_certificate /etc/letsencrypt/live/candycbtvps.dewiweb.net/fullchain.pem;

        ssl_certificate_key /etc/letsencrypt/live/candycbtvps.dewiweb.net/privkey.pem;

ssl_session_timeout 5m;

        ssl_protocols TLSv1.2 TLSv1.3;

        ssl_prefer_server_ciphers on;

        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';




        # Root Candy CBT Directory

        root /var/www/candycbt;

        rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;




        location ^~ / {

                try_files $uri $uri/ /index.php?q=$request_uri;

                index index.php index.html index.htm;




                location ~ \.php$ {

                        include fastcgi.conf;

                        fastcgi_pass php-handler;

                }

        }

}


Jika sudah, simpan dan keluar. Kemudian, tes hasil konfigurasi Nginx dan pastikan tidak ada kesalahn atau error, lalu restart Nginx.

$ nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

$ systemctl start nginx

 

Jika dites pada SSL Labs maka hasilnya seperti di bawah ini.

Asset Blog Dewaweb

Konfigurasi SELinux

Di langkah ini kami akan melakukan konfigurasi SELinux, tapi jika SELinux kamu sudah mati, kamu bisa melewati bagian ini. Pertama, cek situs SELinux dengan perintah di bawah ini.

$ sestatus

SELinux status:                 enabled

SELinuxfs mount:                /sys/fs/selinux

SELinux root directory:         /etc/selinux

Loaded policy name:             targeted

Current mode:                   enforcing

Mode from config file:          enforcing

Policy MLS status:              enabled

Policy deny_unknown status:     allowed

Max kernel policy version:      31

 

Jika tampilannya sama seperti di atas, dengan status SELinux enabled dan current mode-nya enforcing, maka nonaktifkan dengan perintah berikut ini.

Install policycoreutils-python



$ yum install policycoreutils-python -y

 

Kemudian ubah SELinux context file, pengaturan untuk direktori candycbt web root dengan semanage seperti di bawah ini.

$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/candycbt(/.*)?'

$ restorecon -Rv '/var/www/candycbt/'

 

Jika sudah, restart firewall.

$ systemctl restart csf

 

Testing

Langkah terakhir adalah mengetes hasil dari instalasi yang sudah dilakukan sebelumnya. Akses domain kamu pada browser. Gambar berikut menampilkan halaman login untuk pengguna (peserta ujian).

install candy cbt centos 7 succeed

Berikut ini adalah tampilan halaman login untuk Administrator.

Asset Blog Dewaweb

Data untuk default Admin-nya:

user : admin

password : usbk2020

Setelah itu, kamu perlu mengubah password Administrator demi keamanan website-mu. Gambar berikut menampilkan dashboard Administrator Candy CBT.

dashboard candy cbt

Baca Juga: Cara Install Moodle di VPS CentOS 7

Simpulan

Jika kamu belum tahu, cara install Candy CBT untuk CentOS 7 ini bisa dilakukan dengan 2 cara, yaitu melalui hosting maupun VPS, tergantung keperluanmu dan jumlah siswa yang akan login sekaligus. Silakan hubungi Dewaweb dan informasikan jumlah siswa yang akan login sekaligus dan dapatkan paket cloud hosting khusus untuk CBT dan e-learning.

Kamu tak perlu cemas dengan hal-hal teknis website, karena semua konfigurasi dan keamanan server akan dikelola oleh Dewaweb, jadi kamu bisa fokus pada pengelolaan Candy CBT saja. Keuntungan lainnya, website kamu akan disimpan di datacenter terbaik di Indonesia (Equinix DCI) dengan kapasitas unlimited bandwidth dan konfigurasi cloud server yang dapat menerima ribuan siswa login sekaligus.

Demikian artikel tentang cara install Candy CBT dengan Nginx di VPS CentOS 7 ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu, Sahabat Dewaweb. Siap memajukan sistem pendidikan di Indonesia? Salam sukses online!