Camilo 是一个电子学习平台,也称为“LMS”,在 GNU/GPLv3+ 许可证下发布。自2010年推出以来,全球已有超过3000万人使用。这是一个开发版本。对于当前的稳定分支,请在“代码”选项卡中选择 1.11.x 分支。
Chamilo 2.0 仍在开发中。以下安装过程仅供参考。要获得稳定的 Chamilo,请安装 Chamilo 1.11.x。有关详细信息,请参阅 1.11.x 分支的 README.md。
我们假设您已经拥有:
作曲家 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
在域中配置虚拟主机,而不是在域内的子文件夹中。
运行 PHP 8.1+ 的 LAMP/WAMP 服务器
您将需要 PHP8+ 和 NodeJS v18+ 来运行 Chamilo 2。在新的 Ubuntu 22.04 上,您可以通过使用 sudo (或作为 root,但出于安全原因不建议)发出如下 apt 命令来准备服务器:
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
检查版本否则,安装node 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/
在您的 Web 服务器配置中,确保允许解释 .htaccess( AllowOverride all
和Require all granted
),并将DocumentRoot
指向public/
子目录。
上述准备就绪后,输入main/install/index.php并按照 UI 说明进行操作(数据库、管理员用户设置等)。
Web 安装过程结束后,将权限更改回相当安全的状态:
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
pre-alpha 阶段的开发人员请注意:doctrine 命令将尝试将您的数据库架构更新为全新安装中预期的数据库架构。这并不总是完美的,因为 Doctrine 将采取最快的路线来做到这一点。例如,如果您有一个迁移来重命名一个表(这适用于正在迁移的Chamilo 1 中的系统),Doctrine 可能会认为目标表不存在,而原始表(不应该存在于新的表中)安装)仍然存在,因此它只会删除旧表并创建一个新表,并在此过程中丢失该表中的所有记录。为了避免这种情况,最好使用以下命令来执行迁移。
php bin/console doctrine:migrations:execute "ChamiloCoreBundleMigrationsSchemaV200Version[date]"
这将尊重迁移逻辑并进行所需的数据处理。
这将更新 public/build 文件夹中的 JS (yarn) 和 PHP (composer) 依赖项。
有时会与现有文件发生冲突,因此为了避免这些冲突,这里有一些提示:
对于作曲家错误,您可以删除供应商文件夹和composer.lock文件
对于纱线错误,您可以删除yarn.lock .yarn/cache/* node_modules/*
打开Chamilo时,它不加载,那么你可以删除var/cache/*
如果您认为基于不完整的迁移或安装 Chamilo 开发版本后添加的迁移,Chamilo 中的某些设置可能未正确处理,则构建 URL /admin/settings_sync 来尝试通过更新自动修复该问题基于数据库状态的 PHP 类。不过,这个问题很少发生。
如果您将其安装在开发环境中并且感觉应该完全清理它(在更改数据库后可能是必要的),您可以通过以下方式执行此操作:
删除.env
文件
再次加载 {url}/main/install/index.php 脚本
数据库应该逐表自动销毁。在某些极端情况下(以前的版本创建了一个不再需要的表并产生问题),您可能希望通过删除它来彻底清理它,但这在大多数情况下不是必需的。
如果由于某种原因,您在使用composer或yarn时遇到问题,最好的第一步是完全删除vendor/
文件夹(对于composer)或node_modules/
文件夹(对于yarn)。
如果您是开发人员并希望在当前开发分支(尚未稳定)中为 Chamilo 做出贡献,请按照以下说明进行操作。请记住,开发版本目前尚未完成,许多功能尚未运行。这是因为我们正在开发根组件,需要对代码、文件和数据库的结构进行大量更改。因此,要获得工作版本,您可能需要完全卸载并不时重新安装。你已被警告过。
首先,应用此处描述的过程:在 Chamilo 中管理 CSS 和 JavaScript(特别是,确保按照给定的链接在计算机上安装所有必要的组件)。
然后确保您的数据库支持大前缀(如果您使用 MySQL < 5.7 或 MariaDB < 10.2.2,请参阅此 Stack Overflow 线程)。
加载 (your-domain)/main/install/index.php URL 以启动安装程序(与以前版本中的安装程序非常相似)。如果安装程序是纯 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
最后,请记住,必须在 /etc/php/8.1/fpm/php.ini 中更改 PHP 设置,并且您必须重新加载 php8.1-fpm 才能考虑这些配置更改。
sudo systemctl reload php8.1-fpm
当使用2个版本时,在调用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
),那么在运行composer update
时,您可能会遇到运行所谓的platform_check.php
脚本的问题。这是因为该脚本没有使用正确的启动上下文,并且您可能需要在启动composer update
之前更改 Ubuntu 上的默认设置(即更改链接 /etc/alternatives/php 以指向其他 php 版本)。如果您需要返回 Chamilo 1.11 并且 Composer 再次抱怨,您可以随时恢复该操作。
要使用tests/scripts/git-hooks/
下的 git hook 示例脚本,可以使用以下命令。
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/consoledoctrine:xyz 选项
插件图像、css 和 js 库加载到 public/plugins 文件夹中(composer 更新将 web/plugins/plugin_name 中的plugin_name/public 中的内容复制到
插件模板使用 asset() 函数而不是使用“_p.web_plugin”
删除 main/inc/local.inc.php
通过 Gettext 管理翻译
图书馆
与 Symfony 5 集成
PHPMailer 替换为 Symfony Mailer
凉亭被纱线取代
跑步
php bin/console lexik:jwt:生成密钥对
在 Apache 设置 Bearer 中:
SetEnvIf 授权“(.*)”HTTP_AUTHORIZATION=$1
获取令牌:
卷曲-k -X POST https://example.com/api/authentication_token -H“内容类型:application/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