Moodle 是学习管理系统(LMS)的开源解决方案。它是一个面向教育目的的平台,可用于创建在线课程、管理在线学校、管理内容以及提供协作学习。Moodle 主要使用 PHP 编写,以 MySQL/MariaDB 作为数据库,可以在任何操作系统上运行。你可以选择 Apache 或 Nginx 来运行 Moodle 安装。

在本指南中,你将学习如何在 Debian 12 服务器上安装 Moodle 学习管理系统。你将使用 LAMP 技术栈(Linux、Apache、MariaDB 和 PHP)运行 Moodle,通过 UFW(简单防火墙)保护 Debian 服务器,然后通过 Certbot 和 Let's Encrypt 为 Moodle 配置 HTTPS 安全保护。

前提条件

在开始之前,请确保你具备以下条件:

  • 一台 Debian 12 服务器
  • 一个具有管理员权限的非 root 用户
  • 一个指向服务器 IP 地址的域名

安装依赖项

Moodle LMS 使用 PHP 和 MySQL 开发,因此你必须在系统上安装这些软件包。在本例中,你将使用 LAMP 技术栈(Linux、Apache、MariaDB 和 PHP)运行 Moodle。现在,你将在 Debian 服务器上安装 LAMP。

在安装任何软件包之前,运行以下命令更新 Debian 软件包索引。

sudo apt update

Debian 12服务器安装Moodle LMS教程

现在使用以下命令安装 LAMP 技术栈(Linux、Apache、MariaDB 和 PHP)依赖项。输入 Y 继续安装。

sudo apt install apache2 mariadb-server php-cli php-intl php-xmlrpc php-soap php-mysql php-zip php-gd php-tidy php-mbstring php-curl php-xml php-pear php-bcmath libapache2-mod-php

Debian 12服务器安装Moodle LMS教程

安装完成后,检查 apache2 服务以确保该服务正在运行。

sudo systemctl is-enabled apache2
sudo systemctl status apache2

你可以看到 Apache Web 服务器正在运行且已启用。

Debian 12服务器安装Moodle LMS教程

现在执行以下命令检查 mariadb 服务。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

在下面的输出中,你可以看到 MariaDB 服务器正在运行。

Debian 12服务器安装Moodle LMS教程

最后,使用以下命令检查 PHP 版本并列出已启用的模块。

php -v
php -m

你将看到 PHP 8.2 已安装,并启用了 curlexifdate 等默认模块。

Debian 12服务器安装Moodle LMS教程

安装 UFW(简单防火墙)

LAMP 技术栈安装完成后,接下来安装 UFW(简单防火墙)来保护服务器。然后开放 SSH、HTTP 和 HTTPS 协议的端口,最后启动并启用 UFW。

执行以下 apt 命令安装 UFW。

sudo apt install ufw

Debian 12服务器安装Moodle LMS教程

UFW 安装完成后,运行以下 ufw 命令开放 OpenSSH、HTTP(80)和 HTTPS(443)端口。你将看到类似 Rules updated 的输出。

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

现在运行以下命令在 Debian 机器上启动并启用 UFW。在提示时输入 y 确认继续。你将看到 Firewall is active and enabled on system startup 的输出。

sudo ufw enable

Debian 12服务器安装Moodle LMS教程

最后,使用以下命令检查 UFW 状态。你将看到 UFW 处于 active 状态,OpenSSH 和端口 80443 均为 ALLOWED

sudo ufw status

Debian 12服务器安装Moodle LMS教程

配置 MariaDB 服务器

在安装 Moodle 之前,你需要将默认存储引擎更改为 innodb,并将 Barracuda 设置为默认格式。之后,你还需要使用 mariadb-secure-installation 工具来安全配置 MariaDB 服务器并设置 root 密码。

使用 nano 编辑器打开 MariaDB 服务器默认配置文件 /etc/mysql/mariadb.conf.d/50-server.cnf

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

插入以下配置以启用 Barracuda 格式并将默认存储引擎设置为 InnoDB

