Moodle-plattform med Docker, Git og Ansible

Effektiv læringsplattform drevet av moderne teknologi for enkel installasjon, vedlikehold og administrasjon.

Vedlikehold og katastrofeplan

Denne siden dekker vedlikeholdsrutiner, automatisering av sikkerhetskopier og oppdateringer, samt hvordan man håndterer potensielle katastrofer ved å gjenopprette systemet fra en sikkerhetskopi.

3.1. Automatiserte sikkerhetskopier

For å beskytte Moodle-dataene og databasen din, bør du sette opp automatiserte sikkerhetskopier. Her er en fremgangsmåte for å bruke mysqldump til å lage sikkerhetskopier av databasen, og rsync for å synkronisere filer.

1. Opprette en sikkerhetskopi av databasen

Bruk mysqldump for å lage en sikkerhetskopi av Moodle-databasen:

mysqldump -u root -prootpassword moodle > /srv/moodle/db-backup.sql

Dette vil lagre en SQL-dump av Moodle-databasen i mappen /srv/moodle.

2. Sikkerhetskopiere Moodle-data

For å sikkerhetskopiere Moodle-filer (f.eks. kursfiler og opplastede oppgaver), kan du bruke rsync til å kopiere filene til en ekstern lagringsenhet eller backup-server:

rsync -av /srv/moodledata user@backup-server:/path/to/backup/

Denne kommandoen vil sikkerhetskopiere Moodle-dataene til en ekstern server ved bruk av rsync.

3. Automatisere sikkerhetskopier med cron-jobber

For å sikre at sikkerhetskopier kjøres regelmessig, kan du opprette en cron-jobb. Dette vil sikre at både databasen og filene blir sikkerhetskopiert hver natt:

crontab -e

Legg til følgende linjer for å kjøre sikkerhetskopien hver dag klokken 02:00:


0 2 * * * mysqldump -u root -prootpassword moodle > /srv/moodle/db-backup.sql
0 2 * * * rsync -av /srv/moodledata user@backup-server:/path/to/backup/
        

Nå vil sikkerhetskopien kjøre automatisk hver natt.

3.2. Automatiserte oppdateringer

For å holde systemet oppdatert og sikkert, anbefales det å automatisere både systemoppdateringer og oppdateringer av Docker-containere.

1. Systemoppdateringer

For å automatisere systemoppdateringer, bruk verktøyet unattended-upgrades som vi allerede har installert under forberedelser:

sudo dpkg-reconfigure --priority=low unattended-upgrades

Dette vil sikre at sikkerhetsoppdateringer blir installert automatisk.

2. Oppdatere Docker-containere

For å oppdatere Docker-containere automatisk, kan du bruke Ansible eller cron-jobber. Her er et eksempel på en Ansible-playbook som kan oppdatere Docker-containere:

---
- hosts: primary
  become: yes
  tasks:
    - name: Oppdater Docker-containere
      shell: docker-compose pull && docker-compose up -d
      args:
        chdir: /srv/moodle/
        

Kjør denne Ansible-playbooken for å oppdatere Docker-containere manuelt, eller sett opp en cron-jobb som kjører den ukentlig:


0 3 * * 1 ansible-playbook -i "primær-server-ip," update-docker.yml
        

Denne cron-jobben vil automatisk oppdatere Docker-containere hver mandag klokken 03:00.

3.3. Oppdatering av Moodle via Git

Når Moodle er installert via Git, kan du oppdatere til den nyeste versjonen med følgende kommandoer:

cd /srv/moodle
git pull

Denne kommandoen vil hente den nyeste koden fra Moodle's GitHub-repository. Etter oppdateringen må du fullføre oppdateringsprosessen ved å gå til Moodle-nettstedet ditt i en nettleser og følge instruksjonene for databasen.

3.4. Gjenopprette fra en sikkerhetskopi

Hvis noe går galt med Moodle-plattformen din, kan du gjenopprette både databasen og Moodle-filer fra en sikkerhetskopi.

1. Gjenopprette databasen

For å gjenopprette databasen fra en sikkerhetskopi, bruk mysql-kommandoen til å importere SQL-dumpen:

mysql -u root -prootpassword moodle < /srv/moodle/db-backup.sql

2. Gjenopprette Moodle-filer

Bruk rsync til å kopiere Moodle-data tilbake til serveren:

rsync -av user@backup-server:/path/to/backup/ /srv/moodledata

Dette vil gjenopprette filene til Moodle-dataområdet.

3.5. Overvåking og varsler

For å overvåke Moodle-plattformen din og sikre at alt fungerer optimalt, kan du bruke verktøy som Prometheus og Grafana for å spore ytelse og systemressurser.

Overvåking med Prometheus og Grafana

