MySQL Einstellungen
MySQL Anpassungen für Moodle in der Datei /etc/mysql/mariadb.conf.d/50-server.cnf
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
skip-character-set-client-handshake
Danach die Datenbank neu starten „service mariadb restart“
Anscheinend erstellt Plesk die Datenbank trotzdem mit einem anderen encoding. Deswegen muss die Datenbank nach der Installation konvertiert werden. Dazu stellt Moodle ein Skript bereit.
/opt/plesk/php/7.4/bin/php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
Überprüft werden kann das mit folgendem SQL:
SELECT SCHEMA_NAME, default_character_set_name FROM information_schema.SCHEMATA;
In der offiziellen Dokumentation wird empfohlen folgenden Befehl danach auszuführen:
mysqlcheck -u root -p --auto-repair --optimize --all-databases
Wenn die Datenbank über docker wie in Maradb über docker (compose) installieren und in Plesk integrieren installiert wurde muss dieser Befehl angepasst werden:
mysqlcheck -u root --port 3316 --port=3316 -p --protocol=TCP --auto-repair --optimize --all-databases
Zusätzlich muss dann in der config.php von Moodle das encoding angepasst werden:
$CFG->dboptions = array(
…
'dbcollation' => 'utf8mb4_unicode_ci',
…
);
Cronjob
Für Moodle muss ein cronjob eingerichtet werden der unter den Rechten des Benutzer der Webseite laufen sollte.


Für Moodle soll jede Minute ein cronjob ausgeführt werden. Hier muss der Pfad zum script angegeben werden. Laut Dokumentation soll der Job jede Minute ausgeführt werden. Etwas resourcen schonender wäre z.B. alle 10 Minuten:
*/10 * * * *
/var/www/vhosts/domain.de/httpdocs/admin/cli/cron.php
Linux: Ubuntu 18.04.4
Plesk: Obsidian 18.0.26
Quelle: https://docs.moodle.org/37/en/MySQL_full_unicode_support
https://docs.moodle.org/38/de/Cron-Job
https://www.a2hosting.com/kb/developer-corner/mysql/convert-mysql-database-utf-8
Besten Dank für den Artikel, dass mit den Pfad /var/www/vhosts/domain.de/httpdocs/admin/cli/cron.php hat mir echt geholfen. httpdocs/admin/cli/cron.php hat er nicht genommen, obwohl ich im Cronjob Planer explizit für die Website bin.
Den Cronjob jede Minute ausführen halte ich für sinnlos bei Moodles die nicht allzu stark besucht werden, zumal der Job eh gerne mal 3 Minuten läuft.
Jede Minute ist wirklich was viel. Ich glaube Moodle hat das empfohlen – Viel hilft viel 😁