如何在 CentOS 8 中使用 Nginx 安装 Moodle 学习平台
Moodle 是世界上最受欢迎的学习管理系统,用于构建强大的在线学习网站。它具有一系列可供您选择的活动和教育工具,支持评估管理并附带自定义证书。它还可以通过强大的视频会议工具与您的学生进行实时交流。此外,它支持移动设备,因此您的学生可以通过他们的移动设备进行学习。
Moodle 服务器要求
- 操作系统:安装了 LEMP 堆栈的 CentOS 8 或 RHEL 8 服务器的最小安装。
- 磁盘空间:Moodle 需要 200MB,5GB 可能是存储内容的实际最小空间。
- 处理器:建议使用 1GHz(最低)、2GHz 双核或更高频率。
- 内存:512MB(最小),建议1GB或更多。大型生产服务器上可能需要 8GB 以上。
在本页
- 为 Moodle 网站创建域名 DNS 记录
- 在CentOS 8服务器中安装Moodle学习平台
- 配置 NGINX 为 Moodle 网站提供服务
- 通过 Web 安装程序完成 Moodle 安装
- 使用 Let’s Encrypt 在 Moodle 站点上启用 HTTPS
为 Moodle 网站创建域名 DNS 记录
1. 首先创建一个子域,用户将使用该子域访问 Moodle 在线学习网站。例如,如果您的域名是 testprojects.me
,您可以创建一个名为 learning.testprojects.me
的子域。
打开域名的高级 DNS 设置并添加 A
记录,如下图所示。
在 CentOS 8 服务器中安装 Moodle
2.在安装Moodle之前,请确保您的服务器上有所需的PHP扩展,您可以运行以下命令来安装它们:
dnf install php-common php-iconv php-curl php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json libpcre3 libpcre3-dev graphviz aspell ghostscript clamav
3. 接下来,为 Moodle 应用程序创建一个数据库,如下所示。
mysql -u root -p
然后创建数据库、数据库用户并创建安全密码以供使用。
MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleadmin'@'localhost' IDENTIFIED BY 'p@zzwd0L2';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit
4. 现在从官方moodle项目网站下载最新版本的Moodle(撰写本文时为3.9),解压存档文件并将其移动到您的 webroot (/var/www/html/
) 目录中,然后设置适当的权限和所有权以允许 Web 服务器访问 Moodle 目录,如下所示。
wget -c https://download.moodle.org/download.php/direct/stable39/moodle-latest-39.tgz
tar -xzvf moodle-latest-39.tgz
mv moodle /var/www/html/
chmod 775 -R /var/www/html/moodle
chown nginx:nginx -R /var/www/html/moodle
5.接下来,创建moodledata目录,该目录是Moodle界面上传或创建的文件的位置,然后分配适当的权限和所有权以允许网络服务器对其进行读写访问:
mkdir -p /var/www/html/moodledata
chmod 770 -R /var/www/html/moodledata
chown :nginx -R /var/www/html/moodledata
6. 接下来,进入 Moodle 安装目录并从示例 config.dist.php< 创建一个
文件,然后打开它进行编辑,为您的 Moodle 平台配置一些关键设置,例如数据库连接参数和站点位置以及在哪里可以找到 mudledata 目录:config.php
文件提供的
cd /var/www/html/moodle/
cp config-dist.php config.php
vim config.php
设置正确的数据库类型、正确的数据库主机、数据库名称以及数据库用户和用户密码。
$CFG->dbtype = 'mariadb'; // 'pgsql', 'mariadb', 'mysqli', '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 = 'moodleadmin'; // your database username
$CFG->dbpass = 'p@zzwd0L2'; // your database password
$CFG->prefix = 'mdl_'; // prefix to use for all table names
7.同时设置用于访问您的Moodle站点的URL,这指定了您的Moodle Web文件所在的wwwroot的位置,并且还有dataroot(moodledata 目录):
$CFG->wwwroot = 'http://learning.testprojects.me';
$CFG->dataroot = '/var/www/html/moodledata';
配置 NGINX 为 Moodle 网站提供服务
8. 在本部分中,您需要配置 NGINX 来为您的 Moodle 应用程序提供服务。您需要在 NGINX 配置中为其创建一个服务器块,如图所示。
vim /etc/nginx/conf.d/moodle.conf
将以下配置复制并粘贴到服务器块配置文件中。将服务器名称替换为上面创建的子域名,fastcgi_pass应指向php-fpm(注意在 CentOS 8 上,PHP-FPM 使用 /etc/nginx/conf.d/ 中定义的地址接受 FastCGI 请求php-fpm.conf 配置)。
server{
listen 80;
server_name learning.testprojects.me;
root /var/www/html/moodle;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^(.+\.php)(.*)$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_index index.php;
fastcgi_pass php-fpm;
include /etc/nginx/mime.types;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
保存文件并关闭它。
9.然后检查NGINX配置是否正确,如果Ok,则重新启动nginx和 php-fpm 服务来应用最近的更改:
nginx -t
systemctl restart nginx
systemctl restart php-fpm
10.如果您的系统上启用了SELinux,请运行以下命令来设置正确的上下文以访问Moodle网络文件服务器:
setsebool -P httpd_can_network_connect on
chcon -R --type httpd_sys_rw_content_t /var/www/html
11.此外,确保防火墙中打开HTTP和HTTPS服务,以允许流量到达NGINX网络服务器:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload
通过 Web 安装程序完成 Moodle 安装
12. 要访问 Moodle 网络安装程序,请打开网络浏览器,然后使用您在上面创建的子域进行导航:
http://learning.testprojects.me
欢迎页面加载后,请仔细阅读条款和条件,然后单击继续。
13.接下来,网络安装程序将检查您的系统是否满足运行指定版本的Moodle站点的要求。您可以向下滚动查看更多信息。
14.安装程序会抱怨HTTPS未启用,暂时忽略该错误(在下一节中,我们将展示如何在 Moodle 上启用 HTTPS),然后单击继续,开始实际安装网络文件。
15.现在安装程序将开始实际安装Moodle文件,如下面的屏幕截图所示。完成后,点击继续。
16. 在下一步中,您需要通过更新用户名、密码、名字和姓氏以及电子邮件地址来更新 Moodle 网站的管理员帐户。然后向下滚动页面并点击更新个人资料。
17. 然后更新 Moodle 网站首页设置。然后向下滚动并点击更新开始使用您的 Moodle 网站。
18.接下来,您需要按照屏幕上的说明注册您的网站。您可以通过单击仪表板转到仪表板。
使用 Let’s Encrypt 在 Moodle 站点上设置 HTTPS
HTTPS 为您的站点添加了第一层安全保障,以确保您的用户和 Moodle 应用程序(尤其是接收消息的 NGINX Web 服务器)之间的安全通信请求并提供响应)。
您可以从商业 CA 购买 SSL/TLS 证书,也可以使用免费且所有现代网络浏览器都能识别的 Let’s Encrypt。在本指南中,我们将使用Let’s Encrypt。
19. Let’s Encrypt 证书部署是使用 certbot 工具自动管理的。您可以使用以下命令安装 certbot 和其他所需的软件包:
dnf install certbot python3-certbot-nginx
20. 然后运行以下命令获取 Let's Encrypt 证书,并让 Certbot 自动编辑您的 NGINX 配置来为其提供服务(它还会配置HTTP 自动重定向到 HTTPS)。
certbot --nginx
21. 然后运行以下命令以启用 Let’s Encrypt SSL/TLS 证书的自动续订:
echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
22. 接下来,更新您的 Moodle 配置以开始使用 HTTPS。
vim /var/www/html/moodle/config.php
将 wwwroot 网址从 HTTP 更改为 HTTPS:
$CFG->wwwroot = 'https://learning.testprojects.me';
23. 最后但并非最不重要的一点是,确认您的 Moodle 网站现在正在 HTTPS 上运行。
现在就是这样!有关运行新学习平台的更多信息和配置选项,请访问 Moodle 网站并阅读官方文档。