Cách cài đặt nền tảng eLearning Moodle trên Rocky Linux 8

theanh

Administrator
Nhân viên
Moodle là Hệ thống quản lý học tập (LMS) trực tuyến miễn phí, mã nguồn mở. Nó cho phép các nhà giáo dục tạo ra một trang web đầy đủ chức năng cho các khóa học giáo dục hoàn chỉnh với trải nghiệm lớp học trực tuyến. Nó được viết bằng PHP. Nó cung cấp một bộ tính năng phong phú bao gồm wiki, chấm điểm, nộp bài tập, câu đố trực tuyến, diễn đàn thảo luận, v.v.

Hướng dẫn này giải thích cách cài đặt Moodle trên máy chủ Rocky Linux 8.

Điều kiện tiên quyết​


  • Một máy chủ chạy Rocky Linux 8.

  • Một tên miền trỏ đến máy chủ. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng tên miền moodle.example.com.

  • Một người dùng không phải root có quyền sudo.

  • Đảm bảo mọi thứ được cập nhật.
Mã:
$ sudo dnf update
[*]
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils -y

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --staterunning
Tường lửa hoạt động với các vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Nó sẽ hiển thị đầu ra sau.
Mã:
cockpit dhcpv6-client ssh
Moodle cần các cổng HTTP và HTTPS để hoạt động. Mở chúng ra.
Mã:
$ sudo firewall-cmd --add-service=http --permanent$ sudo firewall-cmd --add-service=https --permanent
Tải lại tường lửa để áp dụng các thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 2 - Cài đặt Git​

Moodle yêu cầu Git để lấy các tệp ứng dụng. Cài đặt Git.
Mã:
$ sudo dnf install git

Bước 3 - Cài đặt và cấu hình PHP​

