自动更新部署

来自MoodleDocs
Moten ZHang讨论 | 贡献2015年4月21日 (二) 05:06的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至:导航、​搜索

启用部署更新


插件概览页面使用安装按钮高亮可用更新。

在Moodle 2.4以上版本,管理员可以在管理>网站管理>服务器>更新通知页面启用部署更新。到那时,当有可用更新时,按钮“安装更新”将会显示在插件概览及插件检查页面。

注意:此功能需要启用可用更新通知

如何工作

  1. 作为有效Web服务的已安装插件新版本的URL地址或压缩包的可用更新信息可以在download.moodle.org找到。
  2. 点击“安装更新”按钮并在下一页面确认部署更新之后,名为mdeploy.php的独立实用程序就会被执行。
  3. mdeploy的作用是用来验证部署请求确实是从上一步的确认页面发出的。
  4. 新版本的压缩包可以从Moodle插件目录中获取。
  5. 执行简单的完整性查验以确认是否正确的下载了压缩包。
  6. 旧版本的插件源码被归档到名为moodledata/mdeploy/archive/的文件夹以作备份之用(例如,仅以防对代码作了微调)。
  7. 移除含有旧版本插件的文件夹,然后使用下载的压缩包替换掉。
  8. 浏览器将会重定向到正常的升级过程页面。

此时,可以更新另一个可用更新或根据如上步骤手动执行另一压缩包的升级程序。

禁用部署更新

少数情况下(如完全独立的服务器可能会变更了很多代码,或管理员有自己部署更新的解决方案——如通过Git管理),而不希望系统启用自动部署更新。那么可以通过在config.php文件添加如下代码以完全禁用此功能:

$CFG->disableupdateautodeploy = true;

可能的问题

缺少安装按钮

如若没有启用部署更新功能(或在config.php文件里被禁用了),那么将不会显示安装更新的按钮。当该功能启用时,页面则会显示可用更新的列表并执行前置检查以确保部署可以正常运行。如若前置检查失败了,那么会显示一个弹窗的帮助页面。

插件文件不可写

部署期间,Moodle会把含有插件代码的整个文件夹用新版本插件的代码替换掉。Web服务器应当有此文件夹及其所有内容的可写权限。根据Web服务器的设置及个人喜好,有多种方法可以做到这一点。插件文件夹准确的位置是根据插件类型来决定的。参阅插件开发人员文档内的Moodle路径确认完整的位置列表。

例如:假设Web服务器是运行在Linux上的Apache,其用户为www-data。Moodle安装在/var/www/vhosts/moodle/htdocs目录下。现在需要赋予邮票收集活动模块的文件夹可写权限,代码如下:

 # cd /var/www/vhosts/moodle/htdocs
 # cd mod
 # chown -R www-data stampcoll
 # chmod -R u+w stampcoll

另请参阅安装插件文档。

无法下载软件包

确保网站http://moodle.org/plugins是正常运行的。如若挂掉了,Moodle将不能从此处获取压缩包。等待网站正常运行后,再试着重新部署程序。

也有可能是SSL证书认证处问题了。参阅Moodle.org的SSL认证文档获取更多信息。

错误及异常


插件部署期间的错误页面截图 如果部署期间出问题了,请仔细阅读错误页面,然后把错误消息连同调试信息复制保存以作参考之用。同时,查验mdeploy.log文件。mdeploy独立实用程序记录了所有步骤并将其记录到文件moodledata/mdeploy/mdeploy.log。日志文件通常记录了引起失败原因的额外细节和调试信息。

从错误页面返回到上一页面后,记得还要回到可用插件列表页面(起初点击“安装更新”按钮的页面)。仅是回到上一确认页面或重新加载当前页面都将不能正常运行,因为此时的请求已经不能再被认证通过了。如果这样做了将会引导至unauthorized_access_exception,从而发出消息“无法阅读口令文件”(Unable to read the passphrase file)。

如下描述了可能遇到的错误及如何处理他们:

无法下载软件包

查验mdeploy.log文件的底部。应当是包含一行以“cURL错误”开头的代码,代码后面是错误编号及错误说明。

cURL错误7 无法连到接服务器

确保网站http://moodle.org/plugins此时是正常运行的。如若挂掉了,Moodle将不能调用调用Web服务从此处获取可用更新信息。等待网站正常运行后重试。

cURL错误60 (SSL认证问题) 
这意味着远程(moodle.org)站点的SSL证书认证出问题了。参阅Moodle.org的SSL认证文档获取更多信息。