**buat folder
mkdir -p /var/www/shared/local
**pindah kode
mv /var/www/html/moodle/local/jurnalmengajar /var/www/shared/local/
**buat symlink kepada 2 moodle:
ln -s /var/www/shared/local/jurnalmengajar \
/var/www/situs_a/moodle/local/jurnalmengajar
ln -s /var/www/shared/local/jurnalmengajar \
/var/www/situs_b/moodle/local/jurnalmengajar
**atur permission
chown -R www-data:www-data /var/www/shared/local/jurnalmengajar
chmod -R 755 /var/www/shared/local/jurnalmengajar
**upgrade masing-masing
php /var/www/situs_a/moodle/admin/cli/upgrade.php
php /var/www/situs_b/moodle/admin/cli/upgrade.php
⚠️ HAL PENTING (JANGAN SAMPAI TERLEWAT)
1. Database tetap beda
a → database a
b → database b
👉 supaya tidak merusak data asli
2. moodledata beda
Contoh:
/var/moodledata_a
/var/moodledata_b
3. config.php beda
Cek:
situs_a ; /var/www/situs_a/moodle/config.php
$CFG->dirroot = '/var/www/situs_a/moodle';
situs_b ; /var/www/situs_b/moodle/config.php
$CFG->dirroot = '/var/www/situs_b/moodle';
** SET PERMISSION
chown -R www-data:www-data /var/moodledata_a
chown -R www-data:www-data /var/moodledata_b
chmod -R 755 /var/moodledata_a
chmod -R 755 /var/moodledata_b
** CONFIG situs_a**
# cat /var/www/situs_a/moodle/config.php
<?php // config.php
unset($CFG);
global $CFG;
$CFG = new stdClass();
// ----------------------
// Konfigurasi database
// ----------------------
$CFG->dbtype = 'mariadb';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'localhost';
$CFG->dbname = 'moodle_a';
$CFG->dbuser = 'user_a';
$CFG->dbpass = 'password_a';
$CFG->prefix = 'mdl_';
$CFG->dboptions = array(
'dbpersist' => 0,
'dbport' => '',
'dbsocket' => '',
'dbcollation' => 'utf8mb4_unicode_ci',
);
// Jika Anda ingin paksa wwwroot tertentu, uncomment baris di bawah ini dan sesuaikan:
$CFG->wwwroot = 'https://situs_a';
$CFG->sslproxy = true;
//$CFG->reverseproxy = true;
// ----------------------
// Path Moodle
// ----------------------
//$CFG->dataroot = '/var/moodledata';
$CFG->dataroot = '/var/moodledata_a';
$CFG->admin = 'admin';
// Umum
$CFG->directorypermissions = 0777;
// Debugging (aktifkan sementara saat troubleshooting)
//@error_reporting(E_ALL | E_STRICT);
//@ini_set('display_errors', '1');
//$CFG->debug = (E_ALL | E_STRICT);
//$CFG->debugdisplay = 1;
require_once(__DIR__ . '/lib/setup.php');
==============================================================
** CONFIG situs-B **
==============================================================
# cat /var/www/situs_b/moodle/config.php
<?php // config.php
unset($CFG);
global $CFG;
$CFG = new stdClass();
// ----------------------
// Konfigurasi database
// ----------------------
$CFG->dbtype = 'mariadb';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'localhost';
$CFG->dbname = 'moodle_b';
$CFG->dbuser = 'moodluser_b';
$CFG->dbpass = 'password_b';
$CFG->prefix = 'mdl_';
$CFG->dboptions = array(
'dbpersist' => 0,
'dbport' => '',
'dbsocket' => '',
'dbcollation' => 'utf8mb4_unicode_ci',
);
// Jika Anda ingin paksa wwwroot tertentu, uncomment baris di bawah ini dan sesuaikan:
$CFG->wwwroot = 'https://situs_b';
$CFG->sslproxy = true;
//$CFG->reverseproxy = true;
// 🔥 TAMBAHKAN INI
$CFG->sessioncookie = 'MoodleSessionDEV';
// ----------------------
// Path Moodle
// ----------------------
//$CFG->dataroot = '/var/moodledata';
$CFG->dataroot = '/var/moodledata_b';
$CFG->admin = 'admin';
// Umum
$CFG->directorypermissions = 0777;
// Debugging (aktifkan sementara saat troubleshooting)
//@error_reporting(E_ALL | E_STRICT);
//@ini_set('display_errors', '1');
//$CFG->debug = (E_ALL | E_STRICT);
//$CFG->debugdisplay = 1;
require_once(__DIR__ . '/lib/setup.php');
=======================================
nginx site availabel
=======================================
# cat /etc/nginx/sites-available/situs_a
server {
listen 80;
listen [::]:80;
server_name situs_a;
root /var/www/situs_a/moodle;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
=============================
# cat /etc/nginx/sites-available/situs_b
server {
listen 8080;
server_name situs_b;
root /var/www/situs_b/moodle;
index index.php index.html;
# 🔥 WAJIB untuk Moodle
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# 🔥 FIX utama (support slasharguments)
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
# 🔥 Optional (biar static file lebih cepat)
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires max;
log_not_found off;
}
}
==================================================================
ln -s /etc/nginx/sites-available/situs_a /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/situs_b /etc/nginx/sites-enabled/
======================
nginx -t
systemctl reload nginx
Tips Paket Internet Pomo Special
4G Ceria Telkomsel - Agar Tidak Habis Pulsa..

