如何在 Ubuntu Server 22.04 上安裝 Moodle

介紹

Moodle 是一個免費和開源的在線學習管理系統 (LMS),使教育工作者能夠為教育課程創建一個功能齊全的網站,並提供在線課堂體驗。 本指南解釋瞭如何在服務器上安裝 MoodleUbuntu22.04。

以前的要求

  • 實施一個Ubuntu 22.04服務器。
  • 創建具有 sudo 權限的非 root 用戶
  • 更新服務器。
  • 指向您的服務器的完全限定域名,例如 moodle.googlesyndication.com .

本指南中的代碼示例和配置文件使用 moodle.googlesyndication.com googlesyndication.com 出於示範目的。 您必須將所有實例更改為您的域名。

1.配置防火牆

Moodle 需要 HTTP 和 HTTPS 端口才能工作。

使用簡單防火牆 (UFW) 打開它們。

                      
                        $ sudo ufw allow http
$ sudo ufw allow https

                      
                    

檢查防火牆的狀態。

                      
                        $ sudo ufw status

                      
                    

2.安裝Nginx

Ubuntu 22.04 帶有舊版本的 Nginx。 本文更傾向於使用官方 Nginx 倉庫來安裝最新版本。

安裝 Nginx 安裝所需的依賴項。

                      
                        $ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring -y

                      
                    

從 Nginx 導入簽名密鑰。

                      
                        $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

                      
                    

添加 Nginx 穩定版本的存儲庫。

                      
                        $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

                      
                    

更新系統存儲庫列表。

                      
                        $ sudo apt update

                      
                    

安裝 Nginx 服務器。

                      
                        $ sudo apt install nginx

                      
                    

檢查安裝。

                      
                        $ nginx -v

                      
                    

3.安裝和配置PHP

最新版本的 Moodle (v4.0.2) 需要 PHP 8.0。 添加 Ondrej PHP 存儲庫以添加對 PHP 8.0 的支持。

                      
                        $ sudo add-apt-repository ppa:ondrej/php -y

                      
                    

安裝 PHP 和所需的擴展。

                      
                        $ sudo apt install graphviz aspell ghostscript clamav php8.0-fpm php8.0-cli php8.0-pspell php8.0-curl php8.0-gd php8.0-intl php8.0-mysql php8.0-xml php8.0-xmlrpc php8.0-ldap php8.0-zip php8.0-soap php8.0-mbstring

                      
                    

打開文件 /etc/php/8.0/fpm/pool.d/www.conf .

                      
                        $ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

                      
                    

找出 user=apache group=apache 文件中的行並按如下方式更改它們。

                      
                        ...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx
...

                      
                    

另外,找到線條 listen.owner=www-data listen.group=www-data 在文件中並將它們更改為 nginx .

                      
                        ...
listen.owner = nginx
listen.group = nginx
...

                      
                    

按 CTRL+X,然後按 Y 保存文件。

重新啟動 PHP-FPM 服務。

                      
                        $ sudo systemctl restart php8.0-fpm

                      
                    

4.安裝和配置MySQL

安裝 MySQL 服務器。

                      
                        $ sudo apt install mysql-server

                      
                    

MySQL 8.0.28 及更高版本需要執行以下步驟。 進入 MySQL 外殼。

                      
                        $ sudo mysql

                      
                    

運行以下命令為您的 root 用戶設置密碼。 確保它混合了數字、大寫、小寫和特殊字符。

                      
                        mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourrootpassword';

                      
                    

取出外殼。

                      
                        mysql> exit

                      
                    

運行安全安裝腳本。

                      
                        $ sudo mysql_secure_installation

                      
                    

