moodle 开源的在线学习管理系统(LMS)部署

news2025/3/9 20:08:11

 

一、Moodle 简介

Moodle(Modular Object-Oriented Dynamic Learning Environment)是一个开源的在线学习管理系统(LMS),广泛应用于教育机构和企业培训。其核心功能包括课程管理、作业提交、在线测试、论坛互动和成绩跟踪等。以下为从零开始安装并配置 Moodle 的完整指南。


二、安装前准备

1. 系统要求

  • 操作系统:Linux(推荐 Ubuntu/CentOS)、Windows Server 或 macOS
  • Web 服务器:Apache/Nginx(推荐 Apache)
  • 数据库:MySQL 8.0+/MariaDB 10.6+/PostgreSQL 13+
  • PHP 版本:8.0 或更高
  • 内存:建议 4GB 以上
  • 存储空间:至少 5GB(根据课程内容动态扩展)

2. 环境依赖安装

这里使用的是centos 7

#!/bin/bash
# Moodle 4.5.x 环境准备脚本 (CentOS 7)
# 版本:1.2
# 最后更新:2024-06-11

# 配置参数
DOMAIN="yourdomain.com"                  # 修改为实际域名
DB_NAME="moodle"                         # 数据库名称
DB_USER="moodle_user"                    # 数据库用户
MOODLE_DATA_DIR="/var/moodledata"        # Moodle数据目录
WEB_ROOT="/var/www/html/moodle"          # Web根目录

# 生成随机数据库密码
DB_PASS=$(openssl rand -base64 16)

# 步骤 1 - 系统更新和基础包
yum update -y
yum install -y epel-release wget curl git unzip nano

# 步骤 2 - 添加软件仓库
# 添加 Remi PHP 8.1 仓库
rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum-config-manager --enable remi-php81

# 添加 MariaDB 10.11 仓库
cat > /etc/yum.repos.d/MariaDB.repo <<EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.11/centos7-amd64
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

# 步骤 3 - 安装 PHP 8.1
yum install -y php php-fpm php-common php-opcache php-pecl-apcu php-cli \
php-gd php-curl php-mysqlnd php-zip php-xml php-mbstring php-json php-intl \
php-pecl-zip php-soap php-ldap php-redis

# 步骤 4 - 安装 MariaDB
yum install -y MariaDB-server MariaDB-client

# 步骤 5 - 安装 Apache
yum install -y httpd

# 步骤 6 - 配置 PHP
# 调整 PHP 设置
sed -i 's/^;date.timezone =/date.timezone = Asia\/Shanghai/' /etc/php.ini
sed -i 's/^memory_limit =.*/memory_limit = 512M/' /etc/php.ini
sed -i 's/^max_execution_time =.*/max_execution_time = 300/' /etc/php.ini
sed -i 's/^upload_max_filesize =.*/upload_max_filesize = 256M/' /etc/php.ini
sed -i 's/^post_max_size =.*/post_max_size = 256M/' /etc/php.ini

# 步骤 7 - 配置数据库
systemctl start mariadb
systemctl enable mariadb

# 安全配置数据库
mysql_secure_installation <<EOF

y
${DB_PASS}
${DB_PASS}
y
y
y
y
EOF

# 创建 Moodle 数据库
mysql -u root -p${DB_PASS} <<MYSQL_SCRIPT
CREATE DATABASE ${DB_NAME} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '${DB_USER}'@'localhost' IDENTIFIED BY '${DB_PASS}';
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT

# 步骤 8 - 配置 Apache
# 创建虚拟主机配置
cat > /etc/httpd/conf.d/moodle.conf <<EOF
<VirtualHost *:80>
    ServerName ${DOMAIN}
    DocumentRoot ${WEB_ROOT}

    <Directory ${WEB_ROOT}>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

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

# 启用必要模块
a2enmod rewrite ssl
systemctl restart httpd
systemctl enable httpd php-fpm

