Chamilo ist eine E-Learning-Plattform, auch „LMS“ genannt, die unter der GNU/GPLv3+-Lizenz veröffentlicht wird. Es wurde seit seiner Einführung im Jahr 2010 von mehr als 30 Millionen Menschen weltweit genutzt. Dies ist eine Entwicklungsversion. Für den aktuellen stabilen Zweig wählen Sie bitte den Zweig 1.11.x auf der Registerkarte „Code“ aus.
Chamilo 2.0 befindet sich noch in der Entwicklung. Das folgende Installationsverfahren dient nur als Referenz. Für ein stabiles Chamilo installieren Sie bitte Chamilo 1.11.x. Weitere Informationen finden Sie in der README.md des 1.11.x-Zweigs.
Wir gehen davon aus, dass Sie bereits über Folgendes verfügen:
Composer 2.x – https://getcomposer.org/download/
Garn +4.x – https://yarnpkg.com/getting-started/install
Knoten >= v18+ (lts) – https://github.com/nodesource/distributions/blob/master/README.md
Konfigurieren eines virtuellen Hosts in einer Domäne, nicht in einem Unterordner innerhalb einer Domäne.
Ein funktionierender LAMP/WAMP-Server mit PHP 8.1+
Sie benötigen PHP8+ und NodeJS v18+, um Chamilo 2 auszuführen. Auf einem neuen Ubuntu 22.04 können Sie Ihren Server vorbereiten, indem Sie einen apt-Befehl wie den folgenden mit sudo (oder als Root, aber aus Sicherheitsgründen nicht empfohlen) ausgeben:
sudo apt update sudo apt -y upgrade sudo apt -y install ca-certificates curl gnupg software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install apache2 libapache2-mod-php8.1 mariadb-client mariadb-server php-pear php8.1-{dev,gd,curl,intl,mysql,mbstring,zip,xml,cli,apcu,bcmath,soap} git unzip
Wenn Sie nodejs bereits installiert haben, überprüfen Sie die Version mit node -v
Andernfalls installieren Sie Node 18 oder höher:
Befolgen Sie die Anweisungen hier: https://deb.nodesource.com/node_20.x/. Die folgenden Zeilen verwenden eine statische Version dieser Anweisungen und sind daher im Laufe der Zeit wahrscheinlich nicht sehr nachhaltig
cd ~ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg NODE_MAJOR=20 echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list apt update && apt -y install nodejs
Eine andere Möglichkeit, NodeJS zu installieren, ist die Verwendung von NVM (Node Version Manager). Sie können es gemäß den Anweisungen hier installieren. Anschließend können Sie die erforderliche Knotenversion installieren. Vorzugsweise die LTS-Version.
sudo nvm install --lts sudo nvm use --lts
Wenn NodeJS installiert ist, müssen Sie Corepack aktivieren und dann mit den Anforderungen fortfahren
sudo corepack enable cd ~ # follow the instructions at https://getcomposer.org/download/ sudo mv composer.phar /usr/local/bin/composer # optionally, you might want this: sudo apt install libapache2-mod-xsendfile sudo a2enmod rewrite ssl headers expires sudo systemctl restart apache2
Wenn Ihr System fertig ist, können Sie Folgendes verwenden:
cd /var/www git clone https://github.com/chamilo/chamilo-lms.git chamilo2 cd chamilo2 composer install # not recommended to do this as the root user! # when asked whether you want to execute the recipes or install plugins for some of the components, # you can safely type 'n' (for 'no'). yarn set version stable # delete yarn.lock as it might contain restrictive packages from a different context yarn up yarn install yarn dev # you can safely ignore any "warning" mentioned by yarn dev sudo touch .env sudo chown -R www-data: var/ .env config/
Stellen Sie in Ihrer Webserverkonfiguration sicher, dass Sie die Interpretation von .htaccess zulassen ( AllowOverride all
und Require all granted
) und verweisen Sie DocumentRoot
auf das Unterverzeichnis public/
.
Sobald das oben Gesagte fertig ist, geben Sie main/install/index.php ein und folgen Sie den Anweisungen der Benutzeroberfläche (Datenbank, Admin-Benutzereinstellungen usw.).
Ändern Sie nach der Webinstallation die Berechtigungen wieder in einen einigermaßen sicheren Zustand:
chown -R root .env config/
Wenn Sie es bereits installiert haben und es nur über Git aktualisieren möchten, gehen Sie wie folgt vor:
git pull composer install # Database update php bin/console doctrine:schema:update --force --complete # Clean Symfony cache php bin/console cache:clear # js/css update yarn install yarn dev
Hinweis für Entwickler im Pre-Alpha-Stadium: Der Doctrine-Befehl versucht, Ihr Datenbankschema in einer Neuinstallation auf das erwartete Datenbankschema zu aktualisieren. Dies ist nicht immer perfekt, da Doctrine hierfür den schnellsten Weg wählt. Wenn Sie beispielsweise eine Migration durchführen, um eine Tabelle umzubenennen (was problemlos auf ein System in Chamilo 1 zutreffen würde, das migriert wird), geht Doctrine möglicherweise davon aus, dass die Zieltabelle nicht existiert und das Original (das in einem neuen nicht vorhanden sein sollte) nicht vorhanden sein sollte (Installation) ist immer noch vorhanden, daher wird einfach die alte Tabelle gelöscht und eine neue erstellt, wobei alle Datensätze in dieser Tabelle verloren gehen. Um dies zu vermeiden, führen Sie Migrationen stattdessen lieber wie folgt durch.
php bin/console doctrine:migrations:execute "ChamiloCoreBundleMigrationsSchemaV200Version[date]"
Dadurch wird die Migrationslogik respektiert und die erforderliche Datenverarbeitung durchgeführt.
Dadurch werden die JS- (Yarn) und PHP- (Composer) Abhängigkeiten im Ordner public/build aktualisiert.
Manchmal gibt es Konflikte mit vorhandenen Dateien. Um diese zu vermeiden, finden Sie hier einige Hinweise:
Bei Composer-Fehlern können Sie den Vendor-Ordner und die Composer.lock-Datei entfernen
Bei Garnfehlern können Sie Yarn.lock .yarn/cache/* node_modules/* entfernen
Wenn Chamilo geöffnet wird, wird es nicht geladen. Dann können Sie var/cache/* löschen.
Falls Sie glauben, dass einige Einstellungen in Chamilo aufgrund einer unvollständigen Migration oder einer Migration, die nach der Installation Ihrer Entwicklungsversion von Chamilo hinzugefügt wurde, möglicherweise nicht korrekt verarbeitet wurden, wird die URL /admin/settings_sync erstellt, um zu versuchen, das Problem automatisch durch Aktualisierung zu beheben PHP-Klassen basierend auf dem Datenbankstatus. Dieses Problem tritt jedoch selten auf.
Wenn Sie es in einer Entwicklungsumgebung installiert haben und der Meinung sind, dass Sie es vollständig bereinigen sollten (dies kann nach Änderungen an der Datenbank erforderlich sein), können Sie dies wie folgt tun:
Entfernen der .env
Datei
Laden Sie das Skript {url}/main/install/index.php erneut
Die Datenbank sollte automatisch Tabelle für Tabelle zerstört werden. In einigen extremen Fällen (eine frühere Version hat eine Tabelle erstellt, die nicht mehr benötigt wird und Probleme verursacht) möchten Sie sie möglicherweise vollständig bereinigen, indem Sie sie einfach löschen. Dies sollte jedoch in den meisten Fällen nicht erforderlich sein.
Wenn Sie aus irgendeinem Grund Probleme mit Composer oder Yarn haben, besteht ein guter erster Schritt darin, den vendor/
-Ordner (für Composer) oder den node_modules/
-Ordner (für Yarn) vollständig zu löschen.
Wenn Sie Entwickler sind und zu Chamilo im aktuellen Entwicklungszweig (noch nicht stabil) beitragen möchten, befolgen Sie bitte die nachstehenden Anweisungen. Bitte beachten Sie, dass die Entwicklungsversion derzeit noch NICHT VOLLSTÄNDIG ist und viele Funktionen noch nicht funktionieren. Das liegt daran, dass wir an Root-Komponenten arbeiten, die massive Änderungen an der Struktur des Codes, der Dateien und der Datenbank erfordern. Um eine funktionierende Version zu erhalten, müssen Sie daher möglicherweise von Zeit zu Zeit eine vollständige Deinstallation und Neuinstallation durchführen. Sie wurden gewarnt.
Wenden Sie zunächst das hier beschriebene Verfahren an: CSS und JavaScript in Chamilo verwalten (stellen Sie insbesondere sicher, dass Sie den angegebenen Links folgen, um alle erforderlichen Komponenten auf Ihrem Computer zu installieren).
Stellen Sie dann sicher, dass Ihre Datenbank große Präfixe unterstützt (siehe diesen Stack Overflow-Thread, wenn Sie MySQL < 5.7 oder MariaDB < 10.2.2 verwenden).
Laden Sie die URL (your-domain)/main/install/index.php, um das Installationsprogramm zu starten (das dem Installationsprogramm in früheren Versionen sehr ähnlich ist). Wenn das Installationsprogramm reines HTML ist und kein sauberes Layout aufweist, liegt das daran, dass Sie diese Anweisungen nicht sorgfältig befolgt haben. Gehen Sie zurück zum Anfang dieses Abschnitts und versuchen Sie es erneut.
Wenn Sie Assets im laufenden Betrieb neu laden möchten, verwenden Sie den Befehl yarn run encore dev-server
. Dadurch werden Ihre Assets automatisch aktualisiert, wenn Sie sie unter assets/vue
ändern. Greifen Sie wie gewohnt auf Ihre Chamilo-Instanz zu. Im Hintergrund werden dadurch Assets von einem benutzerdefinierten Server unter http://localhost:8080 bereitgestellt. Greifen Sie nicht direkt auf diese URL zu, da Encore dafür verantwortlich ist, die URL-Assets nach Bedarf zu ändern.
Möglicherweise möchten Sie PHP 8.1 (für Chamilo 2) und PHP 7.4 (für alle anderen Dinge) gleichzeitig auf demselben Server unterstützen. Unter Ubuntu könnten Sie es so machen:
sudo add-apt-repository ppa:ondrej/php sudo apt update sudo apt install php8.1 libapache2-mod-php7.4 php8.1-{modules} php7.4-{modules} sudo apt remove libapache2-mod-php8.1 php7.4-fpm sudo a2enmod proxy_fcgi sudo vim /etc/apache2/sites-available/[your-chamilo2-vhost].conf
Stellen Sie in der vhost-Konfiguration sicher, dass Sie PHP 8.1 FPM so einstellen, dass es auf diesen einzelnen vhost antwortet, indem Sie irgendwo zwischen Ihren
-Tags Folgendes hinzufügen:
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost" Require all denied Require all denied
Beenden Sie dann Apache und starten Sie es neu:
sudo systemctl restart apache2
Denken Sie abschließend daran, dass die PHP-Einstellungen in /etc/php/8.1/fpm/php.ini geändert werden müssen und Sie php8.1-fpm neu laden müssen, um diese Konfigurationsänderungen zu berücksichtigen.
sudo systemctl reload php8.1-fpm
Bei Verwendung von 2 Versionen treten auch Probleme beim Aufruf composer update
auf, da diese von der entsprechenden PHP-Version aufgerufen werden muss. Dies kann folgendermaßen erfolgen:
/usr/bin/php8.1 /usr/local/bin/composer update or, for Chamilo 1.11 /usr/bin/php7.4 /usr/local/bin/composer update
Wenn Ihr Standard-PHP-CLI PHP7.4 verwendet (siehe ln -s /etc/alternatives/php
), kann es ohnehin zu Problemen bei der Ausführung mit einem sogenannten platform_check.php
-Skript kommen, wenn Sie composer update
ausführen. Dies liegt daran, dass dieses Skript nicht den richtigen Startkontext verwendet und Sie möglicherweise Ihre Standardeinstellungen unter Ubuntu ändern müssen (z. B. den Link /etc/alternatives/php so ändern, dass er auf die andere PHP-Version verweist), bevor Sie composer update
starten. Sie können diesen Vorgang später jederzeit rückgängig machen, wenn Sie wieder an Chamilo 1.11 arbeiten müssen und Composer sich erneut beschwert.
Um die Git-Hook-Beispielskripte unter tests/scripts/git-hooks/
zu verwenden, können die folgenden Befehle verwendet werden.
git config core.hooksPath tests/scripts/git-hooks/
Im Allgemeinen wurde der Ordner main/ nach public/main/ verschoben.
app/Resources/public/assets wurde nach public/assets verschoben
main/inc/lib/javascript wurde nach public/js verschoben
main/img/ wurde nach public/img verschoben
main/template/default wurde nach src/CoreBundle/Resources/views verschoben
src/Chamilo/XXXBundle wurde nach src/CoreBundle oder src/CourseBundle verschoben
bin/doctrine.php wurde entfernt. Verwenden Sie die Optionen bin/console doctrine:xyz
Plugin-Bilder, CSS- und JS-Bibliotheken werden in den Ordner „public/plugins“ geladen (das Composer-Update kopiert den Inhalt in „plugin_name/public“ in „web/plugins/plugin_name“.
Plugin-Vorlagen verwenden die Funktion asset() anstelle von „_p.web_plugin“.
Entfernen Sie main/inc/local.inc.php
Über Gettext verwaltete Übersetzungen
Bibliotheken
Integration mit Symfony 5
PHPMailer durch Symfony Mailer ersetzt
Laube durch Garn ersetzt
Laufen
php bin/console lexik:jwt:generate-keypair
Im Apache-Setup Bearer mit:
SetEnvIf-Autorisierung „(.*)“ HTTP_AUTHORIZATION=$1
Holen Sie sich den Token:
curl -k -X POST https://example.com/api/authentication_token -H „Inhaltstyp: application/json“ -d '{"Benutzername": "Administrator", Passwort: "Administrator"}'
Die Antwort sollte etwa Folgendes zurückgeben:
{"token":"MyTokenABC"}
Gehen Sie zu https://example.com/api
Klicken Sie auf die Schaltfläche „Autorisieren“ und geben Sie den Wert Bearer MyTokenABC
ein
Anschließend können Sie mithilfe des JWT-Tokens Abfragen durchführen.
Siehe https://github.com/chamilo/chamilo-lms/projects/3
Wenn Sie neue Funktionen oder Patches für Chamilo 2 einreichen möchten, folgen Sie bitte dem Github-Beitragsleitfaden https://guides.github.com/activities/contributing-to-open-source/ und unserer Datei CONTRIBUTING.md. Kurz gesagt, wir bitten Sie, uns Pull-Anfragen basierend auf einem Zweig zu senden, den Sie zu diesem Zweck in Ihrem Repository erstellen, das vom ursprünglichen Chamilo-Repository abgespalten ist.
Weitere Informationen zu Chamilo finden Sie unter https://campus.chamilo.org/documentation/index.html