Chamilo — это платформа электронного обучения, также называемая «LMS», опубликованная под лицензией GNU/GPLv3+. С момента его создания в 2010 году им воспользовались более 30 миллионов человек по всему миру. Это версия для разработки. Для текущей стабильной ветки выберите ветку 1.11.x на вкладке «Код».
Chamilo 2.0 все еще находится в разработке. Приведенная ниже процедура установки предназначена только для справки. Для стабильной версии Chamilo установите Chamilo 1.11.x. Подробности смотрите в README.md ветки 1.11.x.
Мы предполагаем, что у вас уже есть:
композитор 2.x - https://getcomposer.org/download/
пряжа +4.x - https://yarnpkg.com/getting-started/install
Узел >= v18+ (lts) – https://github.com/nodesource/distributions/blob/master/README.md
Настройка виртуального хоста в домене, а не в подпапке внутри домена.
Рабочий сервер LAMP/WAMP с PHP 8.1+.
Для запуска Chamilo 2 вам понадобятся PHP8+ и NodeJS v18+. В новой версии Ubuntu 22.04 вы можете подготовить свой сервер, выполнив команду apt, подобную следующей, с помощью sudo (или от имени пользователя root, но не рекомендуется по соображениям безопасности):
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
Если у вас уже установлен nodejs, проверьте версию с помощью node -v
В противном случае установите узел 18 или выше:
следуя инструкциям здесь: https://deb.nodesource.com/node_20.x/. В следующих строках используется статическая версия этих инструкций, поэтому, вероятно, она не очень устойчива с течением времени.
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
Другой вариант установки nodejs — использование NVM (менеджер версий узла). Вы можете установить его, следуя инструкциям здесь. Затем вы можете установить необходимую версию узла. Предпочтительно LTS-версия.
sudo nvm install --lts sudo nvm use --lts
Установив NodeJS, вы должны включить corepack, а затем продолжить выполнение требований.
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
Когда ваша система настроена, вы можете использовать следующее:
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/
В конфигурации вашего веб-сервера убедитесь, что вы разрешаете интерпретацию .htaccess ( AllowOverride all
и Require all granted
) и укажите DocumentRoot
на подкаталог public/
.
Когда все вышеперечисленное будет готово, введите main/install/index.php и следуйте инструкциям пользовательского интерфейса (база данных, настройки администратора и т. д.).
После процесса веб-установки измените разрешения обратно в достаточно безопасное состояние:
chown -R root .env config/
Если вы уже установили его и просто хотите обновить его из Git, выполните:
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
Примечание для разработчиков на стадии предварительной альфа-версии: команда Doctor попытается обновить схему вашей базы данных до ожидаемой схемы базы данных в новой установке. Это не всегда идеально, поскольку Doctrine выбирает самый быстрый путь для достижения этой цели. Например, если у вас есть миграция для переименования таблицы (что вполне применимо к мигрируемой системе в Chamilo 1), Doctrine может посчитать, что целевая таблица не существует, а исходная таблица (которой не должно быть в новой установка) все еще существует, поэтому она просто удалит старую таблицу и создаст новую, потеряв при этом все записи в этой таблице. Чтобы избежать этого, вместо этого предпочитайте выполнять миграцию следующим образом.
php bin/console doctrine:migrations:execute "ChamiloCoreBundleMigrationsSchemaV200Version[date]"
Это будет учитывать логику миграции и выполнять необходимую обработку данных.
Это обновит зависимости JS (yarn) и PHP (composer) в папке public/build.
Иногда возникают конфликты с существующими файлами, поэтому, чтобы их избежать, вот несколько советов:
для ошибок композитора вы можете удалить папку поставщика и файл композитора.lock
для ошибок пряжи вы можете удалить Yarn.lock .yarn/cache/* node_modules/*
при открытии Chamilo не загружается, тогда можно удалить var/cache/*
Если вы считаете, что некоторые настройки в Chamilo могли быть обработаны неправильно из-за неполной миграции или миграции, которая была добавлена после установки разрабатываемой версии Chamilo, создается URL-адрес /admin/settings_sync, чтобы попытаться исправить это автоматически путем обновления. Классы PHP на основе состояния базы данных. Однако эта проблема возникает редко.
Если он установлен в среде разработки и вы чувствуете, что вам следует его полностью очистить (может потребоваться после внесения изменений в базу данных), вы можете сделать это следующим образом:
Удаление файла .env
Загрузите скрипт {url}/main/install/index.php еще раз.
База данных должна автоматически уничтожаться, таблица за таблицей. В некоторых крайних случаях (предыдущая версия создавала таблицу, которая больше не нужна и создает проблемы) вы можете полностью очистить ее, просто удалив, но в большинстве случаев в этом нет необходимости.
Если по какой-то причине у вас возникли проблемы с композитором или пряжей, хорошим первым шагом будет полное удаление vendor/
(для композитора) или папки node_modules/
(для пряжи).
Если вы разработчик и хотите внести свой вклад в Chamilo в текущей ветке разработки (пока не стабильной), следуйте инструкциям ниже. Имейте в виду, что на данный момент разрабатываемая версия НЕ ЗАВЕРШЕНА, и многие функции еще не работают. Это связано с тем, что мы работаем над корневыми компонентами, требующими масштабных изменений структуры кода, файлов и базы данных. Таким образом, чтобы получить работающую версию, вам может потребоваться время от времени полностью удалять и переустанавливать ее. Вас предупредили.
Сначала примените процедуру, описанную здесь: Управление CSS и JavaScript в Chamilo (в частности, обязательно следуйте указанным ссылкам, чтобы установить все необходимые компоненты на свой компьютер).
Затем убедитесь, что ваша база данных поддерживает большие префиксы (см. эту ветку о переполнении стека, если вы используете MySQL < 5.7 или MariaDB < 10.2.2).
Загрузите URL-адрес (ваш-домен)/main/install/index.php, чтобы запустить установщик (который очень похож на установщик в предыдущих версиях). Если программа установки использует чистый HTML и не отображается в чистом виде, это означает, что вы не внимательно следовали этим инструкциям. Вернитесь к началу этого раздела и повторите попытку.
Если вы хотите горячую перезагрузку ресурсов, используйте команду yarn run encore dev-server
. Это автоматически обновит ваши ресурсы, когда вы измените их в assets/vue
. Получите доступ к своему экземпляру chamilo как обычно. В фоновом режиме он будет обслуживать ресурсы с пользовательского сервера по адресу http://localhost:8080. Не обращайтесь к этому URL-адресу напрямую, поскольку Encore отвечает за изменение ресурсов URL-адреса по мере необходимости.
Возможно, вам захочется поддерживать PHP 8.1 (для Chamilo 2) и PHP 7.4 (для всего остального) на одном сервере одновременно. В Ubuntu вы можете сделать это следующим образом:
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
В конфигурации виртуального хоста убедитесь, что вы настроили PHP 8.1 FPM для ответа на этот единственный виртуальный хост, добавив где-то между тегами
следующее:
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 SetHandler "proxy:unix:/run/php/php8.1-fpm.sock|fcgi://localhost" Require all denied Require all denied
Затем выйдите и перезапустите Apache:
sudo systemctl restart apache2
Наконец, помните, что настройки PHP необходимо будет изменить в /etc/php/8.1/fpm/php.ini, и вам придется перезагрузить php8.1-fpm, чтобы принять во внимание эти изменения конфигурации.
sudo systemctl reload php8.1-fpm
При использовании двух версий у вас также возникнут проблемы при вызове composer update
, так как его должна вызывать соответствующая версия PHP. Это можно сделать так:
/usr/bin/php8.1 /usr/local/bin/composer update or, for Chamilo 1.11 /usr/bin/php7.4 /usr/local/bin/composer update
Если ваш php-cli по умолчанию использует PHP7.4 (см. ln -s /etc/alternatives/php
), у вас могут возникнуть проблемы с запуском так называемого сценария platform_check.php
при запуске composer update
. Это связано с тем, что этот сценарий не использует правильный контекст запуска, и вам может потребоваться изменить настройки по умолчанию в Ubuntu (т. е. изменить ссылку /etc/alternatives/php, чтобы она указывала на другую версию php) перед запуском composer update
. Вы всегда можете отменить эту операцию позже, если вам нужно вернуться к работе над Chamilo 1.11, а Composer снова начнет жаловаться.
Чтобы использовать примеры сценариев git-перехватчиков в tests/scripts/git-hooks/
, можно использовать следующие команды.
git config core.hooksPath tests/scripts/git-hooks/
в общем, папка main/ перенесена в public/main/
app/Resources/public/assets перемещены в public/assets
main/inc/lib/javascript перемещен в public/js
main/img/ перемещен в public/img
main/template/default перемещен в src/CoreBundle/Resources/views.
src/Chamilo/XXXBundle перемещен в src/CoreBundle или src/CourseBundle.
bin/doctrine.php удален, используйте параметры bin/console:xyz
Изображения плагинов, библиотеки css и js загружаются в папку public/plugins (обновление Composer копирует содержимое внутри имя_плагина/public внутри папки web/plugins/имя_плагина).
Шаблоны плагинов используют функцию assets() вместо использования «_p.web_plugin».
Удалить main/inc/local.inc.php
Переводы, управляемые через Gettext
Библиотеки
Интеграция с Symfony 5
PHPMailer заменен на Symfony Mailer
беседка заменена пряжей
Бегать
PHP bin/консоль lexik:jwt:generate-keypair
В настройке Apache Bearer с помощью:
SetEnvIf Авторизация "(.*)" HTTP_AUTHORIZATION=$1
Получите токен:
curl -k -X POST https://example.com/api/authentication_token -H «Тип контента: приложение/json» -d '{"имя пользователя":"admin","пароль":"admin"}'
Ответ должен вернуть что-то вроде:
{"токен":"MyTokenABC"}
Перейдите на https://example.com/api.
Нажмите кнопку «Авторизовать» и введите значение Bearer MyTokenABC
Затем вы можете делать запросы, используя токен JWT.
См. https://github.com/chamilo/chamilo-lms/projects/3.
Если вы хотите отправить новые функции или исправления в Chamilo 2, следуйте руководству по вкладу Github https://guides.github.com/activities/contributing-to-open-source/ и нашему файлу CONTRIBUTING.md. Короче говоря, мы просим вас отправлять нам запросы на включение на основе ветки, которую вы создаете с этой целью, в ваш репозиторий, разветвленный из исходного репозитория Chamilo.
Для получения дополнительной информации о Чамило посетите https://campus.chamilo.org/documentation/index.html.