So installieren Sie Moodle 3.2 eLearning-Software auf CentOS 7

Moodle ist eine Open Source eLearning-Software, die in PHP geschrieben wurde. Es wird für den Fernunterricht, E-Learning-Projekte und Blended Learning eingesetzt. Moodle ist ein Akronym für Modular-Objekt-orientierte dynamische Lernumgebung“, entwickelt von Martin Dougiamas und unter der GPL-Lizenz veröffentlicht, um Lehrkräften und Lehrern zu helfen, Online-Kurse mit dem Schwerpunkt auf Interaktion und kollaborativem Konstruktionsinhalt zu erstellen.

In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie Moodle 3.2 installieren. Moodle läuft unter dem Nginx-Webserver, unter Verwendung eines MariaDB-Datenbankservers und unter Verwendung von PHP-FPM7.0. Als Betriebssystem verwenden wir CentOS 7.

Voraussetzung

  • CentOS 7 Server
  • Root-Rechte

Was wir tun werden:

  1. Nginx installieren
  2. Installation und Konfiguration von PHP-FPM
  3. MariaDB installieren und konfigurieren
  4. Moodle herunterladen und konfigurieren
  5. SSL und virtuellen Host konfigurieren
  6. Konfigurieren Sie SELinux und Firewalldateien.
  7. Installation von Moodle
  8. Prüfung

Schritt 1 – Nginx installieren

In diesem Schritt werden wir Nginx aus dem epel-Repository installieren. Nginx ist standardmäßig nicht im Centos-Repository verfügbar, daher müssen wir ein neues Repository ‚epel-repository‘ hinzufügen, um Nginx zu installieren.

Installiere das epel-Repository mit dem Befehl yum.

yum -y install epel-release

Als nächstes installieren Sie Nginx aus dem epel-Repository.

yum -y install nginx

Wenn die Installation abgeschlossen ist, starten Sie Nginx und lassen Sie es beim Booten automatisch starten.

systemctl start nginx
systemctl enable nginx

Nginx wurde installiert und läuft auf Port 80. Überprüfen Sie den offenen Port auf dem System mit netstat.

netstat -plntu

nginx auf CentOS 7 installieren

Wenn Sie den Befehl netstat nicht installiert haben, können Sie das Paket net-tools installieren, um es zu erhalten.

yum -y install net-tools

Schritt 2 – Installation und Konfiguration von PHP-FPM

Moodle 3.2 unterstützt die neue PHP 7 Version, daher werden wir PHP 7.0 verwenden. PHP-FPM 7.0 ist im Standard-CentOS-Repository nicht verfügbar. Es gibt ein Drittanbieter-Repository von ‚webtatic‘ für PHP7, das ich jedoch hier verwenden werde.

Fügen Sie das neue webtatic Repository mit dem Befehl rpm dem System hinzu.

rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Als nächstes installieren Sie PHP-FPM 7.0 mit allen von Moodle benötigten Erweiterungen und Paketen.

yum install -y graphviz aspell php70w-fpm php70w-cli php70w-pspell php70w-curl php70w-gd php70w-intl php70w-mysql php70w-xml php70w-xmlrpc php70w-ldap php70w-zip php70w-json php70w-opcache php70w-readline php70w-mbstring php70w-soap

Wenn die Installation abgeschlossen ist, bearbeiten Sie die PHP-Konfigurationsdatei php.ini mit vim.

vim /etc/php.ini

Entkommentiere die Zeile cgi.fix_pathinfo und ändere den Wert auf 0.

cgi.fix_pathinfo=0

Speichern Sie die Datei php.ini und beenden Sie vim.

Gehen Sie in das php-fpm Konfigurationsverzeichnis und bearbeiten Sie die php-fpm Konfigurationsdatei www.conf.

cd /etc/php-fpm.d/
vim www.conf

Ändern Sie die Benutzer- und Gruppenzeilen auf’nginx‘, so dass der Webserver unter Benutzer und Gruppe’nginx‘ läuft.

user = nginx
group = nginx

Anstatt den Serverport zu verwenden, verwenden wir eine Socket-Datei für php-fpm. Ändern Sie den Wert der Hörleitung auf’/run/php-fpm/php-fpm/php-fpm.sock‘.

listen = /run/php-fpm/php-fpm.sock

Entkommentieren Sie als nächstes den Socket-Dateibesitzer, die Gruppen- und die Standardberechtigungszeile und ändern Sie sie wie unten gezeigt.

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Konfigurieren Sie die Dateierweiterungen, die PHP analysieren soll.

Erlauben Sie nur .php-Dateien.

security.limit_extensions = .php