Chúng ta cần cài đặt PHP 8.0 để Moodle hoạt động cho hướng dẫn của chúng ta. Bước đầu tiên là lấy kho lưu trữ Epel.
Mã:
$ sudo dnf install epel-release
Tiếp theo, cài đặt kho lưu trữ Remi.
Mã:
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Kiểm tra các luồng PHP khả dụng.
Mã:
$ dnf module list php -yRocky Linux 8 - AppStreamTên Tóm tắt hồ sơ luồngphp 7.2 [d] common [d], devel, minimal PHP scripting languagephp 7.3 common [d], devel, minimal PHP scripting languagephp 7.4 common [d], devel, minimal PHP scripting languagephp 8.0 common [d], devel, minimal PHP scripting languageRemi's Modular repository for Enterprise Linux 8 - x86_64Tên Tóm tắt hồ sơ luồngphp remi-7.2 common [d], devel, ngôn ngữ kịch bản PHP tối thiểuphp remi-7.3 common [d], devel, ngôn ngữ kịch bản PHP tối thiểuphp remi-7.4 common [d], devel, ngôn ngữ kịch bản PHP tối thiểuphp remi-8.0 common [d], devel, ngôn ngữ kịch bản PHP tối thiểuphp remi-8.1 common [d], devel, ngôn ngữ kịch bản PHP tối thiểuGợi ý: [d]mặc định, [được]bật, [x]vô hiệu hóa, [cài đặt]
Phiên bản mặc định là 7.2. Bật kho lưu trữ PHP 8.0 của Remi.
Mã:
$ sudo dnf module reset php -y$ sudo dnf module enable php:remi-8.0
Cài đặt PHP và các tiện ích mở rộng bắt buộc theo yêu cầu của Moodle.
Mã:
$ sudo dnf install graphviz aspell ghostscript clamav php-fpm php-iconv php-curl php-mysqlnd php-cli php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json php-sodium php-opcache
Xác minh cài đặt.
Mã:
$ php --versionPHP 8.0.21 (cli) (xây dựng: 6 tháng 7 năm 2022 10:13:53) (NTS gcc x86_64)Bản quyền (c) The PHP GroupZend Engine v4.0.21, Bản quyền (c) Zend Technologies với Zend OPcache v8.0.21, Bản quyền (c), của Zend Technologies
Mở tệp php.ini để chỉnh sửa.
Mã:
$ sudo nano /etc/php.ini
Thay đổi giá trị của các biến sau để đặt kích thước tệp đính kèm thư thành 25MB.
Mã:
upload_max_filesize = 25Mpost_max_size = 25M
Tiếp theo, bỏ chú thích biến max_input_vars bằng cách xóa dấu chấm phẩy trước biến và thay đổi giá trị của biến thành 5000.
Mã:
max_input_vars = 5000
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/php-fpm.d/www.conf.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
Tìm các dòng user=apache và group=apache trong tệp và thay đổi chúng như sau.
Mã:
...; Người dùng/nhóm quy trình Unix; Lưu ý: Người dùng là bắt buộc. Nếu nhóm không được đặt, nhóm người dùng mặc định; sẽ được sử dụng.; RPM: người dùng apache được chọn để cung cấp quyền truy cập vào cùng thư mục với httpduser = nginx; RPM: Giữ cho nhóm được phép ghi vào thư mục nhật ký.group = nginx...
Tiếp theo, bỏ chú thích dòng chủ sở hữu tệp socket, nhóm và quyền mặc định rồi thay đổi chúng như hiển thị bên dưới.
Mã:
; Đặt quyền cho socket unix, nếu có. Trong Linux, quyền đọc/ghi; phải được đặt để cho phép kết nối từ máy chủ web.; Giá trị mặc định: người dùng và nhóm được đặt làm người dùng đang chạy; mode được đặt thành 0660listen.owner = nginxlisten.group = nginxlisten.mode = 0660
Tiếp theo, hãy chú thích dòng sau như được hiển thị bằng cách đặt dấu chấm phẩy trước dòng đó.
Mã:
;listen.acl_users = apache,nginx
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cấp quyền thích hợp cho thư mục phiên PHP.
Mã:
$ chown -R nginx:nginx /var/lib/php/session/
Kích hoạt và khởi động dịch vụ PHP-FPM.
Mã:
$ sudo systemctl enable php-fpm --now

Bước 4 - Cài đặt và Cấu hình MySQL​