innodb_file_format = Barracuda
default_storage_engine = innodb
innodb_large_prefix = 1
innodb_file_per_table = 1

保存文件并退出编辑器。

现在运行以下 systemctl 命令重启 MariaDB 服务器并应用更改。

sudo systemctl restart mariadb

之后,执行以下 mariadb-secure-installation 命令来安全配置 MariaDB 服务器安装。

sudo mariadb-secure-installation

你将被要求进行以下 MariaDB 服务器配置:

  • 当询问 root 密码时按 Enter 键(你将在之后配置)
  • 当询问是否切换到 unix_socket 认证时输入 n
  • 输入 Y 设置 MariaDB root 密码,然后输入并重复你的新密码
  • 输入 Y 从 MariaDB 中删除匿名用户
  • 再次输入 Y 禁止 root 用户的远程登录
  • 输入 Y 删除默认数据库 test 及其权限
  • 输入 Y 重新加载表权限并应用更改

完成后,进入下一步创建新的数据库和用户。

为 Moodle 创建数据库和用户

MariaDB 服务器配置完成后,接下来创建 Moodle 使用的新数据库和用户。你将使用 mariadb 客户端登录 MariaDB 并创建新的数据库和用户。

使用以下 mariadb 命令登录 MariaDB 服务器。在提示时输入你的 MariaDB root 密码。

sudo mariadb -u root -p

运行以下查询语句创建新数据库和用户 moodle,密码为 MoodlePassw0rd。请务必将以下数据库凭据更改为你自己的信息。

CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON moodle.* TO 'moodle'@'localhost' IDENTIFIED BY "MoodlePassw0rd";
FLUSH PRIVILEGES;

Debian 12服务器安装Moodle LMS教程

现在运行以下查询语句检查用户 moodle。确保用户 moodle 可以访问数据库 moodle

SHOW GRANTS FOR moodle@localhost;

最后,输入 QUIT 退出 MariaDB 服务器。

Debian 12服务器安装Moodle LMS教程

配置 PHP

现在你已经配置了 MariaDB 服务器并创建了新的数据库用户,接下来配置 php.ini 文件并更改 Moodle 需要的一些默认配置。

使用 nano 编辑器打开 php.ini 文件。

sudo nano /etc/php/8.2/apache2/php.ini

将默认 PHP 配置更改为以下内容。你可以根据服务器内存相应调整 memory_limit 的值。

memory_limit = 256M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam
max_input_vars = 5000

完成后,保存文件并退出编辑器。

最后,运行以下 systemctl 命令重启 apache2 Web 服务器并应用新的 PHP 配置。

sudo systemctl restart apache2

下载 Moodle 源代码

PHP 配置完成后,你就可以下载 Moodle 源代码了,然后设置安装目录和 Moodle 的数据目录。在本例中,你将 Moodle 安装目录设置为 /var/www/moodle,数据目录设置为 /var/www/moodledata

进入 /var/www 目录,并使用以下 wget 命令下载 Moodle 源代码。

cd /var/www
sudo wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.tgz

下载完成后,运行以下 tar 命令解压 Moodle 源代码,并将解压后的目录重命名为 moodle。这样,你的 Moodle 安装将位于 /var/www/moodle 目录中。

tar -xf moodle-latest-405.tgz

接下来,创建新目录 /var/www/moodledata,用作 Moodle 安装的数据目录。

mkdir -p /var/www/moodledata

最后,运行以下命令将 /var/www/moodle/var/www/moodledata 目录的所有权更改为 www-data 用户。然后确保 www-data 用户可以在这些目录中读取、写入和执行文件。

sudo chown -R www-data:www-data /var/www/moodle /var/www/moodledata
sudo chmod u+rwx /var/www/moodle /var/www/moodledata

Debian 12服务器安装Moodle LMS教程

设置 Apache 虚拟主机

Moodle 下载完成后,下一步是为 Moodle 创建新的 Apache 虚拟主机文件。请确保你有一个已解析/指向服务器 IP 地址的域名。

