ค้นหาเว็บไซต์

วิธีติดตั้งแพลตฟอร์มการเรียนรู้ Moodle ด้วย Nginx ใน CentOS 8


Moodle คือระบบการจัดการการเรียนรู้ที่ได้รับความนิยมมากที่สุดในโลกสำหรับการสร้างเว็บไซต์การเรียนรู้ออนไลน์ที่มีประสิทธิภาพ โดยมีกิจกรรมและเครื่องมือด้านการศึกษามากมายที่คุณสามารถเลือกได้ รองรับการจัดการการประเมิน และจัดส่งพร้อมใบรับรองแบบกำหนดเอง นอกจากนี้ยังช่วยให้สามารถสื่อสารกับนักเรียนของคุณแบบเรียลไทม์ด้วยเครื่องมือการประชุมทางวิดีโออันทรงพลัง นอกจากนี้ยังพร้อมใช้งานบนมือถือ ดังนั้นนักเรียนของคุณสามารถเรียนรู้จากอุปกรณ์มือถือของพวกเขาได้

ข้อกำหนดเซิร์ฟเวอร์ Moodle

  • ระบบปฏิบัติการ: การติดตั้งเซิร์ฟเวอร์ CentOS 8 หรือ RHEL 8 ขั้นต่ำพร้อมติดตั้ง LEMP Stack
  • พื้นที่ดิสก์: 200MB สำหรับ Moodle และ 5GB น่าจะเป็นพื้นที่จัดเก็บเนื้อหาขั้นต่ำตามความเป็นจริง
  • โปรเซสเซอร์: แนะนำให้ใช้ 1GHz (ขั้นต่ำ), ดูอัลคอร์ 2GHz หรือมากกว่า
  • หน่วยความจำ: แนะนำให้ใช้ 512MB (ขั้นต่ำ) 1GB ขึ้นไป 8GB plus น่าจะอยู่บนเซิร์ฟเวอร์ที่ใช้งานจริงขนาดใหญ่

บนหน้านี้

  • การสร้างบันทึก DNS โดเมนสำหรับเว็บไซต์ Moodle
  • การติดตั้งแพลตฟอร์มการเรียนรู้ Moodle ในเซิร์ฟเวอร์ CentOS 8
  • การกำหนดค่า NGINX เพื่อให้บริการเว็บไซต์ Moodle
  • เสร็จสิ้นการติดตั้ง Moodle ผ่าน Web Installer
  • เปิดใช้งาน HTTPS บนไซต์ Moodle โดยใช้ Let's Encrypt

การสร้างบันทึก DNS โดเมนสำหรับเว็บไซต์ Moodle

1. เริ่มต้นด้วยการสร้างโดเมนย่อยที่ผู้ใช้จะใช้เพื่อเข้าถึงไซต์การเรียนรู้ออนไลน์ Moodle ตัวอย่างเช่น หากชื่อโดเมนของคุณคือ testprojects.me คุณสามารถสร้างโดเมนย่อยชื่อ learning.testprojects.me ได้

เปิดการตั้งค่า DNS ขั้นสูงของชื่อโดเมนของคุณ และเพิ่มบันทึก A ดังที่แสดงในภาพต่อไปนี้

การติดตั้ง Moodle ในเซิร์ฟเวอร์ CentOS 8

2. ก่อนที่จะติดตั้ง Moodle ตรวจสอบให้แน่ใจว่าคุณมีส่วนขยาย PHP ที่จำเป็นบนเซิร์ฟเวอร์ของคุณ คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง:

dnf install php-common php-iconv php-curl php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json libpcre3 libpcre3-dev graphviz aspell ghostscript clamav

3. ต่อไป ให้สร้างฐานข้อมูลสำหรับแอปพลิเคชัน Moodle ดังนี้

mysql -u root -p

จากนั้นสร้างฐานข้อมูล ผู้ใช้ฐานข้อมูล และสร้างรหัสผ่านที่ปลอดภัยสำหรับการใช้งาน

MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleadmin'@'localhost' IDENTIFIED BY 'p@zzwd0L2';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

4. ดาวน์โหลด Moodle เวอร์ชันล่าสุด (3.9 ณ เวลาที่เขียน) จากเว็บไซต์โครงการ Moodle อย่างเป็นทางการ จากนั้นแตกไฟล์เก็บถาวรและ ย้ายไปยังไดเรกทอรี webroot ของคุณ (/var/www/html/) จากนั้นตั้งค่าการอนุญาตและความเป็นเจ้าของที่เหมาะสมเพื่อให้เว็บเซิร์ฟเวอร์สามารถเข้าถึงไดเรกทอรี Moodle ได้ดังต่อไปนี้

wget -c https://download.moodle.org/download.php/direct/stable39/moodle-latest-39.tgz
tar -xzvf  moodle-latest-39.tgz
mv moodle /var/www/html/
chmod 775 -R /var/www/html/moodle
chown nginx:nginx -R /var/www/html/moodle

