Moodle是用PHP编写的开源电子学习软件。 它用于远程教育,电子学习项目和混合学习。 Moodle是由Martin Dougiamas开发的“模块化面向对象的动态学习环境”的首字母缩略词,根据GPL许可证发布,帮助教师和教师创建在线课程,重点是交互和协作构建的内容。
在本教程中,我将逐步介绍如何安装最新的稳定Moodle版本,这是当前的“moodle 3.2”。 Moodle将运行在Nginx Web服务器下,使用MariaDB数据库服务器并使用PHP-FPM7.0。 对于操作系统,我们将使用CentOS 7。
条件
- CentOS 7服务器
- 根权限
我们将要做什么:
- 安装Nginx
- 安装和配置PHP-FPM
- 安装并配置MariaDB
- 下载并配置Moodle
- 配置SSL和虚拟主机
- 配置SELinux和Firewalld
- 安装Moodle
- 测试
第1步 - 安装Nginx
在这一步,我们将从epel仓库安装Nginx。 默认情况下,Nginx不可用于Centos存储库,所以我们需要添加一个新的存储库“epel-repository”来安装Nginx。
使用yum命令安装epel-repository。
yum -y install epel-release
接下来,从epel-repository安装Nginx。
yum -y install nginx
安装完成后,启动Nginx并使其在启动时自动启动。
systemctl start nginx
systemctl enable nginx
Nginx已经安装并在端口80上运行。使用netstat检查系统上的打开端口。
netstat -plntu
如果您没有安装netstat命令,那么可以安装net-tools软件包来获取它。
yum -y install net-tools
第2步 - 安装和配置PHP-FPM
Moodle 3.2支持新的PHP 7版本,所以我们将使用PHP 7.0。 PHP-FPM 7.0在默认CentOS存储库中不可用。 有一个第三方存储库从“webtatic”为PHP7虽然我将在这里使用。
使用rpm命令将新的webtatic存储库添加到系统。
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
接下来,安装PHP-FPM 7.0与Moodle所需的所有扩展和包。
yum install -y graphviz aspell php70w-fpm php70w-cli php70w-pspell php70w-curl php70w-gd php70w-intl php70w-mysql php70w-xml php70w-xmlrpc php70w-ldap php70w-zip php70w-json php70w-opcache php70w-readline php70w-mbstring php70w-soap
安装完成后,使用vim编辑PHP配置文件php.ini。
vim /etc/php.ini
取消注释cgi.fix_pathinfo行并将值更改为0。
cgi.fix_pathinfo=0
保存php.ini文件并退出vim。
转到php-fpm配置目录并编辑php-fpm配置文件www.conf。
cd /etc/php-fpm.d/
vim www.conf
将用户和组行更改为“nginx”,以便Web服务器在用户和组“nginx”下运行。
user = nginx
group = nginx
而不是使用服务器端口,我们将使用一个socket文件为php-fpm。 将listen行的值更改为“/run/php-fpm/php-fpm.sock”。
listen = /run/php-fpm/php-fpm.sock
接下来,取消注释套接字文件所有者,组和默认权限行,并更改它们,如下所示。
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
配置PHP将解析的文件扩展名。
只允许.php文件。
security.limit_extensions = .php
取消下面的PHP-FPM环境变量行的注释。
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
保存文件并退出编辑器。
现在我们需要为php会话路径创建一个新的目录。 创建新目录并将目录的所有者更改为“nginx”用户和组。
mkdir -p /var/lib/php/session/
chown -R nginx:nginx /var/lib/php/session/
将php-fpm套接字文件目录的所有者更改为nginx用户。
chown -R nginx:nginx /run/php-fpm/
PHP-FPM配置已经完成。 启动PHP-FPM,并将其添加到启动时使用以下两个systemctl命令自动启动。
systemctl start php-fpm
systemctl enable php-fpm
PHP-FPM将运行在一个套接字文件下,检查它,以确保PHP-FPM再次运行netstat。
netstat -lx | grep php-fpm.sock
第3步 - 安装和配置MariaDB服务器
我将使用MariaDB作为本教程的数据库服务器。 我将从Centos存储库安装mariadb-server,然后配置MariaDB root密码,并为Moodle添加一个新的数据库和用户。
使用下面的yum命令安装mariadb-server。
yum -y install mariadb-server mariadb
安装完成后,编辑配置文件my.cnf。
vim /etc/my.cnf
在'[mysqld]'部分的末尾,粘贴下面的配置。
default_storage_engine = innodb
innodb_file_per_table = 1
innodb_file_format = Barracuda
保存并退出,然后启动MariaDB并使其在引导时启动。
systemctl start mariadb
systemctl enable mariadb
MariaDB已经安装并在3306端口上运行,但是还没有root密码,所以我们需要配置它。 使用以下命令设置新的MySQL根密码。
mysql_secure_installation
您将被要求输入新的MySQL root密码。
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
MariaDB配置完成。
接下来,使用'mysql'命令连接到MySQL shell,然后为Moodle创建一个新的数据库和用户,为新用户授予数据库的权限。
连接到mysql shell。
mysql -u root -p
TYPE YOUR PASSWORD
运行下面的mysql查询以创建一个新的用户' moodleuser ',密码为' hakaselabs123 '和一个新的数据库' moodledb ',然后将新数据库的所有权限授予新用户。 请在您的服务器上选择一个不同且安全的密码!
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,因此我们需要在系统上使用git命令。 用yum安装git,如下所示。
yum -y install git
接下来,创建一个新的web根目录/ var / www /'目录。
mkdir -p /var/www/
转到'/ var / www /'目录并从GitHub存储库克隆Moodle。
cd /var/www/
git clone https://github.com/moodle/moodle.git
然后去'moodle'目录,检查可用的Moodle分支。
cd moodle/
git branch -a
列出Moodle稳定分支,选择最新的稳定分支和结账最新的稳定分支版本。
git branch --track MOODLE_32_STABLE orogin/MOODLE_32_STABLE
git checkout MOODLE_32_STABLE
现在你应该是最新稳定的Moodle分支,你可以用下面的git命令来检查。
git status
您将在下面看到结果。
# On branch MOODLE_32_STABLE
nothing to commit, working directory clean
现在创建一个新的目录'moodledata',并确保该目录的所有者是'nginx'用户和组。
mkdir -p /var/moodledata
chown -R nginx:nginx /var/moodledata
chmod 777 /var/moodledata
将moodle目录的所有者更改为“nginx”用户。
chown -R nginx:nginx /var/www/moodle
chmod 755 /var/www/moodle
Moodle已经下载。
第5步 - 配置SSL和虚拟主机
我们将运行具有安全HTTPS连接的Moodle oa nginx Web服务器。 当您在实时服务器上时,您可以使用自己的证书文件或使用免费证书进行加密。 我在本地电脑上,所以我可以自己生成一个新的自签名证书文件。
创建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
接下来,使用cd命令转到nginx配置目录,并在'conf.d'目录中为moodle创建一个新的虚拟主机文件。
cd /etc/nginx/
vim conf.d/moodle.conf
粘贴nginx moodle虚拟主机下面。
# PHP Upstream Handler
upstream php-handler {
server unix:/run/php-fpm/php-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 fastcgi.conf;
fastcgi_pass php-handler;
}
}
}
保存配置文件并退出vim。
测试Nginx配置,并确保没有错误,然后重新启动Nginx。
nginx -t
systemctl restart nginx
用于moodle的SSL证书和新的虚拟主机配置已完成。
第6步 - 配置SELinux和Firewalld
在此步骤中,我们将配置SELinux和Firewalld。 如果您的SELinux已关闭,并且您不想使用它,则可以跳过此步骤并开始配置Firewalld。 检查您的SELinux状态,并确保安装防火墙。
使用以下命令检查SELinux状态。
sestatus
SELinux启用了“强制执行”模式。
要配置SELinux,我们需要系统上安装的SELinux管理工具。
用yum安装“policycoreutils-python”。
yum -y install policycoreutils-python
现在,使用下面的semanage命令更改moodle web根目录和moodle数据目录的SELinux上下文文件和目录设置。
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/moodle(/.*)?'
restorecon -Rv '/var/www/moodle/'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/moodledata(/.*)?'
restorecon -Rv '/var/moodledata/'
SELinux配置的moodle已经完成,现在我们必须配置Firewalld。
如果没有,请安装防火墙软件包。
yum -y install firewalld
启动firewalld并自动添加firewalld以在引导时启动。
systemctl start firewalld
systemctl enable firewalld
接下来,使用firewall-cmd命令打开HTTP,HTTPS和SSH的端口。
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --permanent --add-service=ssh
重新加载firewalld并检查HTTP和HTTPS是在服务列表。
firewall-cmd --reload
firewall-cmd --list-all
Firewalld配置完成。
第7步 - 安装Moodle
Moodle安装的准备工作已经完成。 现在我们可以通过访问Moodle虚拟主机的域名来安装Moodle。 在本教程中,我使用的域名是'moodle.hakase-labs.com'。
打开您的网络浏览器,并在地址栏中输入URL“ moodle.hakase-labs.com ”。
您将看到Moodle安装页面,选择您的语言,在我的情况下为“ 英语 ”,然后单击“ 下一步 ”。
现在输入moodle的配置数据:web地址' moodle.hakase-labs.com ',moodle web根目录' / var / www / moodle ',moodledata目录' / var / moodledata ',然后单击' 下一步 '继续。
对于数据库驱动程序,选择“ MySQL ”如下,单击“ 下一步 ”。
moodle数据库的配置。
- 数据库主机:localhost
- 数据库名称:moodledb
- 数据库用户:moodleuser
- 数据库密码:hakaselabs123
- 表前缀:moodle_
- 数据库端口:3306
- Unix套接字:/var/lib/mysql/mysql.sock
然后点击“ 下一步 ”。
有关版权声明,请点击“ 继续 ”按钮。
Moodle将检查系统和所有php扩展要求,确保所有结果都为“ 确定 ”,然后单击“ 继续 ”进行安装。
Moodle安装开始。 确保所有结果都是“ 成功 ”,然后点击“ 继续 ”配置Moodle。
用户管理配置。 输入您的信息,如姓名电子邮件密码等,然后点击“ 更新个人资料 ”。
Moodle Front Page配置,键入moodle信息,然后单击“ 保存更改 ”。
并且您将被重定向到Moodle用户管理仪表板。
Moodle安装已经完成,没有错误。
第8步 - 测试
访问Moodle首页 - moodle.hakase-labs.com 。
Moodle登录页面 - moodle.hakase-labs.com/login/ 。
Moodle用户信息板。
Moodle站点管理用于配置Moodle系统。
Moodle用户偏好设置
在CentOS 7系统上使用Nginx Web服务器,php-fpm和MariaDB的Moodle安装已经成功。