相关文章推荐
稳重的猴子  ·  BrightnessOverride 类 ...·  3 月前    · 
无邪的橙子  ·  Nginx ...·  4 月前    · 
坚强的眼镜  ·  MongoDB Transaction ...·  5 月前    · 

执行以下步骤,完成虚拟机规模集的配置。 需要使用专用 IP 地址通过 SSH 连接到虚拟机规模集实例,如 访问虚拟机规模集 中所述。

更新日志路径

本地环境和 Azure 可能会将日志文件存储在不同的位置。 例如,可能需要更新以下日志路径:

  • /var/log/syslogs/moodle/access.log
  • /var/log/syslogs/moodle/error.log
  • 请按照以下步骤更新日志文件位置:

  • 输入以下命令,打开配置文件:

    nano /etc/nginx/nginx.conf
    
  • 查找 access_logerror_log,并更新日志路径。

  • 按 Ctrl+O 可保存更改,按 Ctrl+X 可关闭文件。

    重启服务器

    输入以下命令以重启 nginxphp-fpm 服务器:

    sudo systemctl restart nginx
    sudo systemctl restart php<php version>-fpm
    

    控制器虚拟机

    执行以下步骤以完成控制器虚拟机配置。

    更新安全证书

  • 登录到控制器虚拟机。 可在 /moodle/certs 文件夹中找到 Moodle 应用程序的证书。

  • .crt.key 文件复制到 /moodle/certs/。 将文件名分别更改为 nginx.crtnginx.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 中更新目录内容。

    重启服务器

    输入以下命令以重启 nginxphp-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 服务器错误日志,其中应包含详细说明。 下面是一些可能的错误:

  • .htaccesshttpd.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 文档
  • 什么是虚拟机规模集?
  • 存储帐户概述
  •