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:
- 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.
- 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”.
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.
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).
Berikut ini adalah tampilan halaman login untuk Administrator.
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.
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!