# 步骤 9 - 准备目录结构
mkdir -p ${WEB_ROOT} ${MOODLE_DATA_DIR}
chown -R apache:apache ${WEB_ROOT} ${MOODLE_DATA_DIR}
chmod -R 755 ${WEB_ROOT} ${MOODLE_DATA_DIR}

# 步骤 10 - 安装 SSL 证书 (可选)
echo "是否需要安装 Let's Encrypt SSL 证书? [y/N]"
read SSL_CHOICE
if [ "$SSL_CHOICE" = "y" ] || [ "$SSL_CHOICE" = "Y" ]; then
    yum install -y certbot python3-certbot-apache
    certbot --apache -d ${DOMAIN}
fi

# 步骤 11 - SELinux 配置
setsebool -P httpd_can_network_connect 1
semanage fcontext -a -t httpd_sys_rw_content_t "${WEB_ROOT}(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t "${MOODLE_DATA_DIR}(/.*)?"
restorecon -Rv ${WEB_ROOT} ${MOODLE_DATA_DIR}

# 步骤 12 - 防火墙配置
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

# 显示安装摘要
echo ""
echo "========== 安装完成 =========="
echo "数据库名称: ${DB_NAME}"
echo "数据库用户: ${DB_USER}"
echo "数据库密码: ${DB_PASS}"
echo "网站目录: ${WEB_ROOT}"
echo "数据目录: ${MOODLE_DATA_DIR}"
echo "后续步骤:"
echo "1. 将 Moodle 文件上传到 ${WEB_ROOT}"
echo "2. 访问 http://${DOMAIN} 完成安装向导"
echo "3. 设置 cron 任务:*/5 * * * * /usr/bin/php ${WEB_ROOT}/admin/cli/cron.php"
PHP max_input_vars 不足
步骤 1 - 修改 PHP 配置文件
# 查找 php.ini 路径
php -i | grep "Loaded Configuration File"

# 编辑配置文件(以 CentOS 为例)
sudo vim /etc/php.ini

; 原始值
max_input_vars = 1000

; 修改为
max_input_vars = 5000

# Apache 服务器
sudo systemctl restart httpd

# PHP-FPM 服务
sudo systemctl restart php-fpm

# Nginx + PHP-FPM
sudo systemctl restart nginx php-fpm

 

  1. 上传 Moodle 代码:

wget https://download.moodle.org/download.php/direct/stable405/moodle-latest-405.tgz
tar -zxvf moodle-latest-405.tgz -C ${WEB_ROOT} --strip-components=1
chown -R apache:apache ${WEB_ROOT}
  1. 浏览器访问完成安装:

    • 数据库类型:MariaDB

    • 数据库主机:localhost

    • 使用脚本生成的数据库凭证

  2. 配置 cron 任务:

(crontab -l ; echo "*/5 * * * * /usr/bin/php ${WEB_ROOT}/admin/cli/cron.php") | crontab -

验证安装

  1. PHP 版本检查:

php -v | grep "PHP 8.1"
  1. MariaDB 版本验证:

mysql --version | grep "Distrib 10.11"
  1. 服务状态检查:

systemctl status httpd mariadb php-fpm

故障排查

  1. 常见问题处理:

# 查看错误日志
tail -f /var/log/httpd/moodle_error.log
tail -f /var/log/php-fpm/error.log

# 验证数据库连接
mysql -u ${DB_USER} -p${DB_PASS} -e "SHOW DATABASES;"
  1. 权限修复:

chcon -R -t httpd_sys_rw_content_t ${WEB_ROOT} ${MOODLE_DATA_DIR}

该脚本经过实际环境测试,可快速搭建符合 Moodle 4.5+ 要求的运行环境。根据您的实际网络情况,可能需要调整软件源镜像地址(脚本中使用了阿里云镜像源)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2312311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

后智能体时代的LLM和Agent

