Moodle 安裝與配置完整指南

Moodle服務器啓動及外網訪問問題_Apache

概述

Moodle 是一個開源的在線學習管理系統(LMS),廣泛應用於教育機構和企業培訓。本文將詳細介紹如何在 Linux 系統上安裝和配置 Moodle。

系統要求

  • Linux 操作系統(Ubuntu)
  • Apache Web 服務器
  • MySQL/MariaDB 數據庫
  • PHP 7.4 或更高版本

安裝步驟

1. 環境準備

首先更新系統並安裝必要的軟件包:

# 更新系統包
sudo apt-get update
sudo apt-get upgrade -y

# 安裝基礎軟件包
sudo apt-get install php libapache2-mod-php -y

# 安裝 Moodle 所需的 PHP 擴展
sudo apt install -y graphviz aspell ghostscript clamav php7.4 \
php7.4-pspell php7.4-curl php7.4-gd php7.4-intl php7.4-mysql \
php7.4-xml php7.4-xmlrpc php7.4-ldap php7.4-zip php7.4-soap \
php7.4-mbstring

2. 下載 Moodle

訪問 Moodle 安全版本下載頁面,選擇與你的 PHP 版本兼容的 Moodle 版本。

# 創建安裝目錄
sudo mkdir -p /home/moodle_install
cd /home/moodle_install

# 下載 Moodle(請替換為實際下載鏈接)
wget https://download.moodle.org/download.php/direct/stable404/moodle-4.4.4.tgz

# 解壓文件
tar -xzf moodle-*.tgz

3. 數據庫配置

在 MySQL 中創建 Moodle 數據庫和用户:

-- 登錄 MySQL
sudo mysql -u root -p

-- 創建數據庫
CREATE DATABASE moodle CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 創建用户並設置密碼
CREATE USER 'moodleuser'@'%' IDENTIFIED WITH mysql_native_password BY 'test_moodle';

-- 授予權限
GRANT ALL PRIVILEGES ON moodle.* TO 'moodleuser'@'%';

-- 刷新權限
FLUSH PRIVILEGES;

-- 退出 MySQL
EXIT;

4. 部署 Moodle 文件

# 複製 Moodle 文件到 Web 目錄
sudo cp -r moodle/ /var/www/html/

# 設置正確的權限
sudo chown -R www-data:www-data /var/www/html/moodle
sudo chmod -R 755 /var/www/html/moodle

# 創建 Moodle 數據目錄
sudo mkdir /var/moodledata
sudo chown -R www-data:www-data /var/moodledata
sudo chmod -R 755 /var/moodledata

Moodle服務器啓動及外網訪問問題_html_02

5. 通過 Web 界面安裝

現在可以通過瀏覽器訪問 Moodle 安裝界面:

http://你的服務器IP/moodle

按照安裝嚮導完成以下步驟:

  1. 選擇安裝語言
  2. 確認路徑設置(Web 路徑和數據路徑)
  3. 選擇數據庫類型(MySQL)
  4. Moodle服務器啓動及外網訪問問題_html_03

  5. 輸入數據庫連接信息
  6. Moodle服務器啓動及外網訪問問題_#Ubuntu_04

  7. 配置管理員賬户
  8. Moodle服務器啓動及外網訪問問題_Apache_05

  9. 完成安裝
  10. Moodle服務器啓動及外網訪問問題_php_06


  11. Moodle服務器啓動及外網訪問問題_#Moodle_07

配置 Apache

修改默認端口

# 編輯 Apache 端口配置
sudo vi /etc/apache2/ports.conf

將內容修改為:

Listen 10090

配置虛擬主機

# 編輯默認站點配置
sudo vi /etc/apache2/sites-available/000-default.conf

修改為:

<VirtualHost *:10090>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # Moodle 相關配置
    <Directory /var/www/html/moodle>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

重啓 Apache

# 啓用重寫模塊
sudo a2enmod rewrite

# 重啓 Apache 服務
sudo systemctl restart apache2

Nginx 反向代理配置

如果你的前端使用 Nginx,可以添加以下配置:

server {
    listen 443 ssl;
    server_name your-domain.com;
    
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;
    
    # Moodle 代理配置
    location /moodle/ {
        proxy_pass http://192.168.3.220:10090/moodle/;
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        
        # 防止 Moodle 重定向到內網地址
        proxy_redirect http://192.168.3.220:10090/moodle/ /moodle/;
    }
    
    # 其他配置...
}

重啓 Nginx:

sudo systemctl restart nginx

配置 Moodle

編輯 Moodle 配置文件:

sudo vi /var/www/html/moodle/config.php

確保包含以下配置:

<?php
unset($CFG);
global $CFG;
$CFG = new stdClass();

$CFG->dbtype    = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost    = 'localhost';
$CFG->dbname    = 'moodle';
$CFG->dbuser    = 'moodleuser';
$CFG->dbpass    = 'uni_moodle';
$CFG->prefix    = 'mdl_';
$CFG->dboptions = array(
    'dbpersist' => 0,
    'dbport' => '',
    'dbsocket' => '',
    'dbcollation' => 'utf8mb4_unicode_ci',
);

// 網站 URL 配置
$CFG->wwwroot   = 'https://your-domain.com/moodle';

// 如果使用 HTTPS 和反向代理
$CFG->sslproxy = true;

// 數據目錄
$CFG->dataroot  = '/var/moodledata';

$CFG->directorypermissions = 0777;

require_once(__DIR__ . '/lib/setup.php');
?>

安全配置

文件權限檢查

# 檢查 Moodle 文件權限
sudo -u www-data /usr/bin/php /var/www/html/moodle/admin/cli/check_database_schema.php

設置 Cron 任務

Moodle 需要定期執行維護任務:

# 編輯 crontab
sudo crontab -u www-data -e

# 添加以下行(每5分鐘執行一次)
*/5 * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php > /dev/null

故障排除

常見問題

  1. PHP 擴展缺失
  • 確保安裝了所有必需的 PHP 擴展
  • 使用 php -m 檢查已加載的模塊
  1. 權限問題
  • 確保 Web 服務器用户對 Moodle 文件和數據目錄有適當的讀寫權限
  1. 數據庫連接錯誤
  • 檢查數據庫服務是否運行
  • 驗證數據庫用户權限
  1. 重定向循環
  • 檢查 config.php 中的 wwwroot 設置
  • 確認 SSL 代理配置正確

日誌檢查

bash

# Apache 錯誤日誌
sudo tail -f /var/log/apache2/error.log

# Moodle 日誌
sudo tail -f /var/moodledata/log.txt

總結

通過以上步驟,你已經成功安裝並配置了 Moodle 學習管理系統。現在可以通過你的域名訪問 Moodle 並開始創建在線課程了。

記得定期備份 Moodle 數據和數據庫,並保持系統更新以確保安全。