Cách cài đặt Moodle 3.2 trên CentOS 7

theanh

Administrator
Nhân viên
Moodle là phần mềm eLearning nguồn mở được viết bằng PHP. Phần mềm này được sử dụng cho giáo dục từ xa, các dự án e-learning và học tập kết hợp. Moodle là từ viết tắt của 'Modular-object-oriented dynamic learning environment', được Martin Dougiamas phát triển và phát hành theo giấy phép GPL để giúp các nhà giáo dục và giáo viên tạo các khóa học trực tuyến tập trung vào tương tác và nội dung được xây dựng theo nhóm.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách cài đặt phiên bản Moodle ổn định mới nhất hiện tại là 'moodle 3.2'. Moodle sẽ chạy trên máy chủ web Nginx, sử dụng máy chủ cơ sở dữ liệu MariaDB và sử dụng PHP-FPM7.0. Đối với hệ điều hành, chúng ta sẽ sử dụng CentOS 7.

Điều kiện tiên quyết
  • Máy chủ CentOS 7
  • Quyền root
Những việc chúng ta sẽ làm:
  1. Cài đặt Nginx
  2. Cài đặt và cấu hình PHP-FPM
  3. Cài đặt và cấu hình MariaDB
  4. Tải xuống và cấu hình Moodle
  5. Cấu hình SSL và Virtual Host
  6. Cấu hình SELinux và Firewalld
  7. Cài đặt Moodle
  8. Kiểm tra

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

Trong bước này, chúng ta sẽ cài đặt Nginx từ kho lưu trữ epel. Nginx không có sẵn trên kho lưu trữ Centos theo mặc định, vì vậy chúng ta cần thêm kho lưu trữ mới 'epel-repository' để cài đặt Nginx.

Cài đặt epel-repository bằng lệnh yum.
Mã:
yum -y install epel-release
Tiếp theo, cài đặt Nginx từ epel-repository.
Mã:
yum -y install nginx
Khi quá trình cài đặt hoàn tất, hãy khởi động Nginx và cho phép nó tự động khởi động khi khởi động.
Mã:
systemctl start nginx
systemctl enable nginx
Nginx đã được cài đặt và đang chạy trên cổng 80. Kiểm tra cổng mở trên hệ thống bằng netstat.
Mã:
netstat -plntu


Nếu bạn chưa cài đặt lệnh netstat, thì bạn có thể cài đặt gói net-tools để có được lệnh đó.
Mã:
yum -y install net-tools

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

Moodle 3.2 hỗ trợ phiên bản PHP 7 mới, vì vậy chúng tôi sẽ sử dụng PHP 7.0. PHP-FPM 7.0 không có sẵn trong kho lưu trữ CentOS mặc định. Có một kho lưu trữ của bên thứ ba từ 'webtatic' dành cho PHP7 mà tôi sẽ sử dụng ở đây.

Thêm kho lưu trữ webtatic mới vào hệ thống bằng lệnh rpm.
Mã:
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Tiếp theo, cài đặt PHP-FPM 7.0 với tất cả các tiện ích mở rộng và gói cần thiết của Moodle.
Mã:
yum install -y graphviz aspell php70w-fpm php70w-cli php70w-pspell php70w-curl php70w-gd php70w-intl php70w-mysql php70w-xml php70w-xmlrpc php70w-ldap php70w-zip php70w-json php70w-opcache php70w-readline php70w-mbstring php70w-soap
Khi quá trình cài đặt hoàn tất, hãy chỉnh sửa tệp cấu hình PHP php.ini bằng vim.
Mã:
vim /etc/php.ini
Bỏ chú thích dòng cgi.fix_pathinfo và đổi giá trị thành 0.
Mã:
cgi.fix_pathinfo=0
Lưu tệp php.ini và thoát khỏi vim.

Đi tới thư mục cấu hình php-fpm và chỉnh sửa tệp cấu hình php-fpm www.conf.
Mã:
cd /etc/php-fpm.d/
vim www.conf
Thay đổi các dòng user và group thành 'nginx' để máy chủ web chạy dưới user và group 'nginx'.
Mã:
user = nginx
group = nginx
Thay vì sử dụng cổng máy chủ, chúng ta sẽ sử dụng tệp socket cho php-fpm. Thay đổi giá trị của dòng listen thành '/run/php-fpm/php-fpm.sock'.
Mã:
listen = /run/php-fpm/php-fpm.sock
Tiếp theo, bỏ ghi 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ã:
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Cấu hình phần mở rộng tệp mà PHP sẽ phân tích cú pháp.

Chỉ cho phép các tệp .php.
Mã:
security.limit_extensions = .php
Bỏ ghi chú ở các dòng biến môi trường PHP-FPM bên dưới.
Mã:
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Lưu tệp và thoát khỏi trình soạn thảo.

Bây giờ chúng ta cần tạo một thư mục mới cho đường dẫn phiên php. Tạo thư mục mới và thay đổi chủ sở hữu của thư mục thành người dùng và nhóm 'nginx'.
Mã:
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
Thay đổi chủ sở hữu của thư mục tệp socket php-fpm thành người dùng nginx.
Mã:
chown -R nginx:nginx /run/php-fpm/
Cấu hình PHP-FPM đã hoàn tất. Khởi động PHP-FPM và thêm nó để tự động khởi động khi khởi động bằng hai lệnh systemctl sau.
Mã:
systemctl start php-fpm
systemctl enable php-fpm
PHP-FPM sẽ chạy dưới tệp socket, hãy kiểm tra để đảm bảo PHP-FPM đang chạy với netstat một lần nữa.
Mã:
netstat -lx | grep php-fpm.sock

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

Tôi sẽ sử dụng MariaDB làm máy chủ cơ sở dữ liệu cho hướng dẫn này. Tôi sẽ cài đặt mariadb-server từ kho lưu trữ Centos rồi cấu hình mật khẩu gốc MariaDB và thêm cơ sở dữ liệu và người dùng mới cho Moodle.

Cài đặt mariadb-server bằng lệnh yum bên dưới.
Mã:
yum -y install mariadb-server mariadb
Khi quá trình cài đặt hoàn tất, hãy chỉnh sửa tệp cấu hình my.cnf.
Mã:
vim /etc/my.cnf
Ở cuối phần '[mysqld]', hãy dán cấu hình bên dưới.
Mã:
default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda
Lưu và thoát, sau đó khởi động MariaDB và cho phép nó khởi động khi khởi động.
Mã:
systemctl start mariadb
systemctl enable mariadb
MariaDB đã được cài đặt và hiện đang chạy trên cổng 3306, nhưng vẫn chưa có mật khẩu gốc, vì vậy chúng ta cần cấu hình nó. Sử dụng lệnh bên dưới để đặt mật khẩu gốc MySQL mới.
Mã:
mysql_secure_installation
Bạn sẽ được yêu cầu nhập mật khẩu gốc MySQL mới.
Mã:
Đặt mật khẩu gốc? [Y/n] Y
Mật khẩu mới:
Nhập lại mật khẩu mới:
 
Xóa người dùng ẩn danh? [Y/n] Y
Không cho phép đăng nhập gốc từ xa? [Y/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 đó? [Y/n] Y
Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y


Cấu hình MariaDB đã hoàn tất.

Tiếp theo, kết nối với shell MySQL bằng lệnh 'mysql', sau đó tạo một cơ sở dữ liệu và người dùng mới cho Moodle, cấp quyền cho cơ sở dữ liệu cho người dùng mới.

Kết nối với shell mysql.
Mã:
mysql -u root -p
NHẬP MẬT KHẨU CỦA BẠN
Chạy các truy vấn mysql bên dưới để tạo một người dùng mới 'moodleuser' với mật khẩu 'hakaselabs123' và một cơ sở dữ liệu mới 'moodledb', sau đó cấp tất cả các quyền của cơ sở dữ liệu cho người dùng mới. Vui lòng chọn một mật khẩu khác và an toàn trên máy chủ của bạn!
Mã:
CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
FLUSH PRIVILEGES;


Người dùng và cơ sở dữ liệu cho Moodle đã được tạo.

Bước 4 - Tải xuống và cấu hình Moodle​

Chúng tôi sẽ tải xuống Moodle trực tiếp từ kho lưu trữ GitHub, vì vậy chúng tôi cần lệnh git trên hệ thống. Cài đặt git với yum như hiển thị bên dưới.
Mã:
yum -y install git
Tiếp theo, tạo thư mục gốc web mới '/var/www/'.
Mã:
mkdir -p /var/www/
Đi đến thư mục '/var/www/' và sao chép Moodle từ kho lưu trữ GitHub.
Mã:
cd /var/www/
git clone https://github.com/moodle/moodle.git
Sau đó, đi đến thư mục 'moodle' và kiểm tra các nhánh Moodle khả dụng.
Mã:
cd moodle/
git branch -a
Liệt kê các nhánh ổn định của Moodle, chọn nhánh ổn định mới nhất và kiểm tra phiên bản nhánh ổn định mới nhất.
Mã:
git branch --track MOODLE_32_STABLE orogin/MOODLE_32_STABLE
git checkout MOODLE_32_STABLE
Bây giờ bạn sẽ ở nhánh ổn định mới nhất của Moodle, bạn có thể kiểm tra điều đó bằng lệnh git bên dưới.
Mã:
git status
Bạn sẽ thấy kết quả bên dưới.
Mã:
# Trên nhánh MOODLE_32_STABLE
không có gì để cam kết, thư mục làm việc sạch sẽ


Bây giờ hãy tạo một thư mục mới 'moodledata' và đảm bảo rằng chủ sở hữu của thư mục là người dùng và nhóm 'nginx'.
Mã:
mkdir -p /var/moodledata
chown -R nginx:nginx /var/moodledata
chmod 777 /var/moodledata
Thay đổi chủ sở hữu của thư mục moodle thành người dùng 'nginx'.
Mã:
chown -R nginx:nginx /var/www/moodle
chmod 755 /var/www/moodle
Moodle đã được tải xuống.

Bước 5 - Cấu hình SSL và Virtual Host​

Chúng tôi sẽ chạy Moodle trên máy chủ web nginx với kết nối HTTPS an toàn. Khi bạn đang ở trên máy chủ trực tiếp, thì bạn có thể sử dụng tệp chứng chỉ của riêng mình hoặc sử dụng chứng chỉ miễn phí từ let's encrypt. Tôi ở đây trên máy tính cục bộ của mình, vì vậy tôi chỉ có thể tự tạo tệp chứng chỉ tự ký mới.

Tạo thư mục SSL và tạo các tệp chứng chỉ mới bằng lệnh openssl bên dưới.
Mã:
mkdir -p /etc/nginx/ssl/
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/moodle.crt -keyout /etc/nginx/ssl/moodle.key
Thay đổi quyền của khóa riêng tư.
Mã:
chmod 600 /etc/nginx/ssl/moodle.key


Tiếp theo, hãy đến thư mục cấu hình nginx bằng lệnh cd và tạo một tệp máy chủ ảo mới cho moodle trong thư mục 'conf.d'.
Mã:
cd /etc/nginx/
vim conf.d/moodle.conf
Dán máy chủ ảo nginx moodle bên dưới.
Mã:
# Trình xử lý ngược dòng PHP
upstream php-handler {
 server unix:/run/php-fpm/php-fpm.sock;
}
 
# Nginx chuyển hướng HTTP sang HTTPS - moodle.hakase-labs.com
máy chủ {
 lắng nghe 80;
 tên máy chủ moodle.hakase-labs.com;
 # thực thi https
 trả về 301 https://$server_name$request_uri;
}
 
# Cấu hình HTTPS
máy chủ {
 tên máy chủ moodle.hakase-labs.com;
 
 lắng nghe *:443 ssl http2;
 lắng nghe [::]:443 ssl http2;
 
 # Cấu hình SSL 
 ssl bật;
 ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES 128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA -AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128 -GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers bật;
 ssl_session_cache chia sẻ:SSL:10m;
 add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
 add_header X-Frame-Options DENY;
 add_header X-Content-Type-Options nosniff;
 ssl_session_tickets tắt;
 #ssl_stapling bật;
 #ssl_stapling_verify bật;
 resolver_timeout 5 giây;
 ssl_certificate /etc/nginx/ssl/moodle.crt;
 ssl_certificate_key /etc/nginx/ssl/moodle.key;
 
 # Thư mục dữ liệu gốc Moodle
 root /var/www/moodle;
 viết lại ^/(.*\.php)(/)(.*)$ /$1?file=/$3 cuối cùng;
 
 vị trí ^~ / {
 try_files $uri $uri/ /index.php?q=$request_uri;
 index index.php index.html index.htm;
 
 location ~ \.php$ {
 include fastcgi.conf;
 fastcgi_pass php-handler;
 }
 }
}
Lưu tệp cấu hình và thoát khỏi vim.

Kiểm tra cấu hình Nginx và đảm bảo không có lỗi, sau đó khởi động lại Nginx.
Mã:
nginx -t
systemctl restart nginx
Chứng chỉ SSL và cấu hình máy chủ ảo mới cho moodle đã hoàn tất.


Bước 6 - Cấu hình SELinux và Firewalld​

Trong bước này, chúng ta sẽ cấu hình SELinux và Firewalld. Nếu SELinux của bạn đã tắt và bạn không muốn sử dụng nó, thì bạn có thể bỏ qua bước này và bắt đầu cấu hình Firewalld. Kiểm tra trạng thái SELinux của bạn và đảm bảo rằng firewalld đã được cài đặt.

Kiểm tra trạng thái SELinux bằng lệnh bên dưới.
Mã:
sestatus


SELinux được bật ở chế độ 'Enforcing'.

Để cấu hình SELinux, chúng ta cần cài đặt các công cụ quản lý SELinux trên hệ thống.

Cài đặt 'policycoreutils-python' bằng yum.
Mã:
yum -y install policycoreutils-python
Bây giờ hãy thay đổi các tệp ngữ cảnh SELinux và cài đặt thư mục cho thư mục gốc web moodle và thư mục dữ liệu moodle bằng lệnh semanage bên dưới.
Mã:
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
restorecon -Rv '/var/www/moodle/'
 
semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata(/.*)?'
restorecon -Rv '/var/moodledata/'
Cấu hình SELinux cho moodle đã hoàn tất, bây giờ chúng ta phải cấu hình Firewalld.

Cài đặt các gói firewalld nếu bạn chưa có.
Mã:
yum -y install firewalld
Khởi động firewalld và tự động thêm firewalld để bắt đầu khi khởi động.
Mã:
systemctl start firewalld
systemctl enable firewalld
Tiếp theo, mở các cổng cho HTTP, HTTPS và SSH bằng lệnh firewall-cmd bên dưới.
Mã:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh
Tải lại firewalld và kiểm tra HTTP và HTTPS có trong danh sách dịch vụ hay không.
Mã:
firewall-cmd --reload
firewall-cmd --list-all


Hoàn tất cấu hình firewalld.

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

Chuẩn bị cài đặt Moodle đã hoàn tất. Bây giờ chúng ta có thể cài đặt Moodle bằng cách truy cập tên miền của máy chủ ảo Moodle. Trong hướng dẫn này, tên miền tôi sử dụng là 'moodle.hakase-labs.com'.

Mở trình duyệt web của bạn và nhập URL 'moodle.hakase-labs.com' vào thanh địa chỉ.

Bạn sẽ thấy trang cài đặt Moodle, chọn ngôn ngữ của bạn, trong trường hợp của tôi là 'Tiếng Anh', và nhấp vào 'Tiếp theo'.



Bây giờ hãy nhập dữ liệu cấu hình cho moodle: địa chỉ web 'moodle.hakase-labs.com', thư mục gốc web moodle '/var/www/moodle', thư mục moodledata '/var/moodledata' và nhấp vào 'Tiếp theo' để tiếp tục.



Đối với trình điều khiển cơ sở dữ liệu, hãy chọn 'MySQL' như bên dưới và nhấp vào 'Tiếp theo'.



Cấu hình cho cơ sở dữ liệu themoodle.
  • Máy chủ cơ sở dữ liệu: localhost
  • Tên cơ sở dữ liệu: moodledb
  • Người dùng cơ sở dữ liệu: moodleuser
  • Mật khẩu cơ sở dữ liệu: hakaselabs123
  • Tiền tố bảng: moodle_
  • Cổng cơ sở dữ liệu: 3306
  • Ổ cắm Unix: /var/lib/mysql/mysql.sock
Sau đó nhấp vào 'Tiếp theo'.



Đối với thông báo bản quyền, hãy nhấp vào nút 'Tiếp tục'.



Moodle sẽ kiểm tra hệ thống và tất cả các yêu cầu về tiện ích mở rộng php, đảm bảo rằng tất cả các kết quả là 'OK', sau đó nhấp vào 'Tiếp tục' để cài đặt.



Quá trình cài đặt Moodle bắt đầu. Đảm bảo tất cả kết quả đều là 'Thành công', sau đó nhấp vào 'Tiếp tục' để cấu hình Moodle.



Cấu hình quản trị người dùng. Nhập thông tin của bạn như tên, email, mật khẩu, v.v. và nhấp vào 'Cập nhật hồ sơ'.



Cấu hình Trang chủ Moodle, nhập thông tin moodle và nhấp vào 'Lưu thay đổi'.



Và bạn sẽ được chuyển hướng đến bảng điều khiển quản trị người dùng Moodle.



Quá trình cài đặt Moodle đã hoàn tất mà không có lỗi.

Bước 8 - Kiểm tra​

Truy cập trang chủ Moodle - moodle.hakase-labs.com.



Trang Đăng nhập Moodle - moodle.hakase-labs.com/login/.



Bảng điều khiển người dùng Moodle.



Quản trị trang web Moodle để cấu hình hệ thống Moodle.



Người dùng Moodle tùy chọn.



Cài đặt Moodle với máy chủ web Nginx, php-fpm và MariaDB trên hệ thống CentOS 7 đã thành công.

Tham khảo​

 
Back
Bên trên