如何在 Ubuntu 24.04 服务器上安装 Moodle LMS
本教程适用于这些操作系统版本
- Ubuntu 24.04(高贵食蚁兽)
- Ubuntu 22.04(果酱水母)
- Ubuntu 20.04(焦窝)
- Ubuntu 16.04(Xenial Xerus)
在此页面上
- 先决条件
- 安装依赖项
- 配置 MariaDB 服务器
- 创建数据库和用户
- 配置 PHP
- 下载Moodle源代码
- 设置 Apache 虚拟主机
- 使用 UFW 保护 Moodle
- 使用 HTTPS 保护 Moodle
- 安装Moodle
- 结论
Moodle 是一个流行的开源平台,世界各地的教育机构都使用它来创建在线课程、管理内容和促进协作学习。由于 Ubuntu 的稳定性、安全性以及对广泛软件包的支持,在 Ubuntu 上运行 Moodle 是一种常见的选择。该过程涉及安装必要的组件,例如作为 Web 服务器的 Apache 或 Nginx、作为数据库的 MySQL 或 PostgreSQL、以及作为脚本语言的 PHP,所有这些都在 Ubuntu 上得到了良好的支持。这种设置允许机构创建一个强大的、可扩展的、可定制的在线学习环境,可以根据特定的教育需求进行定制。
在本教程中,我们将向您展示如何在 Ubuntu 24.04 服务器上安装 Moodle。您将使用 LAMP Stack 安装 Moodle,然后通过 Certbot 和 Letsencrypt 使用 UFW 和 HTTPS 保护 Moodle。
先决条件
在开始之前,请确保您具备以下条件:
- Ubuntu 24.04 服务器。
- 具有管理员权限的非 root 用户。
- 域名指向服务器IP地址。
- UFW 防火墙已启动并正在运行。
安装依赖项
Moodle 是一个用 PHP 编写的开源学习平台。要安装 Moodle,您需要 Apache/Nginx、MySQL/MariaDB/PostgreSQL 和 PHP。在本部分中,您将在 Ubuntu 上安装 LAMP Stack(Linux、Apache、MariaDB 和 PHP),并在其上设置 Moodle。
首先,运行以下命令并更新您的 Ubuntu 软件包索引。
sudo apt update
现在执行以下命令来安装 LAMP Stack(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
安装完成后,使用以下命令检查Apache服务状态。
sudo systemctl is-enabled apache2
sudo systemctl status apache2
在下面,您可以看到 Apache Web 服务器正在运行。
使用以下命令检查 MariaDB 数据库服务器。您将看到 MariaDB 服务器正在运行。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
最后,使用以下命令检查 PHP 版本和启用的扩展:
php -v
php -m
您将看到 PHP 8.3 已安装在您的 Ubuntu 服务器上。
配置 MariaDB 服务器
安装依赖项后,您需要将默认的 MariaDB 存储引擎更改为“InnoDB”,这是 Moodle 所需的。这可以通过编辑 MariaDB 服务器配置来完成。然后,您还可以使用“mariadb_secure_installation”实用程序来保护 MariaDB 服务器部署。
使用“nano”编辑器打开 MariaDB 服务器配置文件“/etc/mysql/mariadb.conf.d/50-server.cnf”。
sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
在“[mysqld]”部分下添加以下配置。这会将默认存储引擎更改为“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 root 用户并保护您的部署。
sudo mariadb_secure_installation
在此过程中,您将被询问以下问题:
- 对于没有 root 密码的默认 MariaDB 服务器安装,请在询问密码时按 ENTER。
- 默认情况下,MariaDB root 用户的本地身份验证是安全的,当要求将身份验证方法更改为“unix_socket”时,输入“n”。
- 输入“Y”创建新的 MariaDB root 密码。然后,输入 MariaDB root 用户的强密码并重复。
- 当要求禁用 MariaDB root 用户的远程身份验证时,输入“Y”表示同意。
- 默认的 MariaDB 服务器安装附带数据库“test”,并允许匿名用户访问它。对于这两个设置都输入“Y”,以删除默认数据库“test”并删除匿名权限。
- 最后,输入“Y”以确认重新加载表权限。
创建数据库和用户
现在您已经配置了 MariaDB 服务器,让我们通过“mariadb”客户端创建一个新的数据库和用户。
使用下面的“mariadb”客户端命令登录到 MariaDB 服务器。出现提示时输入您的 MariaDB root 密码。
sudo mariadb -u root -p
现在运行以下查询来创建新数据库“moodle”、用户“moodle”,并确保使用您的信息更改密码。
CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON moodle.* TO 'moodle'@'localhost' IDENTIFIED BY "MoodlePassw0rd";
FLUSH PRIVILEGES;
QUIT
配置 PHP
在本节中,您将编辑 PHP 配置“php.ini”并更改 Moodle 所需的一些默认值。
使用“nano”编辑器打开 PHP 配置“/etc/php/8.3/apache2/php.ini”。
sudo nano /etc/php/8.3/apache2/php.ini
使用以下内容更改默认配置。请务必根据您的信息调整“memory_limit”和“date_timezone”选项。
memory_limit = 256M
upload_max_filesize = 60M
max_execution_time = 300
date.timezone = Europe/Amsterdam
max_input_vars = 5000
完成后,保存文件并退出。
最后,运行以下命令重新启动 Apache Web 服务器并将更改应用到 PHP。
sudo systemctl restart apache2
下载Moodle源代码
至此,您已经安装并配置了 LAMP 堆栈。让我们下载Moodle源代码并配置Moodle安装目录。
转至“/var/www”目录并使用“wget”命令下载 Moodle 源代码。请务必访问 Moodle 下载页面以获取最新版本的链接。在这种情况下,您将下载最新的稳定版 Moodle 40.4。
cd /var/www
wget https://download.moodle.org/download.php/direct/stable404/moodle-latest-404.tgz
下载 Moodle 后,使用下面的“tar”命令将其解压。 Moodle 源代码位于“/var/www/moodle” 目录中。
tar xvf moodle-latest-404.tgz
最后,执行以下命令创建一个新的数据目录“/var/www/moodledata”,将Moodle目录的所有权更改为“www-data”用户,然后确保用户“www-data”可以写入 Moodle 和数据目录。
sudo mkdir -p /var/www/moodledata
sudo chown -R www-data:www-data /var/www/moodle /var/www/moodledata
sudo chmod u+rwx /var/www/moodle /var/www/moodledata
设置 Apache 虚拟主机
下载 Moodle 后,您将创建一个新的 Apache 虚拟主机文件来运行 Moodle。因此,请确保您已准备好域名并解析为您的 Ubuntu 服务器 IP 地址。
首先,运行下面的“a2enmod”命令来激活“rewrite”模块。
sudo a2enmod rewrite
使用以下“nano”编辑器创建新的 Apache 虚拟主机文件“/etc/apache2/sites-available/moodle.conf”。
sudo nano /etc/apache2/sites-available/moodle.conf
插入以下配置并确保使用您的信息更改域名。
<VirtualHost *:80>
DocumentRoot /var/www/moodle/
ServerName moodle.howtoforge.local
ServerAdmin [email
<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>
完成后保存文件并退出编辑器。
现在执行以下命令以启用“moodle.conf”文件并验证您的 Apache 语法。如果您的 Apache 语法正确,您将看到输出“语法正确”。
sudo a2ensite moodle.conf
sudo apachectl configtest
最后,运行下面的“systemctl”命令来重新启动 Apache 并应用您的更改。
sudo systemctl restart apache2
使用 UFW 保护 Moodle
在此步骤中,您将通过 UFW(简单防火墙)打开 HTTP 和 HTTPS 协议。开始之前请确保 UFW 正在运行。
运行以下命令以在 UFW 上启用“Apache Full”配置文件。这样,HTTP 和 HTTPS 流量将被允许。
sudo ufw allow 'Apache Full'
现在使用以下内容检查 UFW 上启用的规则列表。您将看到“Apache Full”配置文件已启用。
sudo ufw status
使用 HTTPS 保护 Moodle
除了防火墙之外,您还将生成 SSL/TLS 证书并使用 HTTPS 保护 Moodle。在本部分中,您将通过 Certbot 和 Letsencrypt 为 Moodle 实现 HTTPS。如果您在本地安装 Moodle,请跳过此步骤。
使用以下命令安装“certbot”和“python3-certbot-apache”软件包。
sudo apt install certbot python3-certbot-apache -y
安装完成后,执行下面的“certbot”命令为Moodle生成SSL/TLS证书。请务必使用您的信息更改域名和电子邮件地址。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email -d moodle.howtoforge.local
该过程完成后,您的 SSL 证书将在“/etc/letsencrypt/live/domain.com”目录中可用,并且您的 Moodle 安装应自动使用 HTTPS 进行保护。
安装Moodle
访问您的 Moodle 域名,例如 https://moodle.howtoforge.local/,您将看到安装向导。
选择您的默认语言,然后单击下一步。
输入 Moodle 的数据目录“/var/www/moodledata”。
选择 MariaDB 作为数据库驱动程序。
输入您的 MariaDB 数据库和用户的详细信息。
单击继续以确认版权声明。
在服务器检查部分,确保您的环境已准备就绪。
现在 Moodle 安装将被处理。
安装完成后,输入新的 Moodle 管理员用户、电子邮件和密码。
现在您将看到如下所示的 Moodle 仪表板:
结论
恭喜!您已在 Ubuntu 24.04 服务器上完成了 Moodle 的安装。您已使用 LAMP Stack(Linux、Apache、MariaDB 和 PHP)在 Ubuntu 上安装了 Moodle 40.4,并通过 Certbot 和 Letsencrypt 使用 UFW(简单防火墙)和 HTTPS 保护 Moodle。