使用 nano 编辑器创建新的虚拟主机配置文件 /etc/apache2/sites-available/moodle.conf

sudo nano /etc/apache2/sites-available/moodle.conf

插入以下配置来设置 Moodle 的虚拟主机文件。确保将 ServerName 参数更改为你的域名。

<VirtualHost *:80>
    DocumentRoot /var/www/moodle/
    ServerName moodle.howtoforge.local
    ServerAdmin admin@example.com

    <Directory /var/www/moodle/>
        Options +FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/apache2/moodle_error.log
    CustomLog /var/log/apache2/moodle_access.log combined
</VirtualHost>

保存文件并退出编辑器。

现在运行以下 a2enmod 命令激活 rewrite 模块,然后运行 a2ensite 命令激活 moodle.conf 虚拟主机。

sudo a2enmod rewrite
sudo a2ensite moodle.conf

接下来,运行以下 apachectl 命令验证 Apache 配置。如果 Apache 配置正确,你将看到 Syntax is OK 的输出。

sudo apachectl configtest

Debian 12服务器安装Moodle LMS教程

最后,运行以下 systemctl 命令重启 Apache Web 服务器并应用更改。

sudo systemctl restart apache2

使用 HTTPS 保护 Moodle

此时,你的 Moodle 安装已准备就绪。在继续之前,你将通过 Certbot 和 Let's Encrypt 为 Moodle 配置 HTTPS 安全保护。当你在公共服务器上安装 Moodle 时需要执行此步骤。如果你是在本地开发环境中,可以跳过此步骤或通过自签名证书实现 HTTPS。

使用以下 apt 命令安装 certbotpython3-certbot-apache 插件。输入 Y 确认安装。

sudo apt install certbot python3-certbot-apache

安装完成后,执行以下 certbot 命令为 Moodle 生成 SSL 证书。确保将以下域名和邮箱地址更改为你自己的域名。

sudo certbot --apache --agree-tos --no-eff-email -m admin@example.com -d moodle.howtoforge.local

完成后,你的 SSL 证书将保存在 /etc/letsencrypt/live/domain.com 目录中,你的 Moodle 安装将在 HTTPS 下运行。

安装 Moodle

打开浏览器并访问 Moodle 安装的域名,例如 https://moodle.howtoforge.local/,你将看到 Moodle 安装向导。

选择 Moodle 的默认语言,然后点击 Next

Debian 12服务器安装Moodle LMS教程

输入你的域名和 Moodle 数据目录 /var/www/moodledata

Debian 12服务器安装Moodle LMS教程

选择 MariaDB 作为 Moodle 的默认数据库。

Debian 12服务器安装Moodle LMS教程

输入你的 MariaDB 数据库详情,如数据库名、用户名和密码。

Debian 12服务器安装Moodle LMS教程

在版权声明页面点击 Continue

Debian 12服务器安装Moodle LMS教程

在"服务器检查"部分,确保你的 Debian 服务器满足 Moodle 的要求。每个项目的状态应为 OK

Debian 12服务器安装Moodle LMS教程

现在你将看到 Moodle 的安装过程如下:

Debian 12服务器安装Moodle LMS教程

安装完成后,输入你的管理员详情(用户名、邮箱和密码)。

Debian 12服务器安装Moodle LMS教程

现在输入你的 Moodle 站点信息。

Debian 12服务器安装Moodle LMS教程

最后,你将看到以下 Moodle 管理仪表盘。

Debian 12服务器安装Moodle LMS教程

总结

恭喜!你已在 Debian 12 服务器上完成了 Moodle 学习管理系统(LMS)的安装。Moodle 现已在 LAMP 技术栈(Linux、Apache、MariaDB 和 PHP)的支持下运行,并通过 UFW(简单防火墙)以及 Certbot 和 Let's Encrypt 的 HTTPS 得到了安全保护。接下来,你可以为 Moodle 应用新主题、安装新插件来扩展功能,或者学习 Moodle 用户指南来管理你的 Moodle 安装。