Cara Install Moodle di VPS CentOS 7

Cara Install Moodle di VPS CentOS 7

Kemajuan teknologi saat ini sudah sangat pesat, apalagi pada sektor pendidikan. Dulu, kegiatan belajar mengajar hanya dapat diterapkan secara tatap muka langsung, namun saat ini sudah dapat dilakukan secara online atau daring. Artikel ini akan membahas tentang cara instalasi Moodle di server VPS CentOS 7 dengan Nginx webserver untuk performa terbaik, lengkap dengan tutorial instalasi SSL dan pengamanan servernya, dipersembahkan oleh Ninja Support Dewaweb.

Moodle

Moodle adalah salah satu CMS (Content Management System) populer yang cocok digunakan sebagai media pembelajaran atau biasa disebut e-learning. Ada 2 dashboard terpisah di Moodle, yaitu untuk pengajar (guru atau dosen) dan murid.

E-learning

E-learning adalah sebuah konsep pendidikan yang memanfaatkan teknologi dalam proses belajar mengajar. Konsep ini diharapkan dapat membantu meningkatkan kualitas proses belajar mengajar di seluruh Indonesia, terutama melalui website. Bagaimana tidak, dengan memanfaatkan Moodle, website e-learning dapat diakses di seluruh lokasi hanya dengan mengakses ke website e-learning.

Baca Juga: Apa itu Moodle? Penjelasan Fitur, Fungsi dan Kelebihannya

Persiapan install Moodle di CentOS 7

  1. Pastikan kamu sudah memiliki cloud server (VPS) dan domain. Jika belum, kamu bisa membeli VPS Indonesia dan Domain Murah di Dewaweb terlebih dulu.
  2. Akses root ke VPS kamu.

Cara Instalasi Moodle di Server VPS CentOS 7 dengan Nginx

Berikut ini panduan instalasi Moodle di server VPS CentOS 7 dengan Nginx:

Update Server

Pertama, pastikan server kamu sudah di-update agar package-nya juga ikut ter-update lalu lakukan reboot server.

$ yum update -y
$ reboot

Instal Nginx

Selanjutnya, lakukan instalasi Nginx dari Epel Repository, karena secara default nginx tidak tersedia pada package di CentOS 7, maka kamu perlu menambahkan epel-repository agar dapat menginstal nginx.

$ yum install epel-release -y
$ yum install nginx -y

Start dan enable on-boot pada Nginx

$ systemctl start nginx
$ systemctl enable nginx

Proses Install Nginx sudah selesai.

Install & Konfigurasi PHP-FPM

Moodle versi 3.7 atau lebih diperlukan php versi minimal 7.1, maka kami akan menggunakan php 7.2. Sedangkan untuk php-fpm 7.2 secara default tidak tersedia pada CentOS repository, maka kamu perlu menambahkan third-party repository dari Webtatic.

$ rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Instal extension yang dibutuhkan oleh Moodle.

$ yum install -y graphviz aspell php72w-fpm php72w-cli php72w-pspell php72w-curl php72w-gd php72w-intl php72w-mysql php72w-xml php72w-xmlrpc php72w-ldap php72w-zip php72w-json php72w-opcache php72w-readline php72w-mbstring php72w-soap

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

Save dan Exit.

Lalu, ke directory 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 ubah user dan group menjadi ‘nginx’.

user = nginx
group = nginx

Ubah line 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

Setelah itu uncomment pada security limit extension, hanya enable .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

Save dan Exit.

Kemudian, kita perlu membuat directory baru untuk keperluan php session path dan merubah 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/

Konfigurasi PHP-FPM telah selesai, start php-fpm dan enable on-boot.

$ systemctl start php-fpm
$ systemctl enable php-fpm

PHP-FPM akan jalan pada socket file, untuk memastikan apakah bisa menggunakan perintah netstat.

$ netstat -lx | grep php-fpm.sock
unix  2      [ ACC ]     STREAM     LISTENING     227368   /run/php-fpm/php-fpm.sock

Proses instalasi dan konfigurasi PHP-FPM sudah selesai.

Baca Juga: 5 Plugin Moodle Penting untuk e-Learning

Install & Konfigurasi MariaDB

Di sini kami menggunakan MariaDB sebagai Database Server. Package MariaDB sudah tersedia di repository CentOS. Namun kami ingin menggunakan versi terbarunya, yaitu 10.3

Tambah Repository MariaDB 10.3.

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

Tambahkan script di bawah ini pada repository tersebut.

# 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

Pada akhir section [mysqld], paste konfigurasi di bawah ini.

default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda

Save dan Exit, kemudian start dan enable on-boot.

$ systemctl start mariadb
$ systemctl enable mariadb

MariaDB ataupun 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!

Konfigurasi MariaDB sudah selesai!

