Install Moodle di Ubuntu Server 20.04 LTS menggunakan LEMP Stack (Nginx, MariaDB, PHP)

Senin, 05 Oktober 2020

 Moodle merupakan CMS (Content Management System) yang sifatnya gratis dan berbentuk open-source. moodle mengusung konsep LMS (Learning Management System), moodle merupakan solusi yang bisa digunakan dalam suatu organisasi untuk menyelenggaran pendidikan secara daring.

Kali ini saya akan membahas bagaimana menginstalasi Moodle menggunakan konsep LEMP Stack (Nginx, Mariadb dan PHP). instalasi ini menggunakan komputer server virtual Ubuntu Server versi 20.04 LTS.

Persiapan kebutuhan :

  • Ubuntu Server 20.04
  • Webserver (Apache/Nginx)
  • PHP 7.0 terbarukan
  • MySQL/MariaDB sebagai database server
  • perisapkan file moodle

Opsional, setelah temen-temen download file moodle.tgz baik dari OS manapun temen-temen dapat memindahkannya file tersebut ke server yang sudah temen-temen siapakan agar pada saat instal moodle temen-temen tidak membutuhkan waktu lama lagi. caranya sebagai berikut :

scp -p /Users/mac/Downloads/moodle-latest-39.tgz joko@192.168.100.80:/home/joko

script di atas menandakan saya memindahkan file dari penyimpanan local komputer saya ke server yang sudah saya siapkan, dalam hal ini saya memindahkan file tersebut ke dalam direktori home

Untuk teman-teman yang ingin mencobanya dapat mengikuti langkah berikut :

Cek IP Address server

# ifconfig

Login dengan menggunakan layanan SSH kemudian melakukan update pada sistem server

#ssh namaserver@IP_Address

contoh : ssh joko@192.168.100.50 kemudian masuk sebagai root admin dan melakukan update system

# sudo su
# sudo apt update && apt upgrade

Setelah selesai selanjutnya Installing Web Server

Installing Webserver Apache :

# sudo apt -y install apache2
# sudo ufw allow 'Apache'

setelah selesai restart Apache :

# sudo systemctl restart apache

Installing Webserver Nginx + MySQL + PHP

# sudo apt install nginx mysql-server php-mysql php-gd php-intl php-xmlrpc php-soap php-cli php-zip php-mbstring php-curl php-xml php-pear php-bcmath php-fpm

langkah diatas apabila jika ingin mengunakan package tetapi jika ingin manual agar lebih rinci proses nya maka dapat mengikuti langkah berikut :

Installing Webserver Nginx

# sudo apt install nginx

Setelah selesai instalasi selanjutnya kemudian memberhentikan layanan Nginx dan melakukan start dan Enable Nginx agar selalu berjalan pada boot.

# sudo systemctl stop nginx.service
# sudo systemctl start nginx.service
# sudo systemctl enable nginx.service

setelah itu cek apakah web server sudah diinstall dengan baik dengan cara ketik http://localhost atau ketikan IP Address Server

Installing MariaDB

# sudo apt install mariadb-server mariadb-client

setelah selesai melakukan install kemudian melakukan stop, start dan enable pada MariaDB agar dapat berjalan pada server boot.

# sudo systemctl stop mariadb.service
# sudo systemctl start mariadb.service
# sudo systemctl enable mariadb.service

Selanjutnya adalah sedikit memberikan konfigurasi pada database server untuk menyelesaikan tahapan instalasinya.

# sudo mysql_secure_installation

Selanjutnya ada memberikan isian jawaban pada tahap installing khusus jika akan memberikan password maka isikan password saja tetapi jika tidak akan memberikan password cukup tekan Enter.

Enter current password for root (enter for none): Just press the [Enter] key, as no password is set by default
Set root password? [Y/n]: Y
New password: Enter password (sukses)
Re-enter new password: Repeat password (sukses)
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

Pada kasus diatas saya coba memberikan password database server ‘sukses’setelah oke silahkan dicek dengan menuliskan code berikut untuk melihat apakah installasi mariadb telah berhasil : sudo mysql -u root -p

# Optional
konfigurasi file yang berada pada sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf dengan menambahkan code tepat dibawah baris code #skip-external-locking kemudian tambahkan code sehingga hasilnya akan menajdi seperti ini

skip-external-locking
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = on

Setelah selesai menambahkan code diatas kemudian lakukan restart mariaDB dengan code ini # sudo systemctl restart mariadb.service atau jika tidak melakukan konfigurasi ini langsung ke tahap pembuatan database Moodle saja.

