由于小组学习需要,我计划在导师的服务器上安装一个属于自己的 Moodle。
环境介绍
服务器为 Ubuntu 18.04。
先安装软件
更新软件
不多废话,上手就是更新软件。
sudo apt update -y
sudo apt upgrade -y
安装 Apache2
由于 Moodle 从 3.0.1 版本开始,就是基于 Appache2 的,所以不想自己去配置 nginx 了,就直接安装 Apache2。
sudo apt install apache2 -y
耐心等待 Apache2 安装完成。安装完成后,启动 Apache2 服务。
sudo systemctl start apache2
启动服务后,可以确认一下服务是否已经启动。
sudo systemctl status apache2
如果正常,将出现以下的输出。
当然也可以通过浏览器来访问测试。打开浏览器,输入地址后,熟悉的 Apache2 界面就会出现。如下图。
修改 WEB 服务端口
如果有需要,可以修改服务端口,比如将缺省的 80 端口改为 8080。需要修改两个配置文件。
将 ports.conf 文件中的 80,改为 8080。
sudo vi /etc/apache2/ports.conf
如下所示。
Listen 8080
将虚拟主机的监听端口改为 8080。
sudo vi /etc/apache2/sites-enabled/000-default.conf
如下所示。
<VirtualHost *:8080>
关闭 Apache2 服务,并重新启动服务。
sudo service apache2 stop
sudo service apache2 start
这样,就可以将端口改为 8080。
安装 MySQL 和 PHP
sudo apt install -y mysql-client mysql-server php libapache2-mod-php
确保数据库服务运行
安装完成后,我们要确保数据库已经运行起来。
sudo systemctl start mysql
sudo systemctl enable mysql
获取 MySQL 缺省密码
sudo cat /etc/mysql/debian.cnf
如上图所示,我们就知道了 MySQL 的缺省用户和密码。
加固 MySQL 安全性
这个目的是让我们的 MySQL 数据库更安装。
mysql_secure_installation -udebian-sys-maint
输入用户密码后,会出现以下几个配置。
这样,我们就加固了 MySQL 的安全性。
安装其他软件
sudo apt install -y graphviz aspell ghostscript clamav php7.2-pspell php7.2-curl php7.2-gd php7.2-intl php7.2-mysql php7.2-xml php7.2-xmlrpc php7.2-ldap php7.2-zip php7.2-soap php7.2-mbstring
创建 Moodle 的数据库
sudo mysql -u root -p
创建数据库
CREATE DATABASE moodledb;
创建用户和密码
CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'new_password_here';
注意,这里我们创建一个用户名字叫 moodle,密码部分(new_password_here)需要自己设置。
设置用户权限
grant all privileges on moodledb.* to 'moodle'@'localhost' identified by 'user_password_here';
保存并退出
FLUSH PRIVILEGES;
exit;
下载最新的 Moodle
目前 Moodle 最新的代码为 3.9.2。
wget https://download.moodle.org/stable39/moodle-3.9.2.tgz
下载完成后,解压。
解压 Moodle
tar -zxvf moodle-3.9.2.tgz
这样,在当前文件夹下就多了一个 moodle 目录。
移动 moodle 到 www 目录
Apache2 的确认 www 路径为 /var/www/html/
sudo mv moodle /var/www/html/moodle
sudo chown -R www-data:www-data /var/www/html/moodle
sudo chmod -R 755 /var/www/html/moodle
sudo mkdir /var/www/html/moodledata
sudo chown -R www-data:www-data /var/www/html/moodledata/
配置 Apache 服务器
这样 moodle 所需要的文件已经就位,我们需要配置服务器。通过创建一个 moodle.conf 来实现。
sudo vi /etc/apache2/sites-available/moodle.conf
配置文件的内容如下:
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/html/moodle/
ServerName example.com
ServerAlias www.example.com
<Directory /var/www/html/moodle/>
Options +FollowSymlinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
注意上面的端口号,我的服务器是使用了 80 缺省端口的。
这样,我们就将 moodle.conf 添加到 Apache2 服务中,并重新启动 Apache2。
sudo a2enmod rewrite
sudo a2ensite moodle.conf
sudo systemctl restart apache2
通过 WEB 配置 Moodle
下面我们通过 WEB 来配置自己的 Moodle。在浏览器中输入
http://server-IP/moodle/install.php
注意 server-ip 是 Moodle 服务器的 IP 地址。我们将获得如下的界面。
先选择语言,然后点击 next。
选择目录,前面我们都已经建立好了,选择 Next。我这里出现一个问题,说 www 目录不能写。通过查询,发现 www 目录是 root 的。如下图。
使用命令
sudo chown -R www-data:www-data /var/www
修改 www 目录的所有者。
再点击 Next 就可以了。下面到了数据库选项。如下图
点击 Next。如果出现问题,那就是 moodle 这个用户对数据库 moodledb 没有权限导致的,请重新确认权限。
下面一路选择 Next。进入到 admin 和用户设置。
设置好这些,Moodle 就已经搭建完成。可以使用了。