Moodle是一个流行的开源学习管理系统(LMS),被全球教育机构广泛用于创建在线课程、管理内容和促进协作学习。在Ubuntu上运行Moodle是一种常见选择,因为Ubuntu具有稳定性、安全性以及对广泛软件包的支持。安装过程涉及Apache或Nginx作为Web服务器、MySQL或PostgreSQL作为数据库、PHP作为脚本语言,这些在Ubuntu上都有很好的支持。
本教程将介绍如何在Ubuntu 24.04服务器上安装Moodle。我们将使用LAMP Stack(Linux、Apache、MariaDB和PHP)安装Moodle,然后通过UFW防火墙和Certbot + Let’s Encrypt的HTTPS来保护Moodle。
前提条件
在开始之前,请确保具备以下条件:
- 一台Ubuntu 24.04服务器
- 一个具有管理员权限的非non-root用户
- 一个指向服务器IP地址的域名
- UFW防火墙已启用并运行
安装依赖
Moodle是用PHP编写的开源学习平台。要安装Moodle,需要Apache/Nginx、MySQL/MariaDB/PostgreSQL和PHP。本节将在Ubuntu上安装LAMP Stack。
首先,运行以下命令更新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

使用以下命令检查MariaDB数据库服务器状态,可以看到MariaDB服务器正在运行:
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

最后,使用以下命令检查PHP版本和已启用的扩展:
php -v
php -m
可以看到Ubuntu服务器上安装了PHP 8.3。

配置MariaDB服务器
安装依赖后,需要将默认的MariaDB存储引擎更改为‘InnoDB’,这是Moodle所要求的。通过编辑MariaDB服务器配置来完成此操作,然后使用mariadb_secure_installation工具保护MariaDB服务器。
使用vim编辑器打开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用户远程认证时输入Y
- 默认MariaDB服务器安装包含test数据库并允许匿名用户访问,这两项都输入Y以删除
- 最后输入Y确认重新加载表权限
创建数据库和用户
配置完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 Stack。接下来下载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
下载完成后,使用tar命令解压,Moodle源代码将在/var/www/moodle目录中:
tar xvf moodle-latest-404.tgz
执行以下命令创建新的数据目录/var/www/moodledata,将Moodle目录的所有权更改为www-data用户,并确保Moodle目录和数据目录可被www-data用户写入:
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
插入以下配置,请将域名更改为你自己的信息:
DocumentRoot /var/www/moodle/ ServerName moodle.howtoforge.local ServerAdmin admin@example.com Options +FollowSymlinks AllowOverride All Require all granted ErrorLog /var/log/apache2/moodle_error.log CustomLog /var/log/apache2/moodle_access.log combined
保存文件并退出编辑器。
执行以下命令启用moodle.conf文件并验证Apache语法,如果语法正确将显示Syntax is OK:
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和Let’s Encrypt为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 kyrie@howtoforge.local -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。你已在Ubuntu上使用LAMP Stack(Linux、Apache、MariaDB和PHP)安装了Moodle 40.4,并通过UFW防火墙和Certbot + Let’s Encrypt的HTTPS保护了Moodle。