Moodle Dengan Debian 12 (Nginx, Postgree dan PHP) Pada Proxmox

Sistem Operasi : Debian 12

DISK : 100GB

CPU : 4

Memory : 4096

Swap : 8192

IP : 192.168.1.5/24

Gateway : 192.168.1.1

DNS : 8.8.8.8



============== Pada Proxmox ==============

adduser lms

usermod -aG sudo lms


=============== Pada Putty / SSH ==============

===== Database Server =====

clear && apt update && apt upgrade -y && apt install postgresql -y && su - postgres

psql

CREATE USER admin WITH PASSWORD '12345678';

\du

CREATE DATABASE moodle ENCODING 'UTF8' TEMPLATE template0 OWNER admin;

\l

\c moodle

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin;

GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO admin;

\q

exit


===== Web Server =====

clear && apt install php-fpm php-pgsql php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-zip php-curl php-cli php-opcache php-readline nginx unzip -y

clear && wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.zip -O moodle.zip && unzip moodle.zip && rm -R /var/www/html/* && cp -R moodle/* /var/www/html && chown -R www-data:www-data /var/www/html && chmod -R 755 /var/www/html && mkdir /var/www/moodledata && chown -R www-data:www-data /var/www/moodledata && chmod -R 770 /var/www/moodledata && cp  /etc/nginx/sites-available/default  /etc/nginx/sites-available/default.bak && echo "" > /etc/nginx/sites-available/default && nano /etc/nginx/sites-available/default

server {

    listen 80;

    server_name yourdomain.com;

    client_max_body_size 10M;

    client_body_timeout 120s;


    root /var/www/html;

    index index.php;


    location / {

        try_files $uri $uri/ /index.php;

    }


    location ~ [^/]\.php(/|$) {

        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        fastcgi_index index.php;

        fastcgi_pass unix:/run/php/php8.2-fpm.sock;

        include fastcgi_params;

        fastcgi_param PATH_INFO $fastcgi_path_info;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    }


    location ~* \.js$|\.css$|\.png$|\.jpg$|\.jpeg$|\.gif$|\.ico$|\.svg$|\.woff$|\.woff2$|\.ttf$|\.otf$|\.eot$|\.ttc$|\.jpe$ {

        expires max;

        log_not_found off;

    }

}


clear && /sbin/nginx -t && systemctl restart nginx && systemctl status nginx


clear && nano /etc/php/8.2/fpm/php.ini


max_execution_time = 300

memory_limit = 512M

post_max_size = 100M

upload_max_filesize = 100M

max_input_vars = 5000


clear && systemctl restart php8.2-fpm && systemctl status php8.2-fpm


========== Browser Client ================

URL : http://192.168.1.5