請回答以下問題以保護 MySQL。

                      
                        Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: (Enter Y)

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: (Enter 2)
Change the password for root ? ((Press y|Y for Yes, any other key for No) : (Enter N)
Remove anonymous users? (Press y|Y for Yes, any other key for No) : (Enter Y)
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : (Enter Y)
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y (Enter Y)
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : (Enter Y)

                      
                    

登錄到 MySQL 外殼。

                      
                        $ sudo mysql -u root -p

                      
                    

為 Moodle 創建一個數據庫。

                      
                        mysql > CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

                      
                    

創建一個 SQL 用戶來訪問數據庫。 代替 yourpassword 使用您選擇的強密碼。

                      
                        mysql > CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'yourpassword';

                      
                    

授予 moodleuser 訪問數據庫。

                      
                        mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO [email protected];

                      
                    

重新加載權限表。

                      
                        mysql > FLUSH PRIVILEGES;

                      
                    

取出外殼。

                      
                        mysql > exit

                      
                    

5. 安裝 Moodle

為 Moodle 創建公共目錄。

                      
                        $ sudo mkdir /var/www/html/moodle -p

                      
                    

授予登錄用戶訪問目錄的權限。

                      
                        $ sudo chown -R $USER:$USER /var/www/html/moodle

                      
                    

切換到公共目錄。

                      
                        $ cd /var/www/html/moodle

                      
                    

克隆 Moodle GitHub 存儲庫。

                      
                        $ git clone https://github.com/moodle/moodle.git .

                      
                    

檢查可用分支的列表。

                      
                        $ git branch -a

                      
                    

目前, MOODLE_400_STABLE 它是可用的最新版本。 創建一個名為的本地分支 MOODLE_400_STABLE 並將其配置為跟踪遠程分支。

                      
                        $ git branch --track MOODLE_400_STABLE origin/MOODLE_400_STABLE

                      
                    

切換到新創建的本地分支。

                      
                        $ git checkout MOODLE_400_STABLE

                      
                    

為 Moodle 創建一個數據目錄。

                      
                        $ sudo mkdir /var/moodledata

                      
                    

授予對 Moodle 數據目錄的適當權限。

                      
                        $ sudo chown -R nginx /var/moodledata
$ sudo chmod -R 775 /var/moodledata

                      
                    

授予對 Moodle 目錄的寫入權限。

                      
                        $ sudo chmod -R 755 /var/www/html/moodle

                      
                    

6.配置Moodle

切換到 Moodle 目錄。

                      
                        $ cd /var/www/html/moodle

                      
                    

使用示例配置文件創建 Moodle 配置文件。

                      
                        $ cp config-dist.php config.php

                      
                    

打開 config.php 要編輯的文件。

                      
                        $ nano config.php

                      
                    

找到數據庫部分,然後配置數據庫以存儲 Moodle 數據,如下所示。

                      
                        $CFG->dbtype="mysqli";    // 'pgsql', 'mariadb', 'mysqli', 'auroramysql', 'sqlsrv' or 'oci'
$CFG->dblibrary = 'native';     // 'native' only at the moment
$CFG->dbhost="localhost";  // eg 'localhost' or 'db.isp.com' or IP
$CFG->dbname="moodledb";     // database name, eg moodle
$CFG->dbuser="moodleuser";   // your database username
$CFG->dbpass="yourpassword";   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

                      
                    

此外,配置 Moodle Web URL 和數據目錄的位置。

                      
                        ...
$CFG->wwwroot="https://moodle.googlesyndication.com";
...
$CFG->dataroot="/var/moodledata";

                      
                    

按 CTRL+X,然後按 Y 保存文件。

7. 安裝 SSL

您需要使用 Let's Encrypt API 的 Certbot 工具來安裝 SSL 證書。 最新版本的 Certbot 可通過 Snap 商店獲得。

運行以下命令以確保您擁有最新版本的 snapd .

                      
                        $ sudo snap install core
$ sudo snap refresh core

                      
                    

安裝 Cerbot。

                      
                        $ sudo snap install --classic certbot

                      
                    

為 Certbot 創建一個符號鏈接到 /usr/bin 目錄。

                      
                        $ sudo ln -s /snap/bin/certbot /usr/bin/certbot

                      
                    

頒發 SSL 證書。

                      
                        $ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d moodle.googlesyndication.com

                      
                    

生成一個迪菲-赫爾曼組證書。

                      
                        $ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

                      
                    

打開文件 /etc/letsencrypt/renewal/moodle.googlesyndication.com.conf 編輯

                      
                        $ sudo nano /etc/letsencrypt/renewal/moodle.googlesyndication.com.conf

                      
                    

將以下代碼粘貼到底部。

                      
                        pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

                      
                    

按保存文件控制 + X並進入提示時。

Certbot 的獨立選項使用您的 Web 服務器來創建不適用於 Nginx 的證書。 這pre_hookpost_hook刷新前後執行命令自動關閉和重啟Nginx服務器,無需人工干預。

試運行 SSL 續訂過程以確保其正常工作。

                      
                        $ sudo certbot renew --dry-run

                      
                    

8.配置Nginx

打開文件 nginx.conf 編輯

                      
                        $ sudo nano /etc/nginx/nginx.conf

                      
                    

找到線 include /etc/nginx/conf.d/*.conf; 並粘貼下面的代碼。

                      
                        server_names_hash_bucket_size  64;

                      
                    

按 CTRL+X,然後按 Y 保存文件。

為 Nginx 創建 Moodle 配置文件並打開它進行編輯。

                      
                        $ sudo nano /etc/nginx/conf.d/moodle.conf

                      
                    

將以下代碼粘貼到其中。

                      
                        # Redirect HTTP to HTTPS
server {
    listen 80;  listen [::]:80;
    server_name moodle.googlesyndication.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name moodle.googlesyndication.com;
    root   /var/www/html/moodle;
    index  index.php;

    ssl_certificate     /etc/letsencrypt/live/moodle.googlesyndication.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/moodle.googlesyndication.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/moodle.googlesyndication.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    access_log /var/log/nginx/moodle.access.log main;
    error_log  /var/log/nginx/moodle.error.log;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ ^(.+\.php)(.*)$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_index index.php;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        include /etc/nginx/mime.types;
        include fastcgi_params;
        fastcgi_param  PATH_INFO  $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    # Hide all dot files but allow "Well-Known URIs" as per RFC 5785
    location ~ /\.(?!well-known).* {
        return 404;
    }

    # This should be after the php fpm rule and very close to the last nginx ruleset.
    # Don't allow direct access to various internal files. See MDL-69333
    location ~ (/vendor/|/node_modules/|composer\.json|/readme|/README|readme\.txt|/upgrade\.txt|db/install\.xml|/fixtures/|/behat/|phpunit\.xml|\.lock|environment\.xml) {
        deny all;
        return 404;
    }
}

                      
                    

按 CTRL+X,然後按 Y 保存文件。

檢查 Nginx 配置語法。

                      
                        $ sudo nginx -t

                      
                    

重啟 Nginx 服務。

                      
                        $ sudo systemctl restart nginx

                      
                    

9. Moodle安裝完成

打開網址 https://moodle.googlesyndication.com 在瀏覽器中打開歡迎屏幕。

請按繼續按鈕繼續。 下一頁檢查系統要求。 如果一切順利,請轉到下一個屏幕。

下一頁配置 Moodle 所需的數據庫和文件。 繼續創建您的管理員帳戶並在下一個屏幕上填寫其他詳細信息。

最後一步是設置 Moodle 主頁。 保存您的更改以轉到 Moodle 儀表板。 您可以開始使用該應用程序來創建您的學習平台。

結論

這樣就完成了 Moodle 的安裝。 有關詳細信息,請參閱Moodle 文檔.

文章標題 名稱(可選) 電子郵件(可選) 描述

發送建議

相關文章