Moodle是一种用PHP编写的开源学习管理系统软件,根据GNU通用公共许可证发布。 它用于远程教育,电子学习项目,混合学习和类似目的。 Moodle是由Martin Dougiamas开发的“模块化面向对象动态学习环境”的缩写,帮助教育工作者和教师创建专注于交互和内容协同构建的在线课程。
在本教程中,我将指导您如何使用moodle构建自己的学习中心。 我们将在Nginx Web服务器,MySQL数据库和PHP-FPM7上安装和配置Moodle。 对于操作系统,我们将使用Ubuntu 16.04(Xenial Xerus)。
我们将要做什么:
- 安装Nginx。
- 安装和配置PHP-FPM7.0。
- 安装和配置MySQL
- 下载并配置Moodle。
- 配置SSL和虚拟主机。
- 安装Moodle
- 测试。
前提条件
- Ubuntu 16.04服务器。
- 根权限
第1步 - 安装Nginx
在本教程中,Nginx用作Moodle的Web服务器。 Nginx在Ubuntu存储库中可用,可以轻松地安装apt命令。
apt-get install -y nginx
安装完成后,启动Nginx并使其在启动时自动启动。
systemctl start nginx
systemctl enable nginx
Nginx将在端口80上运行,使用以下命令检查端口是否打开,并确保Nginx使用端口80。
netstat -plntu
第2步 - 安装和配置PHP-FPM7
Moodle基于PHP,所以PHP必须安装在系统上。 我们将使用PHP-FPM,因为我们使用Nginx Web服务器。 对于该版本,我们将使用PHP-FPM7.0,它由“ Moodle 3.2 stable ”版本支持。
使用下面的单个apt命令安装Moodle所需的PHP-FPM7.0和所有扩展。
sudo apt-get install -y graphviz aspell php7.0-fpm php7.0-cli php7.0-pspell php7.0-curl php7.0-gd php7.0-intl php7.0-mysql php7.0-xml php7.0-xmlrpc php7.0-ldap php7.0-zip php7.0-json php7.0-opcache php7.0-readline php7.0-mbstring php7.0-soap
当所有软件包的安装完成后,转到PHP配置目录并编辑php.ini文件。
cd /etc/php/7.0/
用vim编辑fpm php.ini文件。
vim fpm/php.ini
取消注释下面的行,并将值更改为0。
cgi.fix_pathinfo=0
保存php.ini并退出编辑器。
编辑cli php.ini文件。
vim cli/php.ini
取消下面的cgi.fix行的注释,并将该值更改为0。
cgi.fix_pathinfo=0
保存文件并退出vim。
接下来,编辑php-fpm配置文件www.conf。
vim fpm/pool.d/www.conf
取消注释安全限制行,并确保该值为.php。
security.limit_extensions = .php
保存文件并退出vim。
PHP-FPM配置完成。 现在我们可以启动PHP-FPM并将其添加到启动时自动启动。
systemctl enable php7.0-fpm
systemctl start php7.0-fpm
默认情况下,ubuntu上的PHP-FPM将提供Nginx连接的套接字文件,请使用下面的netstat命令确保您的PHP套接字文件的结果。
netstat -lx
第3步 - 安装和配置MySQL
我们将使用MySQL作为Moodle的数据库系统(Moodle支持MySQL和PostgreSQL)。 我们将使用Ubuntu存储库中最新的MySQL版本,即现在是MySQL 5.7。
使用apt命令从Ubuntu版本库安装MySQL。
apt-get install -y mysql-server mysql-client
您将被询问有关MySQL根密码,请输入您所需的MySQL根密码。 确保使用复杂而不是太短的密码。
再次输入密码,然后按'Enter'键。
MySQL已经安装了您自己的root密码。
现在我们需要为Moodle安装添加一个新的配置。 编辑MySQL配置文件mysqld.cnf。
转到/ etc / mysql /配置目录,并使用vim编辑'mysqld.cnf'文件。
cd /etc/mysql/mysql.conf.d/
vim mysqld.conf
在“ [mysqld] ”行下,粘贴以下配置。
default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda
保存并退出,然后重新启动并添加MySQL,以便在引导时自动启动。
systemctl restart mysql
systemctl enable mysql
现在,您可以通过检查服务端口3306使用的服务器端口检查MySQL是否正在运行。
netstat -plntu
MySQL已经安装并启动。
接下来,我们需要为Moodle创建一个新的数据库和一个新的数据库用户。 使用下面的'mysql'命令连接到MySQL服务器。
mysql -u root -p
TYPE YOUR OWN ROOT PASSWORD
为moodle安装创建一个名为' moodledb '的新数据库和一个新的用户' moodleuser ',密码为' hakaselabs123 ',然后向数据库用户授予权限。 您应该在安装过程中使用不同且安全的密码:)
在下面运行mysql查询。
CREATE DATABASE moodledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
GRANT ALL PRIVILEGES ON moodledb.* TO 'moodleuser'@'localhost' IDENTIFIED BY 'hakaselabs123';
FLUSH PRIVILEGES;
创建一个用于moodle的新用户和数据库。
第4步 - 下载并配置Moodle
我们将从GitHub存储库下载Moodle并选择稳定的版本分支。
使用apt命令安装git。
apt-get install -y git
转到'/ var / www /'目录并克隆moodle仓库。
cd /var/www/
git clone https://github.com/moodle/moodle.git
转到moodle目录并列出所有可用的分支。
cd moodle/
git branch -a
您将看到一个长的moodle分支列表,使用以下命令跟踪最新的稳定版本分支。
git branch --track MOODLE_32_STABLE origin/MOODLE_32_STABLE
现在用git checkout切换到最新的稳定分支。
git checkout MOODLE_32_STABLE
现在你在最新的稳定分支,你可以使用下面的命令来检查。
git status
您将在下面看到结果。
On branch MOODLE_32_STABLE
Your branch is up-to-date with 'origin/MOODLE_32_STABLE'.
nothing to commit, working directory clean
接下来,为Moodle数据' / var / moodledata '创建一个新目录,并更改目录的所有者和权限。
mkdir /var/moodledata
chown -R www-data:www-data /var/moodledata
chmod 777 /var/moodledata
将moodle目录的所有者和权限更改为“ www-data ”用户和组。
chown -R www-data:www-data /var/www/moodle
chmod 755 /var/www/moodle
Moodle预配置完成。
第5步 - 生成SSL证书并配置Nginx虚拟主机
我们将在HTTPS连接下使用Nginx Web服务器运行Moodle。 如果您在实时服务器上,您可以使用自己的证书文件或添加您自己的免费证书,以供加密。 我在本地电脑上,所以我只想自己生成新的自签名证书文件。
创建一个新的SSL目录,并使用以下的openssl命令生成自签名的证书文件。
mkdir -p /etc/nginx/ssl
openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/moodle.crt -keyout /etc/nginx/ssl/moodle.key
更改私钥的权限。
chmod 600 /etc/nginx/ssl/moodle.key
接下来,获取Nginx配置目录,并在' sites-available '目录中为Moodle创建一个新的虚拟主机文件。
cd /etc/nginx/
vim sites-available/moodle-hakaselabs
在下面粘贴Nginx虚拟主机配置。
# PHP Upstream Handler
upstream php-handler {
server unix:/run/php/php7.0-fpm.sock;
}
# Nginx redirect HTTP to HTTPS - moodle.hakase-labs.com
server {
listen 80;
server_name moodle.hakase-labs.com;
# enforce https
return 301 https://$server_name$request_uri;
}
# HTTPS Configuration
server {
server_name moodle.hakase-labs.com;
listen *:443 ssl http2;
listen [::]:443 ssl http2;
# SSL Configuration
ssl on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_session_tickets off;
#ssl_stapling on;
#ssl_stapling_verify on;
resolver_timeout 5s;
ssl_certificate /etc/nginx/ssl/moodle.crt;
ssl_certificate_key /etc/nginx/ssl/moodle.key;
# Root Moodle Data DIrectory
root /var/www/moodle;
rewrite ^/(.*\.php)(/)(.*)$ /$1?file=/$3 last;
location ^~ / {
try_files $uri $uri/ /index.php?q=$request_uri;
index index.php index.html index.htm;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass php-handler;
}
}
}
保存文件并退出vim,然后激活虚拟主机并测试Nginx配置文件,确保没有错误。
ln -s /etc/nginx/sites-available/moodle-hakaselabs /etc/nginx/sites-enabled/
nginx -t
重新启动Nginx Web服务器。
systemctl restart nginx
已经创建了SSL证书文件,并配置了Moodle的Nginx虚拟主机。
第6步 - 安装Moodle
打开您的网络浏览器,并在地址栏中键入服务器的moodle URL,然后按'Enter'。 在本教程中,我将使用我自己的域名: moodle.hakase-labs.com 。
您将看到moodle安装页面。
选择一种语言,我将使用“ 英语 ”,然后点击“ 下一步 ”。
配置Moodle URL,在我的例子' moodle.hakase-labs.com ',moodle web根目录' / var / www / moodle '和moodle数据目录' / var / moodledata '。
然后点击“ 下一步 ”。
配置“ 数据库驱动 ”,使用下面的mysql数据库服务器,点击“ 下一步 ”。
输入Moodle的数据库信息。
- 数据库主机: localhost
- 数据库名称: moodledb
- 数据库用户: moodleuser
- 数据库密码: hakaselabs123
- 表前缀: moodle_
- 数据库端口: 3306
- Unix套接字: /var/run/mysql/mysqld.sock
点击“ 下一步 ”继续。
接受版权协议。 只需点击“ 继续 ”。
系统检查,检查服务器配置和moodle需要的所有PHP扩展。
确保所有结果都为“ 确定 ”,然后单击“ 继续 ”进行安装。
您将看到很多模块已安装,确保所有结果都是“ 成功 ”。
再次点击“ 继续 ”。
接下来,我们需要配置一个管理员用户和密码。
填写您的管理员信息,然后点击“ 更新个人资料 ”。
对于“首页设置 ”,请填写您自己的页面信息,然后点击“ 保存更改 ”。
您将被重定向到下面的用户管理员“ 仪表板 ”。
Moodle安装完成。
第7步 - 测试
测试moodle主页 - moodle.hakase-labs.com 。
Moodle登录页面 - moodle.hakase-labs.com/login 。
Moodle用户管理控制面板。
Moodle用户首选项页面。
Moodle站点管理页面。
Moodle已经在Ubuntu 16.04上安装了Nginx,PHP-FPM 7和MySQL 5.7服务器,换句话说是“Moodle with LEMP Stack”。