Entkommentieren Sie die folgenden Zeilen der PHP-FPM-Umgebungsvariablen.

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

Speichern Sie die Datei und verlassen Sie den Editor.

Nun müssen wir ein neues Verzeichnis für den php Session-Pfad erstellen. Erstellen Sie das neue Verzeichnis und ändern Sie den Besitzer des Verzeichnisses auf den Benutzer und die Gruppe „nginx“.

mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/

Ändere auch den Besitzer des php-fpm socket file directory auf nginx user.

chown -R nginx:nginx /run/php-fpm/

Die PHP-FPM-Konfiguration ist abgeschlossen. Starten Sie PHP-FPM und fügen Sie es hinzu, um es automatisch beim Booten mit den folgenden zwei systemctl-Befehlen zu starten.

systemctl start php-fpm
systemctl enable php-fpm

PHP-FPM wird unter einer Socket-Datei ausgeführt, überprüfen Sie diese, um sicherzustellen, dass PHP-FPM wieder mit netstat läuft.

netstat -lx | grep php-fpm.sock

Installation und Konfiguration von PHP-FPM7 auf CentOS 7

Schritt 3 – MariaDB Server installieren und konfigurieren

Ich werde MariaDB als Datenbankserver für dieses Tutorial verwenden. Ich werde den mariadb-Server aus dem Centos-Repository installieren und dann das MariaDB-Root-Passwort konfigurieren und eine neue Datenbank und einen neuen Benutzer für Moodle hinzufügen.

Installiere den mariadb-server mit dem Befehl yum unten.

yum -y install mariadb-server mariadb

Wenn die Installation abgeschlossen ist, bearbeiten Sie die Konfigurationsdatei my.cnf.

vim /etc/my.cnf

Fügen Sie am Ende des Abschnitts ‚[mysqld]‘ die folgende Konfiguration ein.

default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda

Speichern und beenden Sie, dann starten Sie MariaDB und aktivieren Sie es beim Booten.

systemctl start mariadb
systemctl enable mariadb

MariaDB wurde installiert und läuft jetzt auf Port 3306, aber es gibt noch kein Root-Passwort, also müssen wir es konfigurieren. Verwenden Sie den folgenden Befehl, um ein neues MySQL-Root-Passwort festzulegen.

mysql_secure_installation

Sie werden nach einem neuen MySQL-Root-Passwort gefragt.

Set root password? [Y/n] Y
New password:
Re-enter new password:

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

Die MariaDB-Konfiguration ist abgeschlossen.

Als nächstes verbinden Sie sich mit der MySQL-Shell mit dem Befehl’mysql‘, erstellen dann eine neue Datenbank und einen neuen Benutzer für Moodle und vergeben dem neuen Benutzer Rechte für die Datenbank.

Verbinden Sie sich mit der mysql-Shell.

mysql -u root -p
TYPE YOUR PASSWORD

Führen Sie die folgenden mysql-Abfragen aus, um einen neuen Benutzer’moodleuser mit dem Passwort’hakaselabs123‚ und einer neuen Datenbank’moodledb zu erstellen, und gewähren Sie dann dem neuen Benutzer alle Rechte der Datenbank. Bitte wählen Sie ein anderes und sicheres Passwort auf Ihrem Server!

CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
FLUSH PRIVILEGES;

Datenbank für Moodle-Installation konfigurieren

Benutzer und Datenbank für Moodle wurden erstellt.

Schritt 4 – Herunterladen und Konfigurieren von Moodle

Wir werden Moodle direkt aus dem GitHub-Repository herunterladen, daher benötigen wir den git-Befehl auf dem System. Installieren Sie git mit yum, wie unten gezeigt.

yum -y install git

Als nächstes erstellen Sie ein neues Web-Root-Verzeichnis namens’/var/www/‘.

mkdir -p /var/www/

Gehen Sie in das Verzeichnis’/var/wwww/‘ und klonen Sie Moodle aus dem GitHub-Repository.

cd /var/www/
git clone https://github.com/moodle/moodle.git

Gehen Sie dann in das Verzeichnis’moodle‘ und überprüfen Sie die verfügbaren Moodle-Zweige.

cd moodle/
git branch -a

Listet die stabilen Moodle-Zweige auf, wählt den neuesten stabilen Zweig und kassiert die neueste Version des stabilen Zweiges.

git branch --track MOODLE_32_STABLE orogin/MOODLE_32_STABLE
git checkout MOODLE_32_STABLE

Jetzt sollten Sie sich im neuesten stabilen Zweig von Moodle befinden, das können Sie mit dem Befehl git unten überprüfen.

git status

Sie werden die Ergebnisse unten sehen.