Prometheus og Grafana er kraftige verktøy for overvåking av Moodle-tjenestene dine. Prometheus samler inn ytelsesdata fra Docker-containere og andre tjenester, mens Grafana gir deg visuelle dashboards som viser dataene i sanntid.

1. Installere Prometheus

Følg disse stegene for å installere og konfigurere Prometheus på serveren din.

1.1 Last ned og konfigurer Prometheus
sudo apt update
sudo useradd --no-create-home --shell /bin/false prometheus
sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus
cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.33.5/prometheus-2.33.5.linux-amd64.tar.gz
tar xvf prometheus-2.33.5.linux-amd64.tar.gz
sudo cp prometheus-2.33.5.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.33.5.linux-amd64/promtool /usr/local/bin/
sudo cp -r prometheus-2.33.5.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.33.5.linux-amd64/console_libraries /etc/prometheus
sudo cp prometheus-2.33.5.linux-amd64/prometheus.yml /etc/prometheus/prometheus.yml
1.2 Konfigurer Prometheus som en tjeneste

Lag en systemd-tjeneste for Prometheus slik at den starter automatisk ved oppstart:

sudo nano /etc/systemd/system/prometheus.service

Lim inn følgende innhold:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
ExecStart=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus/ --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

Start og aktiver Prometheus-tjenesten:

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

2. Installere Grafana

Grafana gir deg et kraftig grensesnitt for å visualisere data samlet av Prometheus.

2.1 Last ned og installer Grafana

Bruk følgende kommandoer for å installere Grafana på Ubuntu:

sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt update
sudo apt install grafana
2.2 Start Grafana-tjenesten

Start Grafana og sørg for at det starter automatisk ved oppstart:

sudo systemctl start grafana-server
sudo systemctl enable grafana-server
2.3 Koble Grafana til Prometheus

Når Grafana kjører, åpne nettleseren og gå til http://server-ip:3000. Logg inn med standard brukernavn (admin) og passord (admin).

Legg til Prometheus som en datakilde:

  1. Gå til Settings i venstremenyen.
  2. Klikk på Data Sources, og deretter Add data source.
  3. Velg Prometheus.
  4. Fyll inn URL-en til Prometheus som http://localhost:9090 (eller IP-adressen til serveren din).
  5. Klikk på Save & Test for å bekrefte at Grafana kan koble til Prometheus.

3. Sette opp dashboards i Grafana

Du kan nå opprette dine egne dashboards eller bruke ferdige maler for å overvåke ytelsen til Moodle-tjenestene dine.

3.1 Importere et ferdig dashboard

For å raskt komme i gang med Moodle-overvåking kan du importere et dashboard fra Grafanas bibliotek:

  1. Gå til Create og velg Import.
  2. Lim inn Dashboard ID, f.eks. 893 for et ferdig Prometheus-overvåkingsdashboard.
  3. Klikk på Load, velg datakilden (Prometheus), og trykk på Import.

3.6. Konfigurere SSL-sertifikat med Let's Encrypt

For å sikre Moodle-plattformen med HTTPS, kan du bruke Let's Encrypt til å få et gratis SSL-sertifikat. Følg disse trinnene:

1. Installer Certbot

Kjør følgende kommando for å installere Certbot, som brukes til å administrere SSL-sertifikater:

sudo apt install certbot python3-certbot-apache

2. Få et sertifikat

Kjør følgende kommando for å få et sertifikat for lms.techne.guru:

sudo certbot --apache -d lms.techne.guru

Følg veiledningen på skjermen for å fullføre installasjonen. Certbot vil automatisk konfigurere Apache til å bruke HTTPS.

3. Automatiske fornyelser

Let's Encrypt-sertifikater utløper etter 90 dager. Certbot konfigurerer automatisk fornyelse, men du kan teste det ved å kjøre:

sudo certbot renew --dry-run

3.7. Ytelsesoptimalisering med Redis caching

For å forbedre Moodle-ytelsen, spesielt hvis du har mange samtidige brukere, kan du bruke Redis som en caching-løsning. Redis hjelper med å redusere belastningen på databasen ved å mellomlagre data som ofte blir hentet.

1. Installer Redis

Kjør følgende kommando for å installere Redis på serveren din:

sudo apt install redis-server

2. Installer PHP Redis-modul

Installer PHP Redis-modulen slik at Moodle kan kommunisere med Redis:

sudo apt install php-redis

3. Konfigurer Moodle for å bruke Redis

Rediger Moodle-konfigurasjonsfilen config.php og legg til følgende linjer for å aktivere Redis-caching:


$CFG->cachestore_redis = array(
    'servers' => array(
        array(
            'host' => '127.0.0.1',
            'port' => 6379,
            'password' => '',
            'database' => 0,
            'prefix' => '',
        ),
    ),
    'prefix' => 'mdl_',
);
        

Dette vil forbedre ytelsen på plattformen ved å redusere databasens belastning.