Langkah selanjutnya adalah membuat database untuk moodle, lalu grant privileges database user tersebut.

$ mysql -u root -p

Masukkan password yang tadi digunakan saat melakukan secure installation.

Kemudian buat database, database user, dan password, kemudian grant privileges.

CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'p4ssw0rd123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'p4ssw0rd123';
FLUSH PRIVILEGES;

Jika salah satu langkah pada cara instalasi Moodle di server VPS CentOS 7 di atas dijalankan dengan benar, seharusnya kini kamu sudah berhasil membuat user dan database untuk Moodle.

Proses instalasi dan konfigurasi MariaDB juga sudah selesai.

Baca Juga: Cara Instalasi Moodle di cPanel Hosting

Download dan Konfigurasi Moodle

Untuk melakukan download moodle, kami download melalui github repository. Oleh karena itu, kamu perlu menginstal perintah git.

$ yum install git -y

Buat directory web root /var/www/

$ mkdir -p /var/www/

Clone moodle dari github repository.

$ cd /var/www/
$ git clone https://github.com/moodle/moodle.git

Ke directory moodle dan cek branch moodle yang tersedia.

$ cd moodle/
$ git branch -a

Pilih latest stable branch dan checkout latest branch version. Saat artikel ini dibuat, versi paling terbaru dan stabil adalah versi 39.

$ git branch --track MOODLE_39_STABLE origin/MOODLE_39_STABLE
Branch MOODLE_39_STABLE set up to track remote branch MOODLE_39_STABLE from origin.
$ git checkout MOODLE_39_STABLE
Switched to branch 'MOODLE_39_STABLE'

Kemudian, cek menggunakan perintah di bawah ini.

$ git status

Output-nya akan seperti di bawah ini.

# On branch MOODLE_39_STABLE

nothing to commit, working directory clean

Kemudian, buat directory baru, yaitu moodledata dan pastikan owner, user, dan group dari directory tersebut menggunakan nginx.

$ mkdir -p /var/moodledata
$ chown -R nginx:nginx /var/moodledata
$ chmod 777 /var/moodledata

Lakukan juga pada directory moodle.

chown -R nginx:nginx /var/www/moodle

chmod 755 /var/www/moodle

Proses download dan konfigurasi Moodle telah selesai.

Instal SSL dan Konfigurasi Virtual Host

Agar dapat meningkatkan keamanan dan dapat dijalankan dalam protokol HTTPS, kamu perlu Secure Socket Layer (SSL).

Pada artikel ini, kami menggunakan Let’s Encrypt SSL sebagai sertifikat SSL yang gratis dan aman. Pastikan domain kamu sudah diarahkan ke IP Server, karena untuk instalasi nanti, Let’s Encrypt akan membaca pointing dari domain yang kamu gunakan.

Matikan Nginx terlebih dulu, karena Let’s Encrypt SSL akan melakukan binding port saat instalasinya.

$ systemctl stop nginx

$ cd /opt/

Jika sudah, clone Let’s Encrypt dari github repository.

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

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

Setelah itu 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 sertifikat SSL sudah dipastikan terinstal pada domain kamu, maka langkah selanjutnya adalah konfigurasi Virtual Host.

Kunjungi directory nginx, lalu buat virtual host file moodle.conf

$ cd /etc/nginx/
$ nano conf.d/moodle.conf

Paste konfigurasi di bawah ini pada file konfigurasi moodle.conf. Konfigurasi di bagian SSL akan membuat SSL kamu menjadi Grade A. Ubah domainnya lalu sesuaikan dengan domain kamu.

# PHP Upstream Handler

upstream php-handler {

    server unix:/run/php-fpm/php-fpm.sock;

}

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

server {

    listen 80;

    server_name moodlevps.dewiweb.net;

    # enforce https

    return 301 https://$server_name$request_uri;

}

# HTTPS

server {

        listen 443 ssl;     # port default untuk https

    server_name moodlevps.dewiweb.net;

        # Grade A

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

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

        ssl_certificate_key /etc/letsencrypt/live/moodlevps.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 Moodle Data Directory

        root /var/www/moodle;

        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;

                }

        }

}

Save dan Exit.

Tes konfigurasi nginx dan pastikan tidak ada error, kemudian 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 akan seperti di bawah ini.

cara instalasi moodle di server vps centos 7 ssl labs

Proses instal SSL dan konfigurasi Virtual Host sudah selesai.

 Instal Firewall dan Konfigurasi SELinux

Di artikel ini, kami menggunakan CSF (ConfigServer Security & Firewall) untuk firewall.

$ 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’

Save dan Exit.

Reload csf dengan perintah di bawah ini.

$ csf -r

Konfigurasi SELinux