# On branch MOODLE_32_STABLE
nothing to commit, working directory clean

Moodle herunterladen und konfigurieren

Erstellen Sie nun ein neues Verzeichnis’moodledata‘ und stellen Sie sicher, dass der Besitzer des Verzeichnisses der Benutzer und die Gruppe’nginx‘ ist.

mkdir -p /var/moodledata
chown -R nginx:nginx /var/moodledata
chmod 777 /var/moodledata

Ändere den Besitzer des Moodle-Verzeichnisses auf den Benutzer’nginx‘.

chown -R nginx:nginx /var/www/moodle
chmod 755 /var/www/moodle

Moodle wurde heruntergeladen.

Schritt 5 – SSL und virtuellen Host konfigurieren

Wir werden Moodle oder einen nginx Webserver mit einer sicheren HTTPS-Verbindung betreiben. Wenn Sie sich auf einem Live-Server befinden, dann können Sie Ihre eigene Zertifikatsdatei verwenden oder ein kostenloses Zertifikat von let’s encrypt verwenden. Ich bin hier auf meinem lokalen Computer, so dass ich einfach eine neue selbstsignierte Zertifikatsdatei selbst erstellen kann.

Erstellen Sie ein SSL-Verzeichnis und generieren Sie die neuen Zertifikatsdateien mit dem Befehl openssl unten.

mkdir -p /etc/nginx/ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/moodle.crt -keyout /etc/nginx/ssl/moodle.key

Änderungsberechtigung des privaten Schlüssels.

chmod 600 /etc/nginx/ssl/moodle.key

Neue selg-signierte Zertifikatsdateien erstellen

Als nächstes gehen Sie mit dem Befehl cd in das nginx-Konfigurationsverzeichnis und erstellen Sie eine neue virtuelle Hostdatei für moodle im Verzeichnis’conf.d‘.

cd /etc/nginx/
vim conf.d/moodle.conf

Füge nginx moodle virtual host unten ein.

# PHP Upstream Handler
upstream php-handler {
    server unix:/run/php-fpm/php-fpm.sock;
}
# Nginx redirect HTTP to HTTPS - moodle.hakase-labs.com
server {
listen 80;
server_name moodle.hakase-labs.com;
# enforce https
return 301 https://$server_name$request_uri;
}

# HTTPS Configuration
server {
server_name          moodle.hakase-labs.com;

listen               *:443 ssl http2;
listen               [::]:443 ssl http2;

# SSL Configuration
ssl  on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_session_tickets off;
#ssl_stapling on;
#ssl_stapling_verify on;
resolver_timeout 5s;
ssl_certificate /etc/nginx/ssl/moodle.crt;
ssl_certificate_key /etc/nginx/ssl/moodle.key;

# Root Moodle Data DIrectory
root /var/www/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 fastcgi.conf;
fastcgi_pass php-handler;
}
}
}

Speichern Sie die Konfigurationsdatei und beenden Sie vim.

Testen Sie die Nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann Nginx neu.

nginx -t
systemctl restart nginx

SSL-Zertifikate und neue virtuelle Host-Konfiguration für Moodle sind abgeschlossen.

Konfigurieren Sie den virtuellen Host von nginx für Moodle.

Schritt 6 – SELinux und Firewalld konfigurieren

In diesem Schritt werden wir SELinux und Firewalld konfigurieren. Wenn Ihr SELinux ausgeschaltet ist und Sie es nicht verwenden möchten, dann können Sie diesen Schritt überspringen und mit der Konfiguration von Firewalld beginnen. Überprüfen Sie Ihren SELinux-Status und stellen Sie sicher, dass Firewalld installiert ist.

Überprüfen Sie den SELinux-Status mit dem folgenden Befehl.

sestatus

Überprüfung des SELinux-Status auf CentOS 7

SELinux ist im Modus’Enforcing‘ aktiviert.

Um SELinux zu konfigurieren, benötigen wir die auf dem System installierten SELinux-Verwaltungstools.

Installieren Sie’policycoreutils-python‘ mit yum.

yum -y install policycoreutils-python

Ändern Sie nun die SELinux-Kontextdateien und Verzeichniseinstellungen für das Moodle-Web-Root-Verzeichnis und das Moodle-Datenverzeichnis mit dem Befehl semanage unten.

semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
restorecon -Rv '/var/www/moodle/'

semanage fcontext -a -t httpd_sys_rw_content_t ‚/var/moodledata(/.*)?‘
restorecon -Rv ‚/var/moodledata/‘

Die SELinux-Konfiguration für Moodle ist abgeschlossen, jetzt müssen wir Firewalld konfigurieren.

