[Moodle – LEMP] Hướng dẫn cài đặt Moodle 4.2 trên Ubuntu 22.04
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