Install Moodle melalui git dengan Postgres, Nginx dan PHP di Ubuntu 20.04

Pada kesempatan kali ini yaitu Install Moodle melalui git dengan Postgres, Nginx dan PHP di Ubuntu 20.04
Kenapa harus Install Moodle melalui Git ?

Jawabannya sederhana karena dengan Git kita dapat menjalankan proses update hanya dengan menjalankan bash pada linux.

Prerequisites

  • Sudah install ubuntu 20.04
  • Sudah terpasang GIT pada ubuntu

Daftar Isi

  1. Install Nginx
  2. Install Postgresql
  3. Install Php dan librarinya
  4. Install Moodle
  5. Pengaturan Database
  6. Pengaturan Nginx
  7. Pengaturan cron
  8. Konfigurasi script update moodle

Install Nginx

Menggunakan webserver nginx tentunya menjadi pilihan favorit karena fitur caching pada moodle sangat sesuai dengan nginx yang dapat menyajikan file statis dengan sangat cepat. berikut langkah-langkahnya:

sudo apt-get update

sudo apt-get install nginx

Lakukan konfigurasi nginx untuk situs moodle kamu.

sudo nano /etc/nginx/sites-available/moodle

buat virtual host sederhana dengan script berikut

server {
              server_name <^>contoh.id<^>;
              listen 80;
                   root /usr/share/nginx/html/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 snippets/fastcgi-php.conf;
                                     fastcgi_pass unix:/run/php/php7.4-fpm.sock;
                   }
           }
}

lalu, aktifkan situs moodlenya:

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

sudo service nginx restart

untuk install Nginx secara lengkap silahkan cek artikel ini.

Install Postgresql

sudo apt-get install postgresql postgresql-contrib

Buat database untuk proses install moodle dengan perintah

sudo su -postgres
psql

setelah masuk kedalam console postgresql

CREATE USER moodleuser WITH PASSWORD '123456789';
CREATE DATABASE moodle;
GRANT ALL PRIVILEGES ON DATABASE moodle to moodleuser;
\q

exit

Install PHP dan Librari

sudo apt-get install php-fpm php-curl php-gd php-xmlrpc php-intl php-xml php-zip php-mbstring php-soap php-pgsql

Install Moodle

silahkan menuju ke direktori wwwroot apabila nginx diinstall secara default maka direktori wwwroot berada di /usr/share/nginx/html

cd /usr/share/nginx

secara default direktori html hanya dapat diakses oleh root user oleh sebab itu rubah kepemilikan menjadi user biasa dengan perintah sebagai berikut 

sudo chown -R $USER:$USER html

setelah merubah permission waktunya melakukan download source moodle via git dengan perintah berikut

cd html
sudo git clone https://github.com/moodle/moodle.git

perintah clone melakukan kloning repositori moodle yang ada di github. kelak apabila kamu memindahkan moodle kamu ke server lain kamu cukup memerikan versi moodle yang digunakan. setelah proses clone selesai arahkan ke direktori moodle dengan perintah

cd moodle
sudo git remote show origin

setelah menjalankan perintah diatas maka akan terlihat versi-versi yang ada maka aktifkan versi terbaru dengan perintah

sudo git checkout MOODLE_311_STABLE

Komunitas moodle selalu merilis pembaharuannya sesuai dengan jadwal yang telah ditentukan dan juga terdapat rilis bulan hingga mingguan baik itu terkait perbaikan bug atau issue keamanan untuk melakukan update source yang tersedia cukup ketikan perintah git pull. apabila kelak anda ingin update ke versi stable diatas versi yang diinstall sekarang cukup dengan perintah

sudo git checkout MOODLE_312_STABLE

Pengaturan config moodle

Setelah melakukan konfigurasi pada nginx dan database lanjutkan dengan mengkonfigurasi config pada moodle

<?PHP
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype = 'pgsql';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'localhost';
$CFG->dbname = 'moodle';
$CFG->dbuser = 'moodleuser';
$CFG->dbpass = '123456789';
$CFG->prefix = 'mdl_';
$CFG->dboptions = array(
'dbpersist' => false,
'dbsocket' => false,
'dbport' => '',
);
$CFG->wwwroot = 'https://<^>contoh.com<^>';
$CFG->dataroot = '/usr/local/moodledata';
$CFG->directorypermissions = 02777;
$CFG->admin = 'admin';
require_once(dirname(__FILE__) . '/lib/setup.php');

membuat direktori yang dibutuhkan moodle

sudo mkdir /usr/local/moodledata
sudo mkdir /var/cache/moodle

atur permission 

sudo chown www-data:www-data /usr/local/moodledata
sudo chown www-data:www-data /var/cache/moodle

Pengaturan cron

sudo crontab -u www-data -e

atur cron script setiap 10 menit:
*/10 * * * * php -q -f /usr/share/nginx/www/moodle/admin/cli/cron.php

Pengaturan script minor update

nano update_moodle.sh

lalu isikan dengan script dibawah ini

# File name: update_moodle.sh
#
# switch to moodle source directory
cd /usr/share/nginx/html/moodle;
# put moodle into maintenance mode
sudo -u www-data php /usr/share/nginx/html/moodle/admin/cli/maintenance.php --enable;
# pull changes
git pull;
# run the moodle upgrade script to which you will have to answer: y
sudo -u www-data php /usr/share/nginx/html/moodle/admin/cli/upgrade.php;
# Put moodle into regular mode again
sudo -u www-data php /usr/share/nginx/html/moodle/admin/cli/maintenance.php --disable;
# run the cron script to clean up
sudo -u www-data php /usr/share/nginx/html/moodle/admin/cli/cron.php;
# and switch back to your original directory
cd -;

ubah permisionnya dengan command sudo chmod +x update_moodle.sh dan coba jalankan dengan perintah ./update_moodle.sh

Setiap kali moodle mengeluarkan versi major maka perlu diingat untuk memilih versi major yang tersedia dengan perintah git checkout MOODLE_40_STABLE 

Leave a Reply

Your email address will not be published.