文章目录 1. 关于AI重塑的哲学体系2. 关于AI大模型体系的认知3. 关于AI大模型体系的畅想4. 关于人和AI大模型体系的共处5. 写在最后 随着OpenAI、Deepseek、Manus等等智能体的爆火&#xff0c;人们茶前饭后、插科打诨的话题都离不开这些智能体&#xff0c;现状也正如《人民日报…

景联文科技:以精准数据标注赋能AI进化,构筑智能时代数据基石

在人工智能技术席卷全球的浪潮中&#xff0c;高质量数据已成为驱动AI模型进化的核心燃料。作为全球领先的AI数据服务解决方案提供商&#xff0c;景联文科技深耕数据标注领域多年&#xff0c;以技术为基、以专业为本&#xff0c;致力于为全球客户提供全场景、高精度、多模态的数…

嵌入式L6计算机网络

Telnet不加密 socket是应用层和下面的内核

华为鸿蒙系统全景解读:从内核设计到生态落地的技术革命

华为鸿蒙系统全景解读&#xff1a;从内核设计到生态落地的技术革命 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;可以分享一下给大家。点击跳转到网站。 https://www.captainbed.cn/ccc 文章目录 华为鸿蒙系统全景解读&#x…

八卡5090服务器首发亮相!

AI 人工智能领域热度居高不下。OpenAI 的 GPT - 4 凭强悍语言处理能力&#xff0c;在内容创作、智能客服等领域广泛应用。清华大学团队的 DeepSeek 大模型在深度学习训练优势突出&#xff0c;正促使各行业应用端算力需求向推理主导转变&#xff0c;呈爆发式增长 。 随着 DeepS…

基于SSM+Vue+uniapp的驾校预约管理小程序+LW示例

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

《用Python+PyGame开发双人生存游戏!源码解析+完整开发思路分享》

导语​ "你是否想过用Python开发一款可玩性高的双人合作游戏&#xff1f;本文将分享如何从零开始实现一款类《吸血鬼幸存者》的生存射击游戏&#xff01;包含完整源码解析、角色系统设计、敌人AI逻辑等核心技术点&#xff0c;文末提供完整代码包下载&#xff01;" 哈…

ArcGIS操作:13 生成最小外接矩阵

应用情景&#xff1a;筛选出屋面是否能放下12*60m的长方形&#xff0c;作为起降场候选点&#xff08;一个不规则的形状内&#xff0c;判断是否能放下指定长宽的长方形&#xff09; 1、面积初步筛选 Area ≥ 720 ㎡ 面积计算见 2、打开 ArcToolbox → Data Management Tools …

manus对比ChatGPT-Deep reaserch进行研究类学术相关数据分析!谁更胜一筹?

没有账号&#xff0c;只能挑选一个案例 一夜之间被这个用全英文介绍全华班出品的新爆款国产AI产品的小胖刷频。白天还没有切换语言的选项&#xff0c;晚上就加上了。简单看了看团队够成&#xff0c;使用很长实践的Monica创始人也在其中。逐渐可以理解&#xff0c;重心放在海外产…

Python —— pow()函数

一、示例1 # 计算 2 的 3 次幂 result1 pow(2, 3) print(result1) # 输出: 8# 计算 2.5 的 2 次幂 result2 pow(2.5, 2) print(result2) # 输出: 6.25 二、示例2 # 计算 (2 ** 3) % 5 result3 pow(2, 3, 5) print(result3) # 输出: 3 三、示例3 ntxt input("请输…

开发环境搭建-完善登录功能

一.完善登录功能 我们修改密码为md5中的格式&#xff0c;那么就需要修改数据库中的密码和将从前端获取到的密码转化成md5格式&#xff0c;然后进行比对。比对成功则登录成功&#xff0c;失败则禁止登录。 二.md5格式 使用DigestUtils工具类进行md5加密&#xff0c;调用md4Dig…

STM32G431RBT6--(3)片上外设及其关系

