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
- Pastikan kamu sudah memiliki cloud server (VPS) dan domain. Jika belum, kamu bisa membeli VPS Indonesia dan Domain Murah di Dewaweb terlebih dulu.
- 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.
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.
Pilih Language English, kemudian Next.
Data Directory menggunakan /var/moodledata, kemudian Next.
Untuk database driver, pilih database server yang kamu gunakan, jika MariaDB, maka pilih MariaDB, kemudian Next.
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.
Klik Continue.
Moodle akan melakukan server check, pastikan seluruh statusnya OK. Jika sudah, klik Continue.
Setelah itu Moodle akan melakukan instalasi, pastikan semuanya Success, lalu klik Continue.
Pada halaman Admin Configuration, masukkan data-data seperti nama, email, dan password sesuai kebutuhan kamu, kemudian klik Update Profile.
Pada Front Page settings, isi data sesuai kebutuhan kamu, jika sudah selesai klik Save Changes.
Pada Registration Information, sesuaikan dengan kebutuhanmu juga, jika sudah selesai, klik Register your site.
Jika sudah sampai sini, berarti cara instalasi Moodle di Server VPS CentOS 7 tereksekusi lancar tanpa masalah.
Testing
Akses homepage domain moodle kamu.
Ini adalah homepage moodle kamu, untuk login klik pojok kanan atas atau akses URL domain.com/login/
Masukkan username dan password kamu, lalu klik Login.
Ini adalah tampilan dari User 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!