5. จากนั้น สร้างไดเรกทอรี moodledata ซึ่งเป็นตำแหน่งของไฟล์ที่อัปโหลดหรือสร้างโดยอินเทอร์เฟซ Moodledata จากนั้นกำหนดสิทธิ์ที่เหมาะสมและ ความเป็นเจ้าของเพื่อให้เว็บเซิร์ฟเวอร์เข้าถึงแบบอ่านและเขียนได้:


mkdir -p /var/www/html/moodledata
chmod 770 -R /var/www/html/moodledata
chown :nginx -R /var/www/html/moodledata

6. จากนั้น ย้ายไปยังไดเร็กทอรีการติดตั้ง Moodle และสร้างไฟล์ config.php จากตัวอย่าง config.dist.php ที่ให้ไว้ จากนั้นเปิดไฟล์เพื่อแก้ไขเพื่อกำหนดการตั้งค่าหลักบางอย่างสำหรับแพลตฟอร์ม Moodle ของคุณ เช่น พารามิเตอร์การเชื่อมต่อฐานข้อมูลและตำแหน่งของไซต์ และตำแหน่งที่ไฟล์ดังกล่าวสามารถค้นหาไดเร็กทอรี Moodledata:

cd /var/www/html/moodle/
cp config-dist.php config.php
vim config.php

ตั้งค่าประเภทฐานข้อมูลที่ถูกต้อง โฮสต์ฐานข้อมูลที่ถูกต้อง ชื่อฐานข้อมูล และผู้ใช้ฐานข้อมูลและรหัสผ่านของผู้ใช้

$CFG->dbtype    = 'mariadb';      // 'pgsql', 'mariadb', 'mysqli', 'sqlsrv' or 'oci'
$CFG->dblibrary = 'native';     // 'native' only at the moment
$CFG->dbhost    = 'localhost';  // eg 'localhost' or 'db.isp.com' or IP
$CFG->dbname    = 'moodledb';     // database name, eg moodle
$CFG->dbuser    = 'moodleadmin';   // your database username
$CFG->dbpass    = 'p@zzwd0L2';   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

7. นอกจากนี้ ให้ตั้งค่า URL ที่ใช้ในการเข้าถึงไซต์ Moodle ของคุณ ซึ่งจะระบุตำแหน่งของ wwwroot ที่ไฟล์เว็บ Moodle ของคุณตั้งอยู่ และ ยังเป็น dataroot (ไดเร็กทอรี Moodledata):

$CFG->wwwroot   = 'http://learning.testprojects.me';
$CFG->dataroot  = '/var/www/html/moodledata';

การกำหนดค่า NGINX เพื่อให้บริการเว็บไซต์ Moodle

8. ในส่วนนี้ คุณต้องกำหนดค่า NGINX เพื่อให้บริการแอปพลิเคชัน Moodle ของคุณ คุณต้องสร้างบล็อกเซิร์ฟเวอร์ในการกำหนดค่า NGINX ดังที่แสดง

vim /etc/nginx/conf.d/moodle.conf

คัดลอกและวางการกำหนดค่าต่อไปนี้ในไฟล์การกำหนดค่าบล็อกเซิร์ฟเวอร์ แทนที่ ชื่อเซิร์ฟเวอร์ ด้วย ชื่อโดเมนย่อย ที่สร้างขึ้นด้านบน และ fastcgi_pass ควรชี้ไปที่ php-fpm (หมายเหตุ บน CentOS 8 นั้น PHP-FPM ยอมรับคำขอ FastCGI โดยใช้ที่อยู่ที่กำหนดไว้ใน /etc/nginx/conf.d/ การกำหนดค่า php-fpm.conf)

