执行以下步骤,完成虚拟机规模集的配置。 需要使用专用 IP 地址通过 SSH 连接到虚拟机规模集实例,如
访问虚拟机规模集
中所述。
更新日志路径
本地环境和 Azure 可能会将日志文件存储在不同的位置。 例如,可能需要更新以下日志路径:
/var/log/syslogs/moodle/access.log
/var/log/syslogs/moodle/error.log
请按照以下步骤更新日志文件位置:
输入以下命令,打开配置文件:
nano /etc/nginx/nginx.conf
查找 access_log
和 error_log
,并更新日志路径。
按 Ctrl+O 可保存更改,按 Ctrl+X 可关闭文件。
重启服务器
输入以下命令以重启 nginx
和 php-fpm
服务器:
sudo systemctl restart nginx
sudo systemctl restart php<php version>-fpm
控制器虚拟机
执行以下步骤以完成控制器虚拟机配置。
更新安全证书
登录到控制器虚拟机。 可在 /moodle/certs
文件夹中找到 Moodle 应用程序的证书。
将 .crt
和 .key
文件复制到 /moodle/certs/
。 将文件名分别更改为 nginx.crt
和 nginx.key
,以便配置的 NGINX 服务器能够识别它们。 如果本地环境支持 SCP 实用工具或 WinSCP 等工具,就可以使用这类工具将这些文件复制到控制器虚拟机。 否则,请使用以下命令:
cd /<path to certs location>
mv /<path to certs location>/*.key /moodle/certs/nginx.key
mv /<path to certs location>/*.crt /moodle/certs/nginx.crt
可使用以下命令生成自签名证书,这是另外一种文件复制方法:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /moodle/certs/nginx.key \
-out /moodle/certs/nginx.crt \
-subj "/C=US/ST=WA/L=Redmond/O=IT/CN=mydomain.com"
只能使用自签名证书进行测试。
建议证书文件归 www-data:www-data
所有,对所有者只读。 输入以下命令进行这些更改:
chown www-data:www-data /moodle/certs/nginx.*
chmod 400 /moodle/certs/nginx.*
执行以下步骤,更新证书位置:
输入以下命令,打开配置文件:
nano /etc/nginx/sites-enabled/*.conf
在文件中查找 ssl_certificate
。
将证书的路径替换为以下值:
/moodle/certs/moodle/certs/nginx.crt;
/moodle/certs/nginx.key;
按 Ctrl+O 可保存更改,按 Ctrl+X 可关闭文件。
更新本地 HTML 副本
在文件夹 /var/www/html/moodle
中的虚拟机规模集中创建 Moodle HTML 站点内容的本地副本 /moodle/html/moodle
。 仅在时间戳更改时更新本地副本。 在控制器虚拟机中输入此命令以更新时间戳:
sudo -s
/usr/local/bin/update_last_modified_time.moodle_on_azure.sh
最后修改的时间戳文件 /moodle/html/moodle/last_modified_time.moodle_on_azure
包含一个脚本。 每次运行该脚本时,/moodle/html/moodle
都会在本地副本 /var/www/html
中更新目录内容。
重启服务器
输入以下命令以重启 nginx
和 php-fpm
服务器:
sudo systemctl restart nginx
sudo systemctl restart php<php version>-fpm
将 DNS 名称映射到 Azure 负载均衡器 IP 地址
按照以下步骤,在托管提供商级别将 DNS 名称映射到 Azure 负载均衡器 IP:
在控制器虚拟机中输入以下命令,以在 Moodle 网站上关闭维护模式:
sudo /usr/bin/php admin/cli/maintenance.php --disable
输入以下命令,检查 Moodle 站点的状态:
sudo /usr/bin/php admin/cli/maintenance.php
转到 DNS 名称,查看已迁移的 Moodle 网页。
常见问题解答和故障排除
如果对 Moodle 迁移有疑问,请参阅以下信息。 这些日志文件还有助于排查问题:
Syslog 文件:
每当用户转到你的网页时,系统都会生成错误日志或访问日志。
可在此文件夹中找到这些日志:/var/log/nginx/
。
Cron 日志文件:
Cron 作业运行时,它会更新日志文件的本地副本。
可在此文件夹中找到该文件:/var/log/sitelogs/moodle/cron.log
。
数据库连接失败
对于“数据库连接失败”或“无法连接到指定的数据库”等错误,下面是一些可能的原因和解决方案:
数据库服务器未安装或未运行。 若要在 MySQL 中检查此情况,请输入以下命令:
$telnet database_host_name 3306
如果数据库正在运行,应会收到包含 MySQL 服务器版本号的响应。
主机地址配置不正确。 如果在不同的端口上运行两个 Moodle 实例,请在 $CFG->dbhost
设置中使用主机的 IP 地址,而不是 localhost
。 例如,使用:
$CFG->dbhost = 127.0.0.1:3308
尚未创建 Moodle 数据库。 或者,尚未分配足够的权限来访问数据库。 检查数据库以及你授予的权限。
Moodle 数据库设置不正确。 例如,Moodle 配置文件 config.php
中的数据库名称、用户名或密码不正确。 确保 MySQL 用户名和密码不包含撇号或非字母数字字符。
内部服务器错误
此错误的可能原因包括:500: 内部服务器错误。 首先检查 Web 服务器错误日志,其中应包含详细说明。 下面是一些可能的错误:
.htaccess
或 httpd.conf
文件中存在语法错误。 正确的指令语法因你使用的文件而异。 使用以下命令测试 NGINX 文件中的配置错误:
`nginx -t`
Web 服务器以你自己的用户名运行,访问权限不正确。 在这种情况下,所有文件需要的最大权限级别为 755。 检查是否在控制面板中为 Moodle 目录设置了此级别。 或者,使用此命令设置级别(如果有权访问 shell):
chmod -R 755 moodle
内存限制错误
如果发生“403: 禁止访问”错误,则表示 PHP memory_limit
值对于 PHP 脚本来说还不够大。 memory_limit
值是允许的内存大小。 少量增加 PHP memory_limit
值,直到消息消失。 使用以下方法之一:
对于托管式安装,请咨询主机支持人员,了解如何增加该值。 许多环境都使用 .htaccess
文件。 如果你的安装也是,请向 .htaccess
文件添加以下行:
php_value memory_limit <value>M
例如,若要将值增大到 40 MB,请输入:
php_value memory_limit 40M
如果没有 .htaccess
文件,则使用该行在 Moodle 目录中创建一个。
如果你自己的服务器具有 shell 访问权限,请编辑 php.ini
文件。 然后重启 Web 服务器以应用在 php.ini
中所做的更改。 若要确保正确更新值,请输入以下命令:
`phpinfo`
phpinfo
的输出应包含类似如下的行:
memory_limit <value>M
例如,它可能包含以下行:
memory_limit 40M
或者,也可输入以下命令来关闭内存限制,从而增加 memory_limit
值:
memory_limit 0
有时无法登录或看到以下消息之一:
Your session has timed out. Please log in again.
A server error that affects your login session was detected. Please log in again or restart your browser.
身份验证方法可能有问题,尤其是在使用 LDAP 等外部方法对用户进行身份验证时。 请尝试登录到另一个手动帐户,例如主管理员帐户。 如果无法登录,请检查身份验证。 如果可以登录到另一个帐户,下面是 Moodle 登录问题的可能原因和解决方案:
硬盘可能已满。 在这种情况下,Moodle 无法创建新会话,用户无法登录。 检查硬盘是否已满、服务器是否位于共享托管中,以及是否尚未达到磁盘空间配额。
Web 服务器无法写入 sessions
子目录。 仔细检查 moodledata
区域中的权限。
灾难性错误
如果看到 fatal error: $cfg->dataroot is not writable. The admin has to fix directory permissions! Exiting.
错误,则表示 Moodle 和 moodledata 权限可能不正确
请检查这些权限是否仅限 www-data:www-data
。 如果权限位于不同的级别,请使用此命令更改组和所有权权限:
sudo chown -R /moodle/moodledata
顶级进程错误
如果在安装 Moodle 后找不到顶级进程,则表示安装可能未完成。 完成安装之前,Moodle 会让你提供管理员配置文件,并提示你为站点命名。 如果缺少这些步骤,请检查日志中的错误。 然后重启数据库。 如果使用了基于 Web 的安装程序,则使用命令行再次安装 Moodle。
如果登录后在 Moodle 中无法自由导航,则表示 URL 配置可能不正确。 请确保 $CFG->wwwroot
设置中的 URL 与用于访问站点的 URL 相同。
文件上传错误
如果在上传文件时看到“找不到文件”错误,则表示 Web 服务器可能尚未启用斜杠参数。
如果 Web 服务器支持斜杠参数,请将其启用。
如果 Web 服务器不支持斜杠参数,请在 Moodle 中将其禁用,方法是清除“管理”>站点管理”>“服务器”>“HTTP”中的“使用斜杠参数”复选框。 你可能会看到此消息。
禁用斜杠参数将导致 SCORM(共享内容对象引用模型)包无法工作并显示斜杠参数警告!
维护模式错误
当 Moodle 处于维护模式,你尝试退出该模式时,有时会看到以下消息:“此站点正在进行维护,当前不可用”。 当 Moodle 进入维护模式,它在 moodledata
文件夹中创建的 maintenance.html
文件出现问题时,就会出现这种情况。 在这种情况下,请执行以下步骤:
检查 Web 服务器用户在 moodledata
目录中是否具有写入权限。
手动删除 maintenance.html
文件。
Azure Database for MySQL 文档
什么是虚拟机规模集?
存储帐户概述