如何在CentOS 7上安装Moodle 3.2

Moodle是用PHP编写的开源电子学习软件。 它用于远程教育,电子学习项目和混合学习。 Moodle是由Martin Dougiamas开发的“模块化面向对象的动态学习环境”的首字母缩略词,根据GPL许可证发布,帮助教师和教师创建在线课程,重点是交互和协作构建的内容。

在本教程中,我将逐步介绍如何安装最新的稳定Moodle版本,这是当前的“moodle 3.2”。 Moodle将运行在Nginx Web服务器下,使用MariaDB数据库服务器并使用PHP-FPM7.0。 对于操作系统,我们将使用CentOS 7。

条件

  • CentOS 7服务器
  • 根权限

我们将要做什么:

  1. 安装Nginx
  2. 安装和配置PHP-FPM
  3. 安装并配置MariaDB
  4. 下载并配置Moodle
  5. 配置SSL和虚拟主机
  6. 配置SELinux和Firewalld
  7. 安装Moodle
  8. 测试

第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安装已经成功。

参考

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