[Moodle – LEMP] Hướng dẫn cài đặt Moodle 4.2 trên Ubuntu 22.04

Tác giả: 07/08/2023

Moodle là một hệ thống quản lý học tập trực tuyến (Learning Management System – LMS) mã nguồn mở. Nó được phát triển bởi Martin Dougiamas và ra mắt lần đầu vào năm 2002. Moodle có khả năng tạo ra môi trường học tập trực tuyến cho giáo viên và học sinh, cung cấp các công cụ để quản lý khóa học, giao tiếp, tương tác và đánh giá học tập.

Moodle cho phép giáo viên tạo nội dung học tập, tạo bài tập, đăng tải tài liệu, tạo diễn đàn và thảo luận trực tuyến, tổ chức bài giảng trực tuyến, và quản lý các thông tin về học sinh và tiến độ học tập. Học sinh có thể truy cập vào các khóa học, tham gia bài giảng, gửi bài tập, tham gia thảo luận và nhận phản hồi từ giáo viên và các bạn cùng khóa.

Moodle được sử dụng rộng rãi ở các tổ chức giáo dục, trường học, trung tâm đào tạo và doanh nghiệp trên toàn thế giới. Với tính năng linh hoạt và khả năng mở rộng, Moodle cho phép tùy chỉnh và mở rộng theo nhu cầu của từng tổ chức.

Hôm nay Nhân Hòa sẽ cùng các bạn cài đặt Moodle 4.2 trên Ubuntu 22.04 dựa theo stack LEMP

  • Ubuntu 22.04
  • Nginx 1.24
  • Mysql 8
  • PHP 8.1

1 – Cài nginx 1.24 mới nhất

apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| tee /etc/apt/sources.list.d/nginx.list
apt update -y
apt install nginx -y
systemctl enable nginx

2 – Cài Php 8.1

add-apt-repository ppa:ondrej/php -y
apt install graphviz aspell ghostscript clamav php8.1-fpm php8.1-common libapache2-mod-php8.1 php8.1-cli   php8.1-mysql php8.1-mbstring  php8.1-gd php8.1-curl php8.1-cli   php8.1-zip php8.1-gd  php8.1-xml php8.1-bcmath  php8.1-pspell  php8.1-gd php8.1-intl   php8.1-xmlrpc php8.1-ldap php8.1-zip php8.1-soap

Thay user và nhóm www-data bằng nginx trong Pool www

vi /etc/php/8.1/fpm/pool.d/www.conf
...

user = nginx
group = nginx
...
listen.owner = nginx
listen.group = nginx

...

Khởi động dịch vụ PHP

systemctl restart php8.1-fpm
systemctl enable php8.1-fpm
systemctl status php8.1-fpm

3 – Cài Mysql8

apt install mysql-server -y

systemctl enable mysql

systemctl start mysql

systemctl status mysql

 

3.1 – Tạo pass root và bảo mật mysql database server

mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'nLn9T3ZaqviyeAzx@';

exit

Bảo mật mysql database server

mysql_secure_installation

Nhập pass root mysql đã tạo và chọn Y 2 N Y Y Y Y

3.2  –  Tạo user và db dùng cho moodle

mysql -u root -p

CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'Passwordmoodle2023@';

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO moodleuser@localhost;

FLUSH PRIVILEGES;

exit

4 – Tạo thư mục chứa dữ liệu mã nguồn moodle

mkdir -p /var/www/html/moodle

cd /var/www/html/moodle

git clone https://github.com/moodle/moodle.git .

Kiểm tra danh sách các chi nhánh có sẵn:

git branch -a

Chọn Moodle 4.2

git branch --track MOODLE_402_STABLE origin/MOODLE_402_STABLE

git checkout MOODLE_402_STABLE

Tạo thư mục dữ liệu cho Moodle

mkdir /var/www/moodledata
chown -R nginx /var/www/moodledata
chmod -R 775 /var/www/moodledata
chmod -R 755 /var/www/html/moodle

Chỉnh sửa file cấu hình kết nối mysql và URL trang chủ

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

Chỉnh sửa các dòng

41 $CFG->dbtype = 'mysqli'; // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', 'sqlsrv' or 'oci'
42 $CFG->dblibrary = 'native'; // 'native' only at the moment
43 $CFG->dbhost = 'localhost'; // eg 'localhost' or 'db.isp.com' or IP
44 $CFG->dbname = 'moodledb'; // database name, eg moodle
45 $CFG->dbuser = 'moodleuser'; // your database username
46 $CFG->dbpass = 'Passwordmoodle2023@'; // your database password
47 $CFG->prefix = 'mdl_'; // prefix to use for all table names
48 $CFG->dboptions = array(

...

148 $CFG->wwwroot = 'http://moodle.itvn.xyz';

...

164 $CFG->dataroot = '/var/www/moodledata';

 

4.1 –  Cấu hình Nginx – Moodle

vi /etc/nginx/nginx.conf

Tìm đoạn /etc/nginx/conf.d/*.conf; and paste đoạn sau vào ngay dưới.

server_names_hash_bucket_size 64;

Tạo config moodle

vi /etc/nginx/conf.d/moodle.conf

Thêm vào đoạn cấu hình http

server {
listen 80; listen [::]:80;
server_name moodle.itvn.xyz;
root /var/www/html/moodle;
index index.php;
access_log /var/log/nginx/moodle.itvn.xyz.access.log main;
error_log /var/log/nginx/moodle.itvn.xyz.error.log;
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/php8.1-fpm.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;
}

# Hide all dot files but allow "Well-Known URIs" as per RFC 5785
location ~ /\.(?!well-known).* {
return 404;
}

# This should be after the php fpm rule and very close to the last nginx ruleset.
# Don't allow direct access to various internal files. See 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;
}

}

4.2 – Cấu hình php.ini của php8.1-fpm

vi /etc/php/8.1/fpm/php.ini

Tăng vài thông số của php các dòng

409 max_execution_time = 300
419 max_input_time = 300
426 max_input_vars = 5000
435 memory_limit = 512M

systemctl restart nginx
systemctl restart php8.1-fpm

5 – Cấu hình qua GUI

Giờ truy cập vào site để cấu hình tiếp
http://moodle.itvn.xyz

Cứ Next và chờ đợi khoảng 10-15p tùy vào cấu hình máy chủ của bạn

Upgrade Moodle database now

Continue

Update Profile Admin

Save changes

Bạn có muốn nhận thông tin từ site và moodle hay không, chọn đăng ký có hoặc skip = bỏ qua nếu trước đó site của bạn đã đăng ký.

Hoàn tất cài đặt

 

Bonus cài đặt https moodle

Cài đặt certbot và module của nginx

apt install certbot python3-certbot-nginx -y
certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email@gmail.com -d moodle.itvn.xyz

Sau khi cài đặt bạn cần chỉnh sửa file config.php

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

Chỉnh sửa dòng

148 $CFG->wwwroot = 'https://moodle.itvn.xyz';

Hẹn gặp lại các bạn tại các bài viết sau tại wiki.nhanhoa.com

Trả lời