Installieren Sie Firewalld-Pakete, wenn Sie diese nicht haben.

yum -y install firewalld

Starten Sie die Firewall und fügen Sie sie automatisch hinzu, um sie beim Booten zu starten.

systemctl start firewalld
systemctl enable firewalld

Öffnen Sie anschließend die Ports für HTTP, HTTPS und SSH mit dem Befehl firewall-cmd unten.

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh

Laden Sie die Firewall neu und überprüfen Sie, ob HTTP und HTTPS auf der Dienste-Liste stehen.

firewall-cmd --reload
firewall-cmd --list-all

Firewalldesign auf CentOS 7

Firewalldesign abgeschlossen.

Schritt 7 – Moodle installieren

Die Vorbereitungen für die Moodle-Installation sind abgeschlossen. Jetzt können wir Moodle installieren, indem wir den Domänennamen des virtuellen Hosts von Moodle besuchen. In diesem Tutorial ist der von mir verwendete Domainname’moodle.hakase-labs.com‘.

Öffnen Sie Ihren Webbrowser und geben Sie die URL ‚ ein.moodle.hakase-labs.comin der Adressleiste.

Sie sehen die Moodle-Installationsseite, wählen Ihre Sprache, in meinem Fall Englisch, und klicken auf Weiter.

Moodle-Installation: Sprache auswählen

Geben Sie nun die Konfigurationsdaten für Moodle ein: Webadresse ‚moodle.hakase-labs.com‚, Moodle Web-Root-Verzeichnis ‚/var/wwww/moodle‚, Moodle-Datenverzeichnis ‚/var/moodledata‚ und klicken Sie auf ‚Weiter‚, um fortzufahren.

Moodle-Installation: Konfigurieren Sie das Moodle-Web-Root-Verzeichnis, die Moodle-Daten und die Moodle-URL.

Wählen Sie für den Datenbanktreiber wie unten beschrieben ‚MySQL‚ und klicken Sie auf ‚Weiter‚.

Moodle-Installation: Datenbanktreiber für Moodle konfigurieren

Konfiguration für die Moodle-Datenbank.

  • Datenbank-Host: localhost
  • Datenbankname: moodledb
  • Datenbankbenutzer: moodleuser
  • Datenbank-Passwort: hakaselabs123
  • Tabellenpräfix: moodle__ moodle_
  • Datenbank-Port: 3306
  • Unix-Socket: /var/lib/mysql/mysql/mysql.sock

Klicken Sie dann auf ‚Weiter‚.

Moodle-Installation: Konfigurieren von Datenbankdetails für Moodle

Für den Urheberrechtshinweis klicken Sie auf die Schaltfläche „Weiter„.

Moodle-Installation: Vereinbarung moodle copyright

Moodle überprüft das System und alle Anforderungen an die PHP-Erweiterung, stellt sicher, dass alle Ergebnisse „OK“ sind, und klickt dann zur Installation auf „Weiter„.

Moodle-Installation: Überprüfung der Systemanforderungen für die Moodle-Installation

Die Moodle-Installation beginnt. Stellen Sie sicher, dass alle Ergebnisse‘Success‚ sind, und klicken Sie dann auf‘Continue‚, um Moodle zu konfigurieren.

Moodle-Installation

Konfiguration der Benutzerverwaltung. Geben Sie Ihre Daten wie Name, E-Mail-Passwort usw. ein und klicken Sie auf ‚Profil aktualisieren‚.

Moodle-Installation: Konfigurieren Sie den Admin-Benutzer moodle

Moodle Front Page Configuration, geben Sie die Moodle-Informationen ein und klicken Sie auf ‚Änderungen speichern‚.

Moodle-Installation: Moodle-Startseite konfigurieren

Sie werden dann zum Moodle User Admin Dashboard weitergeleitet.

Moodle Benutzer-Dashboard

Die Moodle-Installation wurde ohne Fehler abgeschlossen.

Schritt 8 – Prüfung

Besuchen Sie die Moodle-Startseite – moodle.hakase-labs.com.

Moodle Homepage

Moodle Login-Seite – moodle.hakase-labs.com/login/login/.

Moodle Login-Seite

Moodle Benutzer-Dashboard.

Moodle Benutzer-Dashboard

Moodle-Seitenverwaltung zur Konfiguration des Moodle-Systems.

Moodle Seitenverwaltung

Moodle-Benutzerpräferenzen.

Moodle-Benutzerpräferenzen

Die Moodle-Installation mit Nginx-Webserver, php-fpm und MariaDB auf CentOS 7-System war erfolgreich.

Referenz

Das könnte Dich auch interessieren …