Cài đặt máy chủ MySQL.
Mã:
$ sudo dnf install mysql-server
Xác nhận cài đặt bằng cách kiểm tra phiên bản.
Mã:
$ mysql --versionmysql Ver 8.0.26 cho Linux trên x86_64 (Phân phối nguồn)
Bật và khởi động dịch vụ MySQL.
Mã:
$ sudo systemctl enable mysqld --now
Chạy tập lệnh cài đặt Bảo mật.
Mã:
$ sudo mysql_secure_installation
Bạn sẽ nhận được một số lời nhắc. Lời nhắc đầu tiên sẽ hỏi bạn có muốn cài đặt Plugin Xác thực mật khẩu không. Nhấn Y để cài đặt plugin. Chọn 2 làm mức độ bảo mật, yêu cầu mật khẩu của bạn phải dài ít nhất 8 ký tự và bao gồm cả chữ hoa, chữ thường, số và ký tự đặc biệt.
Mã:
VALIDATE PASSWORD COMPONENT có thể được sử dụng để kiểm tra mật khẩuvà cải thiện bảo mật. Nó kiểm tra độ mạnh của mật khẩuvà cho phép người dùng chỉ đặt những mật khẩuđủ bảo mật. Bạn có muốn thiết lập thành phần VALIDATE PASSWORD không?Nhấn y|Y để Có, bất kỳ phím nào khác để Không: (Nhấn Y)Có ba mức chính sách xác thực mật khẩu:THẤP Chiều dài >= 8TRUNG BÌNH Chiều dài >= 8, số, chữ hoa và chữ thường và ký tự đặc biệtMẠNH Chiều dài >= 8, số, chữ hoa và chữ thường, ký tự đặc biệt và tệp từ điểnVui lòng nhập 0 = THẤP, 1 = TRUNG BÌNH và 2 = MẠNH: (Nhập 2)
Tiếp theo, bạn sẽ được yêu cầu tạo mật khẩu gốc mạnh. Đảm bảo mật khẩu của bạn khớp với yêu cầu của plugin Xác thực.
Mã:
Vui lòng đặt mật khẩu cho root tại đây.Mật khẩu mới:Nhập lại mật khẩu mới:
Tiếp theo, bạn sẽ được hỏi một số lời nhắc liên quan đến việc tăng cường bảo mật cho cơ sở dữ liệu. Nhấn Y ở mỗi lời nhắc.
Mã:
Bạn có muốn tiếp tục với mật khẩu đã cung cấp không? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): (Nhấn Y)Xóa người dùng ẩn danh? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): (Nhấn Y)Không cho phép root đăng nhập từ xa? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): (Nhấn Y)Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): (Nhấn Y)Tải lại bảng đặc quyền ngay bây giờ? (Nhấn y|Y để Có, bất kỳ phím nào khác để Không): (Nhấn Y)Thành công.Hoàn tất!
Đăng nhập vào shell MariaDB.
Mã:
$ sudo mysql
Tạo cơ sở dữ liệu cho Moodle.
Mã:
mysql > CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Tạo người dùng SQL để truy cập cơ sở dữ liệu. Thay thế YourPassword23! bằng mật khẩu bạn chọn.
Mã:
mysql > create user 'moodleuser'@'localhost' IDENTIFIED BY 'YourPassword23!';
Cấp quyền truy cập vào cơ sở dữ liệu cho moodleuser.
Mã:
mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleuser'@'localhost';
Tải lại bảng đặc quyền.
Mã:
mysql > FLUSH PRIVILEGES;
Thoát khỏi shell.
Mã:
mysql > exit

Bước 5 - Cài đặt Nginx​

Rocky Linux được tích hợp sẵn phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.