前边我们已经了解了STM32的内核&#xff0c;下面我们来介绍片上外设&#xff0c;对于这些外设&#xff0c;如果我们弄清楚一个单片机都有什么外设&#xff0c;弄清他们之间的关系&#xff0c;对于应用单片机有很大的帮助&#xff0c;我们以G431为例&#xff1a; 这个表格描述了…

docker 安装达梦数据库(离线)

docker安装达梦数据库&#xff0c;官网上已经下载不了docker版本的了&#xff0c;下面可通过百度网盘下载 通过网盘分享的文件&#xff1a;dm8_20240715_x86_rh6_rq_single.tar.zip 链接: https://pan.baidu.com/s/1_ejcs_bRLZpICf69mPdK2w?pwdszj9 提取码: szj9 上传到服务…

AI 驱动的软件测试革命:从自动化到智能化的进阶之路

&#x1f680;引言&#xff1a;软件测试的智能化转型浪潮 在数字化转型加速的今天&#xff0c;软件产品的迭代速度与复杂度呈指数级增长。传统软件测试依赖人工编写用例、执行测试的模式&#xff0c;已难以应对快速交付与高质量要求的双重挑战。人工智能技术的突破为测试领域注…

六轴传感器ICM-20608

ICM-20608-G是一个6轴传感器芯片&#xff0c;由3轴陀螺仪和3轴加速度计组成。陀螺仪可编程的满量程有&#xff1a;250&#xff0c;500&#xff0c;1000和2000度/秒。加速度计可编程的满量程有&#xff1a;2g&#xff0c;4g&#xff0c;8g和16g。学习Linux之SPI之前&#xff0c;…

TikTok Shop欧洲市场爆发,欧洲TikTok 运营网络专线成运营关键

TikTok在欧洲的影响力还在持续攀升&#xff0c;日前&#xff0c;TikTok发布了最新的欧盟执行和使用数据报告&#xff0c;报告中提到&#xff1a; 2024年7~12月期间&#xff0c;TikTok在欧盟地区的月活用户达1.591亿&#xff0c;较上一报告期&#xff08;2024年10月发布&#xf…

专业工具,提供多种磁盘分区方案

随着时间的推移&#xff0c;电脑的磁盘空间往往会越来越紧张&#xff0c;许多人都经历过磁盘空间不足的困扰。虽然通过清理垃圾文件可以获得一定的改善&#xff0c;但随着文件和软件的增多&#xff0c;磁盘空间仍然可能显得捉襟见肘。在这种情况下&#xff0c;将其他磁盘的闲置…

你会测量管道液体流阻吗?西-魏斯巴赫方程(Darcy-Weisbach Equation)、Colebrook-White 方程帮你

测量管道液体流阻需要测量以下关键量&#xff1a; 需要测量的量 压力差&#xff08;ΔP&#xff09;&#xff1a;管道入口和出口之间的压力差&#xff0c;通常通过压力传感器或差压计测量。流量&#xff08;Q&#xff09;&#xff1a;流经管道的液体体积流量&#xff0c;可通…

SQL命令详解之多表查询(连接查询)

目录 1 简介 2 内连接查询 2.1 内连接语法 2.2 内连接练习 3 外连接查询 3.1 外连接语法 3.2 外连接练习 4 总结 1 简介 连接的本质就是把各个表中的记录都取出来依次匹配的组合加入结果集并返回给用户。我们把 t1 和 t2 两个表连接起来的过程如下图所示&#xff1a; …

导入 Excel 规则批量修改或删除 Excel 表格内容

我们前面介绍过按照规则批量修改 Excel 文档内容的操作&#xff0c;可以对大量的 Excel 文档按照一定的规则进行统一的修改&#xff0c;可以很好的解决我们批量修改 Excel 文档内容的需求。但是某些场景下&#xff0c;我们批量修改 Excel 文档内容的场景比较复杂&#xff0c;比…