elanjutnya membuat database Moodle *Latihan

# sudo mysql -u root -p 
CREATE DATABASE moodle;
ALTER DATABASE moodle charset=utf8mb4;
ALTER DATABASE moodle CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
GRANT ALL ON root.* to moodle@localhost;
GRANT ALL ON moodle.* TO moodle@localhost IDENTIFIED BY 'moodle';
GRANT ALL ON moodle.* TO moodle identified by 'moodle';
FLUSH PRIVILEGES;
EXIT;

Kalau Operasional lapangan
setup root password (jika diperlukan saja)

mysql
mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');

Setup database operasional dengan username & password akses

# mysql -u root -p
Enter password:
create database moodle;
ALTER DATABASE moodle charset=utf8mb4;
ALTER DATABASE moodle CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
grant INSERT,SELECT on root.* to moodle@localhost;
grant CREATE, INSERT, SELECT, DELETE, UPDATE on moodle.* to moodle@localhost identified by "moodlepassword";
grant CREATE, INSERT, SELECT, DELETE, UPDATE on moodle.* to moodle identified by "moodlepassword";
exit

Selanjutnya melakukan restart MariaDB

/etc/init.d/mysql restart

Install PHP 7.4 dan Extension

# sudo apt install -y software-properties-common
# sudo add-apt-repository ppa:ondrej/php
# sudo apt update
# sudo apt install -y php7.4-fpm php7.4-common php7.4-mbstring php7.4-xmlrpc php7.4-soap php7.4-gd php7.4-xml php7.4-intl php7.4-mysql php7.4-cli php7.4-ldap php7.4-zip php7.4-curl php7.4-opcache php7.4-dev php7.4-imap php7.4-imagick \
imagemagick git zip libgd-dev

Selanjutnya melakukan edit pada /etc/php/7.4/fpm/php.ini kemudian cari dan rubah konfigurasi yang terdapat dibawah sesuaikan dengan kebutuhan setelah itu restart service. (cgi.fix_pathinfo dihilangkan ; kemudian 1 dirubah menajdi 0)

# sudo vi /etc/php/7.4/fpm/php.ini
short_open_tag = On (Optional)
file_uploads = On
allow_url_fopen = On
upload_max_filesize = 100M
post_max_size = 48M
memory_limit = 512M
max_execution_time = 380
max_input_vars = 3000
max_input_time = 1000
cgi.fix_pathinfo = 0

Install Moodle

Download Language Pack & Moodle

# download Lang
cd /usr/local/src
wget https://download.moodle.org/download.php/direct/langpack/3.8/id.zip
# download Moodle
cd /usr/local/src
wget https://download.moodle.org/download.php/direct/stable38/moodle-latest-38.tgz

Install Language Pack

cd /usr/local/src
mkdir -p /var/moodledata/lang
cp id.zip /var/moodledata/lang
cd /var/moodledata/lang
unzip id.zip
chmod -Rf 777 /var/moodledata/lang/
chown -Rf www-data:www-data /var/moodledata/lang/

Install Moodle

cd /usr/local/src
tar -zxvf moodle-latest-38.tgz
mv moodle /var/www/html/moodle

Melakukan konfigurasi modifkasi directory permission

# sudo chown -R www-data:www-data /var/www/html/moodle/
# sudo chmod -R 755 /var/www/html/moodle/
# sudo chmod -Rf 777 /var/moodledata/
# sudo chown www-data /var/moodledata

Konfigurasi Nginx
Untuk dapat melayani Moodle pada Webserver Nginx maka harus membuat file konfigurasi Blok Server Nginx dibawah kemudian simpan dan keluar.

# sudo nano /etc/nginx/sites-available/moodle
server {
    listen 80;
    listen [::]:80;
    root /var/www/html/moodle;
    index index.php index.html index.htm;
    server_name 192.168.100.67; #set ke IP Address Server Kamu

    location / {
        try_files $uri $uri/ =404;
    }

    location /dataroot/ {
        internal;
        alias /var/www/html/moodledata/;
    }

    location ~ [^/]\.php(/|$) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Selanjutnya mengaktifkan Blok Server

# sudo ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/

Sesuai selesai mengaktifkan Block Server kemudian dicek apakah sudah berjalan dengan baik dengan memberikan perintah sudo nginx -t
Lalu kemudian restart Nginx

# sudo systemctl restart nginx

Selanjutnya tinggal selesaikan tahap instalasi, untuk Moodle directory biarkan saja dan untuk konfigurasi Data directory dirubah menjadi /var/moodledata