Tạo và mở tệp /etc/yum.repos.d/nginx.repo để tạo kho lưu trữ Nginx chính thức.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Dán mã sau vào đó.
Mã:
[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx mainline repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Cài đặt máy chủ Nginx.
Mã:
$ sudo dnf install nginx
Xác minh cài đặt.
Mã:
$ nginx -vphiên bản nginx: nginx/1.22.0

Bước 6 - Cài đặt Moodle​

Tạo thư mục công khai cho Moodle.
Mã:
$ sudo mkdir /var/www/html/moodle
Cấp quyền cho người dùng đã đăng nhập để truy cập thư mục.
Mã:
$ sudo chown -R $USER:$USER /var/www/html/moodle
Chuyển sang thư mục công khai.
Mã:
$ cd /var/www/html/moodle
Sao chép kho lưu trữ Github của Moodle.
Mã:
$ git clone https://github.com/moodle/moodle.git .
Kiểm tra danh sách các nhánh khả dụng.
Mã:
$ git branch -a
Hiện tại, MOODLE_400_STABLE là phiên bản mới nhất khả dụng. Tạo một nhánh cục bộ có tên là MOODLE_400_STABLE và thiết lập nhánh này để theo dõi nhánh từ xa.
Mã:
$ git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE
Chuyển sang nhánh cục bộ mới tạo.
Mã:
$ git checkout MOODLE_400_STABLE
Tạo một thư mục dữ liệu cho Moodle.
Mã:
$ sudo mkdir /var/moodledata
Cấp quyền thích hợp cho thư mục dữ liệu Moodle.
Mã:
$ sudo chown -R nginx /var/moodledata$ sudo chmod -R 775 /var/moodledata
Cấp quyền ghi vào thư mục Moodle.
Mã:
$ sudo chmod -R 755 /var/www/html/moodle

Bước 7 - Cấu hình Moodle​

Chuyển đến thư mục Moodle.
Mã:
$ cd /var/www/html/moodle
Sao chép tệp cấu hình mẫu để tạo tệp cấu hình Moodle.
Mã:
$ cp config-dist.php config.php
Mở tệp cấu hình để chỉnh sửa.
Mã:
$ nano config.php
Tìm phần cấu hình cơ sở dữ liệu, sau đó cấu hình cơ sở dữ liệu nơi lưu trữ tất cả dữ liệu Moodle, như hiển thị bên dưới.
Mã:
$CFG->dbtype = 'mysqli'; // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', 'sqlsrv' hoặc 'oci'$CFG->dblibrary = 'native'; // 'native' chỉ có tại thời điểm này$CFG->dbhost = 'localhost'; // ví dụ 'localhost' hoặc 'db.isp.com' hoặc IP$CFG->dbname = 'moodledb'; // tên cơ sở dữ liệu, ví dụ moodle$CFG->dbuser = 'moodleuser'; // tên người dùng cơ sở dữ liệu của bạn$CFG->dbpass = 'YourPassword23!'; // mật khẩu cơ sở dữ liệu của bạn$CFG->prefix = 'mdl_'; // tiền tố để sử dụng cho tất cả tên bảng
Ngoài ra, hãy cấu hình vị trí của tên miền Moodle và thư mục dữ liệu.
Mã:
$CFG->wwwroot = 'https://moodle.example.com';$CFG->dataroot = '/var/moodledata';
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bước 8 - Cài đặt SSL​

Công cụ Certbot tạo chứng chỉ SSL bằng API Let's Encrypt. Công cụ này yêu cầu kho lưu trữ EPEL nhưng vì chúng tôi đã cài đặt kho lưu trữ này nên chúng tôi có thể tiến hành trực tiếp. Phát hành lệnh sau để cài đặt.
Mã:
$ sudo dnf install certbot
Tạo chứng chỉ SSL.
Mã:
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d moodle.example.com
Lệnh trên sẽ tải xuống chứng chỉ vào thư mục /etc/letsencrypt/live/moodle.example.com trên máy chủ của bạn.

Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Tạo thư mục gốc web thử thách để tự động gia hạn Let's Encrypt.
Mã:
$ sudo mkdir -p /var/lib/letsencrypt
Tạo một Cron Job để gia hạn SSL. Nó sẽ chạy hàng ngày để kiểm tra chứng chỉ và gia hạn nếu cần. Để làm được điều đó, trước tiên, hãy tạo tệp /etc/cron.daily/certbot-renew và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/cron.daily/certbot-renew
Dán mã sau.
Mã:
#!/bin/shcertbot renew --cert-name moodle.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Thay đổi quyền trên tệp tác vụ để làm cho tệp có thể thực thi được.
Mã:
$ sudo chmod +x /etc/cron.daily/certbot-renew

Bước 9 - Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/moodle.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/moodle.conf
Dán mã sau vào đó.
Mã:
# Chuyển hướng tất cả các tệp không được mã hóa sang tệp được mã hóaserver { listen 80; listen [::]:80; server_name moodle.example.com; trả về 301 https://$host$request_uri;}máy chủ { lắng nghe 443 ssl http2; lắng nghe [::]:443 ssl http2; tên máy chủ moodle.example.com; gốc /var/www/html/moodle; chỉ mục index.php; chứng chỉ ssl /etc/letsencrypt/live/moodle.example.com/fullchain.pem; khóa ssl certificate /etc/letsencrypt/live/moodle.example.com/privkey.pem; chứng chỉ ssl đáng tin cậy /etc/letsencrypt/live/moodle.example.com/chain.pem; thời gian chờ ssl_session_1 ngày; bộ nhớ đệm ssl_session_cache được chia sẻ:MozSSL:10 phút; ssl_session_tickets tắt; ssl_stapling bật; ssl_stapling_verify bật; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; access_log /var/log/nginx/moodle.access.log main; error_log /var/log/nginx/moodle.error.log; client_max_body_size 25M; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ ^(.+\.php)(.*)$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_index index.php; fastcgi_pass unix:/run/php-fpm/www.sock; include /etc/nginx/mime.types; include fastcgi_params; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # Ẩn tất cả các tệp dot nhưng cho phép "URI nổi tiếng" theo RFC 5785 location ~ /\.(?!well-known).* { return 404; } # Điều này phải nằm sau quy tắc php fpm và rất gần với bộ quy tắc nginx cuối cùng. # Không cho phép truy cập trực tiếp vào nhiều tệp nội bộ khác nhau. Xem MDL-69333 location ~ (/vendor/|/node_modules/|composer\.json|/readme|/README|readme\.txt|/upgrade\.txt|db/install\.xml|/fixtures/|/behat/|phpunit\.xml|\.lock|environment\.xml) { deny all; return 404; }}
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cú pháp tệp cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: tệp cấu hình Cú pháp /etc/nginx/nginx.conf ổnnginx: tệp cấu hình /etc/nginx/nginx.conf kiểm tra thành công
Bật và khởi động dịch vụ Nginx để bật cấu hình mới.
Mã:
$ sudo systemctl enable nginx --now
Nếu bạn gặp lỗi sau, thì rất có thể là do SELinux Restrictions.
Mã:
nginx: [emerg] open() "/var/run/nginx.pid" không thành công (13: Quyền bị từ chối)
Để sửa lỗi, hãy chạy các lệnh sau.
Mã:
$ sudo ausearch -c 'nginx' --raw | audit2allow -M my-nginx$ sudo semodule -X 300 -i my-nginx.pp
Khởi động lại dịch vụ Nginx.
Mã:
$ sudo systemctl start nginx

Bước 10 - Cấu hình SELinux​

Thay đổi ngữ cảnh bảo mật tệp cho thư mục web và dữ liệu của Moodle.
Mã:
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/moodle'$ sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata'$ sudo restorecon -Rv '/var/www/html/moodle'$ sudo restorecon -Rv '/var/moodledata'
Cấu hình SELinux để cho phép kết nối mạng từ Moodle.
Mã:
$ sudo setsebool -P httpd_can_network_connect on

Bước 11 - Hoàn tất cài đặt Moodle​

Mở URL https://moodle.example.com trong trình duyệt của bạn và bạn sẽ thấy màn hình chào mừng sau.



Nhấn nút Tiếp tục để tiếp tục. Tiếp theo, trình cài đặt sẽ kiểm tra các yêu cầu hệ thống.



Nếu mọi thứ đều ổn, hãy cuộn xuống và nhấp vào nút Tiếp tục để tiếp tục cài đặt tệp và thiết lập cơ sở dữ liệu.



Nhấp vào nút Tiếp tục sau khi quá trình cài đặt hoàn tất. Tiếp theo, tạo tài khoản quản trị viên bằng cách điền thông tin tài khoản theo yêu cầu.



Sau khi hoàn tất, hãy cuộn xuống trang và nhấp vào Cập nhật hồ sơ để tiếp tục.



Tiếp theo, bạn sẽ được yêu cầu cấu hình cài đặt trang chủ của Moodle.



Cấu hình theo yêu cầu và nhấp vào Lưu thay đổi để tiếp tục đến bảng điều khiển Moodle. Tiếp theo, nhấp vào liên kết Bỏ qua ở cuối nếu bạn không muốn đăng ký trang web Moodle của mình với công ty.



Bây giờ, bạn có thể bắt đầu sử dụng nền tảng học tập.

Kết luận​

Như vậy là kết thúc hướng dẫn cài đặt nền tảng học tập Moodle trên máy chủ Rocky Linux 8. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên