24/02/2022

Hướng dẫn cài đặt Moodle trên Ubuntu 16.04 với Nginx

Yêu cầu

Chuẩn bị máy ảo với hệ điều hành CentOS 7 với cấu hình:

  • CPU: 2
  • RAM: 2 GB
  • Disk: 100 GB
  • Network: 1 interface với IP public

Máy ảo có thể đã có dịch vụ BigBlueButton

Cài đặt Moodle

Bước 1: Chuẩn bị

1. Đặt Hostname

hostnamectl set-hostname nhmoodle

2. Cập nhật OS và cài đặt các gói cần thiết

apt-get update -y

Bước 2. Cài đặt dịch vụ NGINX

apt install nginx -y
systemctl stop nginx.service
systemctl start nginx.service
systemctl enable nginx.service

Bước 3. Cài đặt dịch vụ MariaDB

apt install mariadb-server mariadb-client -y
systemctl stop mysql.service
systemctl start mysql.service
systemctl enable mysql.service

3.1. Chỉnh sửa cấu hình mariadb

Thêm các thông số sau trong file : /etc/mysql/mariadb.conf.d/50-server.cnf

[mysqld]
default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda
innodb_large_prefix = 1

Khởi động lại MariaDB

systemctl restart mysql.service

3.2. Tạo mới Database

Thêm Database moodle.

mysql -u root
CREATE DATABASE moodle;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'Cloud365a@123';
GRANT ALL PRIVILEGES ON moodle.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'Cloud365a@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Bước 4. Cài đặt PHP

4.1. Thêm repo để cài đặt PHP

apt-get install software-properties-common
LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php

4.2. Cập nhật và cài đặt PHP

apt update -y
apt install php7.1-fpm php7.1-common php7.1-mbstring php7.1-xmlrpc php7.1-soap php7.1-gd php7.1-xml php7.1-intl php7.1-mysql php7.1-cli php7.1-mcrypt php7.1-ldap php7.1-zip php7.1-curl -y

4.3. Chỉnh sửa các tham số sau tại file /etc/php/7.1/fpm/php.ini

file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 64M
max_execution_time = 360
cgi.fix_pathinfo = 0

Bước 5 . Cài đặt Moodle

5.1. Tải source code Moodle

cd
yum install -y wget
wget https://download.moodle.org/download.php/direct/stable38/moodle-latest-38.tgz
sudo tar -zxvf moodle-latest-38.tgz -C /var/www/html

5.2. Tạo thư mục chúa dữ liệu

mkdir /var/www/html/moodledata
chown -R www-data:www-data /var/www/html/moodle/
chmod -R 755 /var/www/html/moodle/
chown www-data:www-data /var/www/html/moodledata

5.3. Cấu hình file virtualhost nginx :

vi /etc/nginx/sites-available/moodle
server {
    listen 8080;
    listen [::]:80;
    root /var/www/html/moodle;
    index  index.php index.html index.htm;
    server_name  example.com www.example.com;
    location / {
    try_files $uri $uri/ =404;       
    }
  
    location /dataroot/ {
    internal;
    alias /var/www/html/moodledata/;
    }
    location ~ [^/]\.php(/|$) {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

5.4 Kiểm tra và kích hoạt moodle

ln -s /etc/nginx/sites-available/moodle /etc/nginx/sites-enabled/
systemctl restart nginx.service

5.5. Cài đặt Moodle

sudo /usr/bin/php /var/www/html/moodle/admin/cli/install.php \
--chmod=2777 --lang=en \
--wwwroot=http://IP-MAY-AO\
--dataroot=/var/www/html/moodledata \
--dbtype=mariadb --dbhost=localhost --dbname=moodle \
--dbuser=moodleuser --dbpass=Cloud365a@123 \
--fullname=MoodleNH --shortname=MNH \
--adminuser=admin --adminpass=Cloud365a@123 \
--adminemail=cloud365@nhanhoa.com \
--agree-license

Lưu ý:

  • wwwroot: Địa chỉ Moodle, thay IP-MAY-AO bằng IP thực tế.
  • adminuser: Tài khoản quản trị
  • adminpass: Mật khẩu tài khoản quản trị
  • adminemail: Email quản trị
  • Nên xem log thao tác trước khi thực hiện

Lưu ý: Xem log thao tác tại đây

5.6. Sử dụng Moodle

sudo chmod o+r /var/www/html/moodle/config.php

Restart nginx

systemctl restart nginx.service

Truy cập IP với port 8080 : http://IP-MAY-AO:8080

Kiểm tra và dùng Moodle.