Pada langkah ini kami akan melakukan konfigurasi SELinux, jika SELinux kamu sudah off, kamu bisa melompati langkah ini. Cek 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

Bisa dicek pada output di atas, SELinux enabled dengan current mode enforcing.

Instal policycoreutils-python

$ yum install policycoreutils-python -y

Kemudian ubah SELinux context file, setting untuk directory moodle web root dan directory moodledata dengan semanage seperti di bawah ini.

$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
$ restorecon -Rv '/var/www/moodle/'
$ semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata(/.*)?'
$ restorecon -Rv '/var/moodledata/'

Jika sudah, restart firewall.

$ systemctl restart csf

Baca Juga: Mengubah Bahasa Moodle menjadi Bahasa Indonesia

Instal Moodle

Selanjutnya adalah melakukan instalasi Moodle, akses domain yang nantinya akan kamu gunakan ke browser. 

cara instalasi moodle di server vps centos 7 installation

Pilih Language English, kemudian Next.

cara instalasi moodle di server vps centos 7 paths

Data Directory menggunakan /var/moodledata, kemudian Next.

Cara Install Moodle di VPS CentOS 7

Untuk database driver, pilih database server yang kamu gunakan, jika MariaDB, maka pilih MariaDB, kemudian Next.

Cara Install Moodle di VPS CentOS 7

Untuk database setting, sesuaikan dengan yang sebelumnya dibuat secara manual di server.

Database Settings:

Database host: localhost

Database name: moodledb

Database user: moodleuser

Database password: p4ssw0rd123

Table prefix: moodle_

Database port: 3306

Unix socket: /var/lib/mysql/mysql.sock

Kemudian klik Next.

cara instalasi moodle di server vps centos 7 notice

Klik Continue.

 cara instalasi moodle di server vps centos 7 server check

Moodle akan melakukan server check, pastikan seluruh statusnya OK. Jika sudah, klik Continue.

cara instalasi moodle di server vps centos 7 done

Setelah itu Moodle akan melakukan instalasi, pastikan semuanya Success, lalu klik Continue.

cara instalasi moodle di server vps centos 7 admin configuration

Pada halaman Admin Configuration, masukkan data-data seperti nama, email, dan password sesuai kebutuhan kamu, kemudian klik Update Profile.

cara instalasi moodle di server vps centos 7 front page settings

Pada Front Page settings, isi data sesuai kebutuhan kamu, jika sudah selesai klik Save Changes.

cara instalasi moodle di server vps centos 7 register info

Pada Registration Information, sesuaikan dengan kebutuhanmu juga, jika sudah selesai, klik Register your site.

 acara instalasi moodle di server vps centos 7 all done

Jika sudah sampai sini, berarti cara instalasi Moodle di Server VPS CentOS 7 tereksekusi lancar tanpa masalah.

Testing

Akses homepage domain moodle kamu.

 cara instalasi moodle di server vps centos 7 homepage

Ini adalah homepage moodle kamu, untuk login klik pojok kanan atas atau akses URL domain.com/login/

cara instalasi moodle di server vps centos 7 login page

Masukkan username dan password kamu, lalu klik Login.

cara instalasi moodle di server vps centos 7 user page

Ini adalah tampilan dari User Page.

cara instalasi moodle di server vps centos 7 admin page

Ini adalah tampilan dari Admin Page.

Pada tahap ini, cara instalasi Moodle di Server VPS CentOS 7 dengan Nginx, SSL, dan Firewall telah selesai.

Baca Juga: Cara Install Moodle di VPS Ubuntu 18.04

Simpulan

Jika dijalankan dengan tepat, cara instalasi Moodle di Server VPS CentOS 7 kini sudah selesai dan dapat digunakan. Cara instalasi Moodle di Server VPS CentOS 7 ini memang tidak sedikit, namun kamu akan mendapatkan hasil yang maksimal hingga e-learning dapat terlaksana dengan optimal.

Kalau kamu tidak ingin repot menjalankan instalasi seperti ini, kamu dapat menghubungi Dewaweb untuk mendapatkan paket khusus cloud hosting Indonesia untuk CBT dan E-Learning dengan semua konfigurasi dan keamanan server yang dikelola oleh Dewaweb. Alhasil, kamu bisa fokus pada mengelola Moodle-nya saja.

Keuntungan lain dari menggunakan layanan di Dewaweb adalah aplikasi Moodle kamu akan di-hosting di data center terbaik di Indonesia (Equinix DCI) dengan kapasitas unlimited bandwidth dan konfigurasi cloud server yang sudah dioptimalkan untuk bisa menangani ribuan siswa yang login sekaligus.

Silakan klik di sini untuk mendapatkan harga terbaik dan sertakan informasi jumlah siswa yang menggunakan aplikasi secara bersamaan.

Demikian artikel ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu!