Cách cài đặt Moodle với Nginx và Free Let's Encrypt SSL trên Ubuntu 22.04

theanh

Administrator
Nhân viên
Moodle là Hệ thống quản lý học tập và CMS miễn phí và mã nguồn mở được viết bằng PHP. Nó cho phép gia sư và giảng viên tạo khóa học cho học viên của mình và cung cấp giáo dục từ xa và các chương trình học trực tuyến khác dễ tiếp cận hơn. Moodle cung cấp bảng điều khiển đơn giản, thân thiện với người dùng và tùy chỉnh giúp người dùng truy cập các khóa học hiện tại, trước đây hoặc tương lai và xem lại công việc đang chờ xử lý. Nó được thiết kế cho giáo viên và nhà giáo dục muốn cung cấp giáo dục am hiểu công nghệ.

Hướng dẫn này sẽ chỉ cho bạn cách cài đặt Moodle với Nginx và Let's Encrypt SSL trên Ubuntu 22.04.

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

  • Máy chủ chạy Ubuntu 22.04.
  • Tên miền hợp lệ được trỏ bằng IP máy chủ của bạn.
  • Mật khẩu gốc được cấu hình trên máy chủ.

Bắt đầu​

Trước tiên, bạn phải cập nhật các gói hệ thống của mình lên phiên bản mới nhất. Bạn có thể cập nhật tất cả chúng bằng cách chạy lệnh sau:
Mã:
apt-get update -y
Sau khi máy chủ của bạn được cập nhật, bạn có thể tiến hành bước tiếp theo.

Cài đặt Nginx, MariaDB và PHP​

Trước khi bắt đầu, bạn sẽ cần cài đặt Apache, MariaDB, PHP và các thư viện PHP khác vào hệ thống của mình. Trước tiên, hãy cài đặt máy chủ Apache và MariaDB bằng lệnh sau:
Mã:
apt-get install nginx mariadb-server -y
Theo mặc định, Ubuntu 22.04 đi kèm với phiên bản PHP 8.1 và Moodle không hỗ trợ phiên bản PHP này. Vì vậy, bạn sẽ cần cài đặt PHP 7.4 trên máy chủ của mình.

Trước tiên, hãy cài đặt tất cả các phần phụ thuộc cần thiết bằng lệnh sau:
Mã:
apt install software-properties-common ca-certificates lsb-release apt-transport-https -y
Tiếp theo, hãy thêm kho lưu trữ PHP vào máy chủ của bạn bằng lệnh sau:
Mã:
add-apt-repository ppa:ondrej/php
Tiếp theo, hãy cập nhật kho lưu trữ bằng lệnh sau:
Mã:
apt update
Sau khi kho lưu trữ được cập nhật, hãy cài đặt PHP với các phần mở rộng cần thiết khác bằng lệnh sau:
Mã:
apt install php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-soap php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip unzip git curl -y
Sau khi tất cả các gói được cài đặt, hãy chỉnh sửa tệp php.ini và thay đổi một số cài đặt:
Mã:
nano /etc/php/7.4/fpm/php.ini
Thay đổi các dòng sau:
Mã:
memory_limit = 256Mmax_input_vars = 6000cgi.fix_pathinfo = 0upload_max_filesize = 100Mmax_execution_time = 360date.timezone = UTC
Lưu và đóng tệp, sau đó khởi động lại dịch vụ PHP-FPM để áp dụng các thay đổi:
Mã:
systemctl restart php7.4-fpm
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Tạo cơ sở dữ liệu cho Moodle​

Moodle sử dụng MySQL hoặc MariaDB làm cơ sở dữ liệu phụ trợ, vì vậy bạn sẽ cần tạo cơ sở dữ liệu và người dùng cho Moodle.

Đầu tiên, kết nối với shell MySQL bằng lệnh sau:
Mã:
mysql
Sau khi đăng nhập, hãy tạo cơ sở dữ liệu và người dùng bằng lệnh sau:
Mã:
CREATE DATABASE moodledb;
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'password';
Tiếp theo, cấp tất cả các quyền cho cơ sở dữ liệu Moodle bằng lệnh sau:
Mã:
GRANT ALL ON moodledb.* TO 'moodle'@'localhost' WITH GRANT OPTION;
Tiếp theo, xóa các quyền và thoát khỏi MySQL bằng lệnh sau:
Mã:
FLUSH PRIVILEGES;
EXIT;
Tiếp theo, chỉnh sửa tệp cấu hình mặc định của MariaDB và xác định innodb_file_format:
Mã:
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Thêm các dòng sau vào phần [mysqld]:
Mã:
[mysqld]innodb_file_format = Barracudainnodb_file_per_table = 1innodb_large_prefix = ON
Lưu tệp, sau đó khởi động lại dịch vụ MariaDB để áp dụng các thay đổi:
Mã:
systemctl restart mariadb

Cài đặt Moodle trên Ubuntu 22.04​

