Chamilo는 GNU/GPLv3+ 라이센스에 따라 게시된 "LMS"라고도 불리는 e-러닝 플랫폼입니다. 2010년 출시 이후 전 세계적으로 3천만 명이 넘는 사람들이 사용하고 있습니다. 이것은 개발 버전입니다. 현재 안정적인 브랜치를 보려면 코드 탭에서 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 서버
Chamilo 2를 실행하려면 PHP8+ 및 NodeJS v18+가 필요합니다. 새로운 Ubuntu 22.04에서는 sudo(또는 루트로, 보안상의 이유로 권장되지 않음)를 사용하여 다음과 같은 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
로 버전을 확인하세요. 그렇지 않으면 노드 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(Node Version Manager)을 사용하는 것입니다. 여기의 지침에 따라 설치할 수 있습니다. 그런 다음 필요한 노드 버전을 설치할 수 있습니다. 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를 입력하고 UI 지침(데이터베이스, 관리자 사용자 설정 등)을 따릅니다.
웹 설치 프로세스가 끝나면 권한을 합리적으로 안전한 상태로 다시 변경합니다.
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
알파 이전 단계의 개발자를 위한 참고 사항: 교리 명령은 새로 설치 시 데이터베이스 스키마를 예상되는 데이터베이스 스키마로 업데이트하려고 시도합니다. Doctrine이 이를 수행하기 위해 가장 빠른 경로를 택하기 때문에 이것이 항상 완벽한 것은 아닙니다. 예를 들어, 테이블 이름을 바꾸기 위한 마이그레이션이 있는 경우( 마이그레이션 중인 Chamilo 1의 시스템에 잘 적용됨) Doctrine은 대상 테이블이 존재하지 않고 원본 테이블(새 테이블에 있어서는 안 됨)을 고려할 수 있습니다. 설치)이 여전히 존재하므로 이전 테이블을 삭제하고 새 테이블을 생성하며 이 과정에서 해당 테이블의 모든 레코드가 손실됩니다. 이를 방지하려면 대신 다음을 사용하여 마이그레이션을 실행하는 것이 좋습니다.
php bin/console doctrine:migrations:execute "ChamiloCoreBundleMigrationsSchemaV200Version[date]"
이는 마이그레이션 논리를 존중하고 필요한 데이터 처리를 수행합니다.
이렇게 하면 public/build 폴더의 JS(yarn) 및 PHP(composer) 종속성이 업데이트됩니다.
때로는 기존 파일과 충돌이 발생하므로 이를 방지하기 위한 몇 가지 힌트가 있습니다.
작성기 오류의 경우 공급업체 폴더와 작성기 잠금 파일을 제거할 수 있습니다.
원사 오류의 경우 원사.lock .yarn/cache/* node_modules/*를 제거할 수 있습니다.
Chamilo를 열 때 로드되지 않으면 var/cache/*를 삭제할 수 있습니다.
불완전한 마이그레이션 또는 Chamilo 개발 버전을 설치한 후 추가된 마이그레이션으로 인해 Chamilo의 일부 설정이 올바르게 처리되지 않았을 수 있다고 판단되는 경우 URL /admin/settings_sync가 구축되어 업데이트를 통해 자동으로 문제를 해결합니다. 데이터베이스 상태를 기반으로 하는 PHP 클래스입니다. 하지만 이 문제는 거의 발생하지 않습니다.
개발 환경에 설치했고 완전히 정리해야 한다고 생각되는 경우(데이터베이스 변경 후 필요할 수 있음) 다음을 수행할 수 있습니다.
.env
파일 제거
{url}/main/install/index.php 스크립트를 다시 로드하세요.
데이터베이스는 테이블별로 자동으로 삭제되어야 합니다. 극단적인 경우(이전 버전에서 더 이상 필요하지 않은 테이블을 생성하여 문제가 발생하는 경우)에는 테이블을 삭제하여 완전히 정리하고 싶을 수도 있지만 대부분의 경우에는 필요하지 않습니다.
어떤 이유로 인해 작곡가나 원사에 문제가 있는 경우 가장 좋은 첫 번째 단계는 vendor/
폴더(작곡가의 경우) 또는 node_modules/
폴더(Yan의 경우)를 완전히 삭제하는 것입니다.
개발자이고 현재 개발 브랜치(아직 안정적이지 않음)에서 Chamilo에 기여하고 싶다면 아래 지침을 따르십시오. 현재 개발 버전은 완료되지 않았으며 많은 기능이 아직 작동하지 않는다는 점을 명심하십시오. 이는 코드, 파일 및 데이터베이스 구조에 대대적인 변경이 필요한 루트 구성 요소를 작업하고 있기 때문입니다. 따라서 작동하는 버전을 얻으려면 때때로 완전히 제거하고 다시 설치해야 할 수도 있습니다. 당신은 경고를 받았습니다.
먼저 여기에 설명된 절차를 적용하십시오: Chamilo에서 CSS 및 JavaScript 관리(특히 컴퓨터에 필요한 모든 구성 요소를 설치하려면 제공된 링크를 따르십시오).
그런 다음 데이터베이스가 큰 접두사를 지원하는지 확인하십시오(MySQL < 5.7 또는 MariaDB < 10.2.2를 사용하는 경우 이 스택 오버플로 스레드 참조).
(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(다른 모든 용도)를 동시에 지원하고 싶을 수도 있습니다. 우분투에서는 다음과 같이 할 수 있습니다.
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
참조) 어쨌든 composer update
실행할 때 소위 platform_check.php
스크립트를 사용하여 실행하는 데 문제가 있을 수 있습니다. 이는 이 스크립트가 적절한 시작 컨텍스트를 사용하지 않기 때문이며, composer update
시작하기 전에 Ubuntu에서 기본 설정을 변경해야 할 수도 있습니다(예: 다른 PHP 버전을 가리키도록 /etc/alternatives/php 링크 변경). Chamilo 1.11 작업으로 돌아가야 하고 Composer가 다시 불평하는 경우 나중에 언제든지 해당 작업을 되돌릴 수 있습니다.
tests/scripts/git-hooks/
아래에서 git Hook 샘플 스크립트를 사용하려면 다음 명령을 사용할 수 있습니다.
git config core.hooksPath tests/scripts/git-hooks/
일반적으로 main/ 폴더는 public/main/으로 이동되었습니다.
앱/리소스/공개/자산이 공개/자산으로 이동되었습니다.
main/inc/lib/javascript가 public/js로 이동되었습니다.
메인/img/공개/img로 이동
메인/템플릿/기본값이 src/CoreBundle/Resources/views로 이동되었습니다.
src/Camilo/XXXBundle이 src/CoreBundle 또는 src/CourseBundle로 이동되었습니다.
bin/doctrine.php는 bin/console 사용 교리:xyz 옵션을 제거했습니다.
플러그인 이미지, CSS 및 js 라이브러리는 public/plugins 폴더 내에 로드됩니다(Composer 업데이트는 web/plugins/plugin_name 내에서plugin_name/public 내부의 콘텐츠를 복사합니다).
플러그인 템플릿은 "_p.web_plugin"을 사용하는 대신 자산() 함수를 사용합니다.
main/inc/local.inc.php 제거
Gettext를 통해 관리되는 번역
도서관
Symfony 5와의 통합
PHPMailer가 Symfony Mailer로 대체되었습니다.
바우어는 실로 대체됨
달리다
php bin/콘솔 어휘:jwt:generate-keypair
Apache 설정 Bearer에서 다음을 사용합니다.
SetEnvIf 인증 "(.*)" HTTP_AUTHORIZATION=$1
토큰을 얻으세요:
컬 -k -X POST https://example.com/api/authentication_token -H "콘텐츠 유형: 애플리케이션/json" -d '{"사용자 이름":"관리자","비밀번호":"관리자"}'
응답은 다음과 같이 반환되어야 합니다.
{"토큰":"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 저장소에서 분기된 저장소로 끌어오기 요청을 보내주시기 바랍니다.
Chamilo에 대한 자세한 내용을 보려면 https://campus.chamilo.org/documentation/index.html을 방문하세요.