Chamilo เป็นแพลตฟอร์มอีเลิร์นนิงหรือที่เรียกว่า "LMS" ซึ่งเผยแพร่ภายใต้ใบอนุญาต GNU/GPLv3+ มีผู้ใช้งานมากกว่า 30 ล้านคนทั่วโลกนับตั้งแต่ก่อตั้งขึ้นในปี 2010 นี่คือเวอร์ชันการพัฒนา สำหรับสาขาที่มีความเสถียรในปัจจุบัน โปรดเลือกสาขา 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+
คุณจะต้องใช้ PHP8+ และ NodeJS v18+ เพื่อรัน Chamilo 2 บน Ubuntu 22.04 ใหม่ คุณสามารถเตรียมเซิร์ฟเวอร์ของคุณได้โดยการออกคำสั่ง apt ดังต่อไปนี้ด้วย sudo (หรือในฐานะรูท แต่ไม่แนะนำด้วยเหตุผลด้านความปลอดภัย):
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
หมายเหตุสำหรับนักพัฒนาในระยะพรีอัลฟา: คำสั่งหลักจะพยายามอัปเดตสคีมาฐานข้อมูลของคุณเป็นสคีมาฐานข้อมูลที่คาดหวังในการติดตั้งใหม่ สิ่งนี้ไม่ได้สมบูรณ์แบบเสมอไป เนื่องจากหลักคำสอนจะใช้เส้นทางที่เร็วที่สุดในการดำเนินการนี้ ตัวอย่างเช่น หากคุณมีการย้ายข้อมูลเพื่อเปลี่ยนชื่อตาราง (ซึ่งจะใช้ได้ดีกับระบบใน Chamilo 1 ที่ กำลังย้าย ) หลักคำสอนอาจพิจารณาว่าไม่มีตารางปลายทางและเป็นตารางต้นฉบับ (ซึ่งไม่ควรอยู่ในตารางใหม่ การติดตั้ง) ยังคงอยู่ที่นั่น ดังนั้นมันจะทิ้งตารางเก่าและสร้างตารางใหม่ โดยสูญเสียบันทึกทั้งหมดในตารางนั้นในกระบวนการไป เพื่อหลีกเลี่ยงปัญหานี้ โปรดดำเนินการย้ายข้อมูลดังต่อไปนี้แทน
php bin/console doctrine:migrations:execute "ChamiloCoreBundleMigrationsSchemaV200Version[date]"
ซึ่งจะเคารพตรรกะการย้ายข้อมูลและดำเนินการประมวลผลข้อมูลที่จำเป็น
สิ่งนี้จะอัปเดตการขึ้นต่อกันของ JS (yarn) และ PHP (ผู้แต่ง) ในโฟลเดอร์ public/build
บางครั้งอาจมีข้อขัดแย้งกับไฟล์ที่มีอยู่ ดังนั้นเพื่อหลีกเลี่ยงปัญหาเหล่านี้ คำแนะนำบางประการมีดังนี้
สำหรับข้อผิดพลาดของผู้แต่งคุณสามารถลบโฟลเดอร์ผู้จำหน่ายและไฟล์ composer.lock ได้
สำหรับข้อผิดพลาดของเส้นด้าย คุณสามารถลบเส้นด้าย.lock .yarn/cache/* node_modules/*
เมื่อเปิด Chamilo มันไม่โหลด ก็สามารถลบ var/cache/* ได้
ในกรณีที่คุณเชื่อว่าการตั้งค่าบางอย่างใน Chamilo อาจไม่ได้รับการประมวลผลอย่างถูกต้องเนื่องจากการโยกย้ายที่ไม่สมบูรณ์หรือการย้ายที่เพิ่มเข้ามาหลังจากที่คุณติดตั้ง Chamilo เวอร์ชันพัฒนาแล้ว URL /admin/settings_sync ถูกสร้างขึ้นเพื่อลองและแก้ไขโดยอัตโนมัติด้วยการอัปเดต คลาส PHP ตามสถานะฐานข้อมูล แม้ว่าปัญหานี้จะเกิดขึ้นไม่บ่อยนัก
หากคุณติดตั้งไว้ในสภาพแวดล้อมการพัฒนาและรู้สึกว่าคุณควรล้างข้อมูลทั้งหมด (อาจจำเป็นหลังจากการเปลี่ยนแปลงฐานข้อมูล) คุณสามารถทำได้โดย:
การลบไฟล์ .env
โหลดสคริปต์ {url}/main/install/index.php อีกครั้ง
ฐานข้อมูลควรถูกทำลายโดยอัตโนมัติ ทีละตาราง ในบางกรณีที่รุนแรงที่สุด (เวอร์ชันก่อนหน้านี้สร้างตารางที่ไม่จำเป็นอีกต่อไปและสร้างปัญหา) คุณอาจต้องการทำความสะอาดทั้งหมดโดยเพียงแค่ปล่อยมันทิ้ง แต่การดำเนินการนี้ไม่จำเป็นเป็นส่วนใหญ่
หากคุณมีปัญหากับผู้แต่งหรือ Yarn ด้วยเหตุผลบางประการ ขั้นตอนแรกที่ดีคือการลบ vendor/
โฟลเดอร์ (สำหรับผู้แต่ง) หรือโฟลเดอร์ node_modules/
(สำหรับ Yarn) ให้หมด
หากคุณเป็นนักพัฒนาและต้องการสนับสนุน Chamilo ในสาขาการพัฒนาปัจจุบัน (ยังไม่เสถียร) โปรดปฏิบัติตามคำแนะนำด้านล่าง โปรดจำไว้ว่าเวอร์ชันการพัฒนายังไม่เสร็จสมบูรณ์ในขณะนี้ และคุณสมบัติหลายอย่างยังไม่ทำงาน เนื่องจากเรากำลังทำงานกับส่วนประกอบรูทที่ต้องการการเปลี่ยนแปลงโครงสร้างของโค้ด ไฟล์ และฐานข้อมูลอย่างมาก ด้วยเหตุนี้ เพื่อให้ได้เวอร์ชันที่ใช้งานได้ คุณอาจต้องถอนการติดตั้งและติดตั้งใหม่ทั้งหมดเป็นครั้งคราว คุณได้รับคำเตือนแล้ว
ขั้นแรก ใช้ขั้นตอนที่อธิบายไว้ที่นี่: การจัดการ CSS และ JavaScript ใน Chamilo (โดยเฉพาะ ตรวจสอบให้แน่ใจว่าคุณทำตามลิงก์ที่ให้ไว้เพื่อติดตั้งส่วนประกอบที่จำเป็นทั้งหมดบนคอมพิวเตอร์ของคุณ)
จากนั้นตรวจสอบให้แน่ใจว่าฐานข้อมูลของคุณรองรับคำนำหน้าขนาดใหญ่ (ดูเธรด Stack Overflow นี้หากคุณใช้ 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
ในการกำหนดค่า vhost ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า PHP 8.1 FPM ให้ตอบรับ vhost เดียวนี้โดยเพิ่มที่ใดที่หนึ่งระหว่างแท็ก
ของคุณ ดังนี้:
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
เมื่อใช้ 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
) คุณอาจประสบปัญหาในการทำงานกับสิ่งที่เรียกว่าสคริปต์ platform_check.php
เมื่อเรียกใช้ composer update
อยู่แล้ว เนื่องจากสคริปต์นี้ไม่ได้ใช้บริบทการเปิดใช้ที่เหมาะสม และคุณอาจต้องเปลี่ยนการตั้งค่าเริ่มต้นของคุณบน Ubuntu (เช่น เปลี่ยนลิงก์ /etc/alternatives/php ให้ชี้ไปที่เวอร์ชัน php อื่น) ก่อนที่จะเปิด composer update
คุณสามารถเปลี่ยนการดำเนินการนั้นกลับคืนมาได้ในภายหลัง หากคุณต้องการกลับไปทำงานกับ Chamilo 1.11 และผู้แต่งเพลงบ่นอีกครั้ง
หากต้องการใช้สคริปต์ตัวอย่าง git hook ภายใต้ tests/scripts/git-hooks/
คุณสามารถใช้คำสั่งต่อไปนี้ได้
git config core.hooksPath tests/scripts/git-hooks/
โดยทั่วไปแล้ว main/ โฟลเดอร์จะถูกย้ายไปยัง public/main/
แอป/ทรัพยากร/สาธารณะ/สินทรัพย์ถูกย้ายไปยังสาธารณะ/สินทรัพย์
main/inc/lib/javascript ย้ายไปที่ public/js
main/img/ ย้ายไปที่สาธารณะ/img
main/template/default ย้ายไปที่ src/CoreBundle/Resources/views
src/Chamilo/XXXBundle ย้ายไปที่ src/CoreBundle หรือ src/CourseBundle
bin/doctrine.php ลบออกแล้ว ใช้ตัวเลือก bin/console doctrine:xyz
รูปภาพปลั๊กอิน, css และ js libs ถูกโหลดภายในโฟลเดอร์ public/plugins (การอัปเดตผู้แต่งจะคัดลอกเนื้อหาภายใน Plugin_name/public ภายใน web/plugins/plugin_name
เทมเพลตปลั๊กอินใช้ฟังก์ชัน Asset() แทนการใช้ "_p.web_plugin"
ลบ main/inc/local.inc.php
การแปลจัดการผ่าน Gettext
ห้องสมุด
บูรณาการกับ Symfony 5
PHPMailer ถูกแทนที่ด้วย Symfony Mailer
ซุ้มประตูถูกแทนที่ด้วยเส้นด้าย
วิ่ง
php bin/console lexik:jwt:generate-keypair
ในผู้ถือการตั้งค่า Apache ด้วย:
การอนุญาต SetEnvIf "(.*)" HTTP_AUTHORIZATION=$1
รับโทเค็น:
curl -k -X โพสต์ https://example.com/api/authentication_token -H "ประเภทเนื้อหา: application/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