Trước tiên, hãy thay đổi thư mục thành thư mục gốc Apache và tải xuống phiên bản Moodle mới nhất bằng lệnh sau:
Mã:
cd /var/www/html
git clone -b MOODLE_400_STABLE git://git.moodle.org/moodle.git moodle
Tiếp theo, thiết lập quyền và quyền sở hữu thích hợp cho Moodle:
Mã:
mkdir -p /var/www/html/moodledata
chown -R www-data:www-data /var/www/html/moodle
chmod -R 755 /var/www/html/*
chown www-data:www-data /var/www/html/moodledata
Sau khi hoàn tất, bạn có thể tiến hành bước tiếp theo.

Cấu hình Nginx cho Moodle​

Tiếp theo, bạn sẽ cần tạo tệp cấu hình máy chủ ảo Nginx để lưu trữ Moodle:
Mã:
nano /etc/nginx/conf.d/moodle.conf
Thêm các dòng sau:
Mã:
server { listen 80; root /var/www/html/moodle; index index.php index.html index.htm; server_name moodle.example.com; client_max_body_size 100M; autoindex off; location / { try_files $uri $uri/ =404; } location /dataroot/ { internal; alias /var/www/html/moodledata/; } location ~ [^/].php(/|$) { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}
Lưu và đóng tệp, sau đó xác minh Nginx xem có lỗi cú pháp nào không bằng lệnh sau:
Mã:
nginx -t
Bạn sẽ nhận được kết quả sau:
Mã:
nginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: kiểm tra tệp cấu hình /etc/nginx/nginx.conf thành công
Cuối cùng, khởi động lại dịch vụ Nginx để áp dụng các thay đổi:
Mã:
systemctl restart nginx
Bạn cũng có thể kiểm tra trạng thái của dịch vụ Nginx bằng lệnh sau:
Mã:
systemctl status nginx
Bạn sẽ thấy kết quả sau:
Mã:
? nginx.service - Máy chủ web hiệu suất cao và máy chủ proxy ngược Đã tải: đã tải (/lib/systemd/system/nginx.service; đã bật; cài đặt trước của nhà cung cấp: đã bật) Đang hoạt động: đang hoạt động (đang chạy) từ Thứ Hai 2022-07-18 07:08:50 UTC; 26 giây trước Tài liệu: man:nginx(8) Quy trình: 51379 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Quy trình: 51382 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) PID chính: 51383 (nginx) Nhiệm vụ: 3 (giới hạn: 4579) Bộ nhớ: 3,6M CPU: 64ms CGroup: /system.slice/nginx.service ??51383 "nginx: tiến trình chính /usr/sbin/nginx -g daemon on; master_process on;" ??51384 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""18/07 07:08:50 ubuntu2204 systemd[1]: Bắt đầu Một máy chủ web hiệu suất cao và một máy chủ proxy ngược...18/07 07:08:50 ubuntu2204 systemd[1]: Bắt đầu Một máy chủ web hiệu suất cao và một máy chủ proxy ngược.
Tại thời điểm này, Nginx được cấu hình để lưu trữ Moodle. Bây giờ bạn có thể tiến hành bước tiếp theo.

Truy cập Giao diện web Moodle​

Bây giờ, hãy mở trình duyệt web của bạn và truy cập giao diện web Moodle bằng URL http://moodle.example.com. Bạn sẽ thấy trang cài đặt Moodle:



Chọn ngôn ngữ của bạn và nhấp vào Tiếp theo. Bạn sẽ thấy trang sau:



Cung cấp địa chỉ web Moodle, đường dẫn thư mục, đường dẫn thư mục dữ liệu và nhấp vào Tiếp theo. Bạn sẽ thấy trang sau:



Chọn loại trình điều khiển cơ sở dữ liệu của bạn và nhấp vào Tiếp theo. Bạn sẽ thấy trang sau:



Cung cấp máy chủ cơ sở dữ liệu, tên cơ sở dữ liệu, tên người dùng, mật khẩu và nhấp vào Tiếp theo. Bạn sẽ thấy trang sau:



Nhấp vào Tiếp tục để xác nhận tất cả các điều kiện. Bạn sẽ thấy trang sau:



Đảm bảo tất cả các tiện ích mở rộng PHP bắt buộc đã được cài đặt, sau đó nhấp vào Tiếp tục. Bạn sẽ thấy trang sau:



Nhấp vào Tiếp tục. Bạn sẽ thấy trang sau:





Cung cấp tên người dùng, mật khẩu, email, quốc gia, múi giờ của quản trị viên và nhấp vào hồ sơ Cập nhật. Bạn sẽ thấy trang sau:





Cung cấp cài đặt trang chủ của bạn và nhấp vào nút Lưu thay đổi để lưu thay đổi.

Bảo mật Moodle với Let's Encrypt SSL​

Tiếp theo, bạn sẽ cần cài đặt công cụ Certbot để tải xuống Let's Encrypt SSL và cấu hình Nginx để sử dụng SSL này.

Trước tiên, hãy cài đặt Certbot bằng lệnh sau:
Mã:
apt-get install python3-certbot-nginx -y
Sau khi cài đặt, hãy chạy lệnh sau để tải xuống tất cả SSL và cấu hình Nginx để sử dụng:
Mã:
certbot --nginx -d moodle.example.com
Bạn sẽ được yêu cầu cung cấp địa chỉ email hợp lệ và chấp nhận điều khoản dịch vụ như hiển thị bên dưới:
Mã:
Lưu nhật ký gỡ lỗi vào /var/log/letsencrypt/letsencrypt.logCác plugin đã chọn: Authenticator nginx, Installer nginxNhập địa chỉ email (dùng để gia hạn khẩn cấp và thông báo bảo mật) (Nhập 'c' đểhủy): [emailprotected]- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Vui lòng đọc Điều khoản dịch vụ tạihttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Bạn phảiđồng ý để đăng ký với máy chủ ACME tạihttps://acme-v02.api.letsencrypt.org/directory- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Bạn có sẵn lòng chia sẻ địa chỉ email của mình với Electronic Frontier Foundation, đối tác sáng lập của dự án Let's Encrypt và tổ chức phi lợi nhuận phát triển Certbot không? Chúng tôi muốn gửi cho bạn email về công việc của chúng tôimã hóa web, tin tức EFF, các chiến dịch và các cách hỗ trợ tự do kỹ thuật số.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -(C)ó/(K)o: CNhận chứng chỉ mớiThực hiện các thử thách sau:Thử thách http-01 cho moodle.example.comĐang chờ xác minh...Dọn dẹp các thử tháchTriển khai chứng chỉ tới VirtualHost /etc/nginx/conf.d/moodle.conf
Tiếp theo, chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không như hiển thị bên dưới:
Mã:
Vui lòng chọn có chuyển hướng lưu lượng HTTP sang HTTPS hay không, xóa quyền truy cập HTTP.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -1: Không chuyển hướng - Không thực hiện thêm bất kỳ thay đổi nào đối với cấu hình máy chủ web.2: Chuyển hướng - Chuyển hướng tất cả các yêu cầu tới quyền truy cập HTTPS an toàn. Chọn tùy chọn này chocác trang web mới hoặc nếu bạn tin tưởng rằng trang web của mình hoạt động trên HTTPS. Bạn có thể hoàn tácthay đổi này bằng cách chỉnh sửa cấu hình máy chủ web của mình.- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Chọn số thích hợp [1-2] rồi [enter] (nhấn 'c' để hủy): 2
Nhập 2 và nhấn Enter để tiếp tục. Bạn sẽ thấy đầu ra sau:
Mã:
Đang chuyển hướng tất cả lưu lượng truy cập trên cổng 80 sang ssl trong /etc/nginx/conf.d/moodle.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Xin chúc mừng! Bạn đã bật thành công https://moodle.example.comBạn nên kiểm tra cấu hình của mình tại:https://www.ssllabs.com/ssltest/analyze.html?d=moodle.example.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LƯU Ý QUAN TRỌNG: - Xin chúc mừng! Chứng chỉ và chuỗi của bạn đã được lưu tại: /etc/letsencrypt/live/moodle.example.com/fullchain.pem Tệp khóa của bạn đã được lưu tại: /etc/letsencrypt/live/moodle.example.com/privkey.pem Chứng chỉ của bạn sẽ hết hạn vào ngày 19-10-2022. Để có phiên bản mới hoặc đã chỉnh sửa của chứng chỉ này trong tương lai, chỉ cần chạy lại certbot với tùy chọn "certonly". Để gia hạn không tương tác *tất cả* chứng chỉ của bạn, hãy chạy "certbot renew" - Thông tin đăng nhập tài khoản của bạn đã được lưu trong thư mục cấu hình Certbot tại /etc/letsencrypt. Bây giờ bạn nên sao lưu an toàn thư mục này. Thư mục cấu hình này cũng sẽ chứa các chứng chỉ và khóa riêng do Certbot thu thập, do đó, việc sao lưu thường xuyên thư mục này là lý tưởng. - Nếu bạn thích Certbot, vui lòng cân nhắc hỗ trợ công việc của chúng tôi bằng cách: Quyên góp cho ISRG / Let's Encrypt: https://letsencrypt.org/donate Quyên góp cho EFF: https://eff.org/donate-le - Chúng tôi không thể đăng ký cho bạn vào danh sách gửi thư EFF vì địa chỉ email của bạn có vẻ không hợp lệ. Bạn có thể thử lại sau bằng cách truy cập https://act.eff.org.
Bây giờ bạn có thể truy cập trang web Moodle bằng URL http://moodle.example.com

Kết luận​

Xin chúc mừng! bạn đã cài đặt thành công Moodle với Nginx và Let's Encrypt SSL trên Ubuntu 22.04. Bây giờ bạn có thể khám phá các tính năng của Moodle và dễ dàng tạo Hệ thống quản lý học tập trực tuyến của riêng bạn. Hãy thoải mái hỏi tôi nếu bạn có bất kỳ câu hỏi nào
 
Back
Bên trên