server{
   listen 80;
    server_name learning.testprojects.me;
    root        /var/www/html/moodle;
    index       index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ ^(.+\.php)(.*)$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_index           index.php;
        fastcgi_pass            php-fpm;
        include                 /etc/nginx/mime.types;
        include                 fastcgi_params;
        fastcgi_param           PATH_INFO       $fastcgi_path_info;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

บันทึกไฟล์และปิด

9. จากนั้นตรวจสอบการกำหนดค่า NGINX เพื่อความถูกต้อง หาก ตกลง ให้รีสตาร์ท nginx และ บริการ php-fpm เพื่อใช้การเปลี่ยนแปลงล่าสุด:

nginx -t
systemctl restart nginx
systemctl restart php-fpm

10. หากคุณเปิดใช้งาน SELinux ในระบบของคุณ ให้เรียกใช้คำสั่งต่อไปนี้เพื่อตั้งค่าบริบทที่ถูกต้องสำหรับการเข้าถึงไฟล์เว็บ Moodle บน เซิร์ฟเวอร์:

setsebool -P httpd_can_network_connect on
chcon -R --type httpd_sys_rw_content_t /var/www/html

11. นอกจากนี้ ตรวจสอบให้แน่ใจว่าบริการ HTTP และ HTTPS เปิดอยู่ในไฟร์วอลล์เพื่ออนุญาตการรับส่งข้อมูลไปยัง NGINX เว็บเซิร์ฟเวอร์:

firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

เสร็จสิ้นการติดตั้ง Moodle ผ่าน Web Installer

12. หากต้องการเข้าถึงตัวติดตั้งเว็บ Moodle ให้เปิดเว็บเบราว์เซอร์ของคุณ และนำทางโดยใช้ โดเมนย่อย ที่คุณสร้างไว้ด้านบน:

http://learning.testprojects.me

เมื่อโหลดหน้ายินดีต้อนรับแล้ว ให้อ่านข้อกำหนดและเงื่อนไขอย่างละเอียดแล้วคลิก ดำเนินการต่อ

13. ถัดไป โปรแกรมติดตั้งเว็บจะตรวจสอบว่าระบบของคุณตรงตามข้อกำหนดสำหรับการรันไซต์ Moodle ในเวอร์ชันที่ระบุหรือไม่ คุณสามารถเลื่อนลงเพื่อดูข้อมูลเพิ่มเติม

14. โปรแกรมติดตั้งจะบ่นว่า HTTPS ไม่ได้เปิดใช้งาน ไม่ต้องสนใจข้อผิดพลาดนั้นในตอนนี้ (ในส่วนถัดไป เราจะแสดงวิธีเปิดใช้งาน HTTPS บน Moodle) และคลิก ดำเนินการต่อ เพื่อเริ่มการติดตั้งไฟล์เว็บจริง

15. ตอนนี้ตัวติดตั้งจะเริ่มการติดตั้งไฟล์ Moodle ตามที่แสดงในภาพหน้าจอต่อไปนี้ เมื่อเสร็จแล้ว คลิก ดำเนินการต่อ

16. ในขั้นตอนถัดไป คุณต้องอัปเดตบัญชีผู้ดูแลระบบของไซต์ Moodle ของคุณโดยอัปเดตชื่อผู้ใช้ รหัสผ่าน ชื่อ นามสกุล และที่อยู่อีเมล จากนั้นเลื่อนหน้าลงแล้วคลิก อัปเดตโปรไฟล์

17. จากนั้นอัปเดตการตั้งค่าหน้าแรกของไซต์ Moodle จากนั้นเลื่อนลงและคลิกอัปเดตเพื่อเริ่มใช้ไซต์ Moodle ของคุณ

18. ถัดไป คุณต้องลงทะเบียนเว็บไซต์ของคุณโดยทำตามคำแนะนำบนหน้าจอ คุณสามารถไปที่แดชบอร์ดได้โดยคลิกที่แดชบอร์ด

การตั้งค่า HTTPS บนไซต์ Moodle โดยใช้ Let's Encrypt

HTTPS เพิ่มการรักษาความปลอดภัยชั้นแรกให้กับเว็บไซต์ของคุณเพื่อให้เกิดการสื่อสารที่ปลอดภัยระหว่างผู้ใช้ของคุณกับแอปพลิเคชัน Moodle (โดยเฉพาะเว็บเซิร์ฟเวอร์ NGINX ที่ได้รับ ร้องขอและตอบกลับ)

คุณสามารถซื้อใบรับรอง SSL/TLS จาก CA เชิงพาณิชย์ หรือใช้ Let's Encrypt ซึ่งฟรีและได้รับการยอมรับจากเว็บเบราว์เซอร์สมัยใหม่ทั้งหมด สำหรับคำแนะนำนี้ เราจะใช้ มาเข้ารหัสกันเถอะ

19. การใช้งานใบรับรอง Let's Encrypt ได้รับการจัดการโดยอัตโนมัติโดยใช้เครื่องมือ certbot คุณสามารถติดตั้ง certbot และแพ็คเกจอื่นๆ ที่จำเป็นได้ด้วยคำสั่งต่อไปนี้:

dnf install certbot python3-certbot-nginx

20. จากนั้นเรียกใช้คำสั่งต่อไปนี้เพื่อรับใบรับรอง Let's Encrypt และให้ Certbot แก้ไขการกำหนดค่า NGINX ของคุณโดยอัตโนมัติเพื่อให้บริการ (มันจะกำหนดค่าด้วย HTTP เพื่อเปลี่ยนเส้นทางโดยอัตโนมัติไปยัง HTTPS)

certbot --nginx

21. จากนั้นเรียกใช้คำสั่งต่อไปนี้เพื่อเปิดใช้งานการต่ออายุใบรับรอง Let’s Encrypt SSL/TLS โดยอัตโนมัติ:

echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

22. จากนั้น อัปเดตการกำหนดค่า Moodle ของคุณเพื่อเริ่มใช้ HTTPS

vim /var/www/html/moodle/config.php

เปลี่ยน wwwroot URL จาก HTTP เป็น HTTPS:

$CFG->wwwroot   = 'https://learning.testprojects.me';

23. สุดท้ายแต่ไม่ท้ายสุด ตรวจสอบให้แน่ใจว่าไซต์ Moodle ของคุณทำงานบน HTTPS แล้ว

แค่นั้นแหละ! หากต้องการข้อมูลเพิ่มเติมและตัวเลือกการกำหนดค่าเพื่อใช้งานแพลตฟอร์มการเรียนรู้ใหม่ของคุณ โปรดไปที่เว็บไซต์ Moodle และอ่านเอกสารประกอบอย่างเป็นทางการ