迁移Moodle

跳转至: 导航, 搜索

有时需要将Moodle站点从一个服务器移动到另一个服务器。例如,把Moodle站点从虚拟主机移至独立主机。

提示:常见的升级错误是忘记更新迁移后的config.php文件。

迁移一个完整的Moodle站点——方法1

此方法涉及到将整个站点从一个服务器迁移至另一个服务器。如需将域名/IP地址变更为新服务器的地址,还需如下几步:

  • 维护模式。置于当前Moodle站点为CLI维护模式以防止数据库任何数据的增加。因管理员帐号不受维护模式设置的影响,迁移期间也不要他们登录。
  • 备份当前数据库。遵循Moodle升级站点备份的说明文档即可备份数据库。包含mysql转储(dump)过程的文本文件即可以找到。
  • 复制Moodle软件。需要复制Moodle源码到新服务器——如可以升级到最新版本的话,尽量升级。
  • 变更
    $CFG->wwwroot参数
    。在(可能是)新的Moodle目录下,为新服务器的config.php文件变更
    $CFG->wwwroot
    的参数。
  • 复制数据目录内容(moodledata)。复制数据目录的内容到新服务器(检查
    $CFG->dataroot
    的值)。
  • 复审moodledata的权限。检查数据目录权限是否与之前的保持一致,如若在新服务器变更了位置还需更改数据目录的值(config.php内的moodledata位置)。
  • 变更Moodle的URL地址。如若需用一个新的URL,还需为新服务器在数据库里变更URL。此URL链接的图片、文件等以绝对路径存储于数据库,而且他们参考
    旧的$CFG->wwwroot
    值。所以当加载旧数据库服务器备份的绝对链接是到新服务器时,链接会崩溃的。这有2种方法可以解决这个问题:
  1. 第一种方法是站点正常运行时且在备份数据库之前使用脚本replace.php进行变更URL。将浏览器指向yourserver.com/admin/tool/replace/index.php或旧版本的http://yourserver.com/admin/replace.php
    • 分别输入新(http://newserver.com)旧(http://oldserver.com)服务器的URL,它将会修复数据库表内的URL。还需要通过重启浏览器清除任何缓存链接。现在,重新备份一遍数据库——此次将会含有正确的URL地址。
    1. 第二种方法是先备份数据库,然后通过文本编辑器(或使用Unix工具,如,sed)的搜索和替换功能,用新的URL替换掉备份文件内的旧的URL。如下为sed的代码示例:
      • #sed -e 's/oldserver.com/newserver.com/g' oldmysqldump.sql > newmysqldump.sql
    1. 注意:第二种方法并不能替换掉版块内的文本,因其是以base64的编码方式存储与数据库内,所以版块内的任何链接都得不到修复。所以如若使用第二种方法则需在迁移之后考虑使用替换工具进行再次修复。
      提示::可能需要检查数据库转储文件(mysqldump)以查明旧服务器是如何被引用的。
      变更URL之后还需还原数据库。

    迁移一个完整的Moodle站点——方法2

    新旧服务器上是否均有Shelle访问权限?如若有的话,下面是迁移基于Unix的站点非常快速且高效的方法。

    同时此方法也适用于创建快照或测试站点。

    • 服务器上建立一个空的数据库
    • 置于当前站点为维护模式
      • 登录服务器的Shell
      • 使用rsync命令复制moodledatapublic_html(或为Moodle安装目录下的任何目录)到新服务器——为每个目录执行如下命令(用详细资料替换掉大写字母(caps);SOURCE=复制目的地的目录):
        • rsync -av -e ssh SOURCE/ USERNAME@NEW_SERVER.COM:/PATH/TO/DESTINATION/
      • 通过执行如下命令将转储的数据库文件导入到新服务器的数据库中:
        • mysqldump --allow-keywords --opt -uMySQL_USERNAME -pPASSWORD DATABASE | ssh USER@DOMAIN "mysql -uMySQL_USERNAME -pPASSWORD DATABASE"
      • 新服务器上,用相应的详细资料更新config.php
      • 登录到新服务器的“新”Moodle安装程序中,通过管理员的搜索和替换工具,使用新的URL搜索并替换掉旧的URL,如此即可修复内部链接地址
      • 确保一切顺利

    这大约需要15分钟。

    当一切运转正常时,根据需要设置重定向或变更DNS,关闭新站点的维护模式并“关闭”旧的站点。

    其他需要考虑的要点

    图片链接地址仍为旧站点的地址,需要将其变更为新站点

    如若之前的Moodle服务器使用http//192.168.0.1/Moodle作为站点URL。那么需要设置站点为http://OurMoodle.org/Moodle。虽然已经将配置文件内的URL变更为新地址,但是图片链接仍指向旧站点。

    一个简单且快速的解决方案是使用Moodle的替代脚本来修复这个问题。以管理员登录系统,在浏览器地址栏输入http://OurMoodle.org/admin/tool/replace/index.php(旧版本则输入or http://OurMoodle.com/admin/replace.php)。使用本页面内的2个表单将旧地址http://192.168.0.1/ 变更为新地址 http://OurMoodle.org/

    此功能仅适用于运行MySQL或Postgre数据库的Moodle站点。参阅[http://tracker.moodle.org/browse/MDL-26597 MDL-26597]和[http://tracker.moodle.org/browse/MDL-35099 MDL-35099]。

    Moodle升级

    迁移Moodle的同时将其升级为最新版本是一个不错的主意。如果服务器是自己的,遵循Moodle升级说明文档,或者先核验一下服务器是否支持Moodle的升级。

    服务器之间还原单个课程

    可能需要把单个课程从旧站点还原到新站点,尤其是在测试迁移工作的时候。在还原备份文件到另一个服务器上时要比创建备份更容易损坏文件的绝对参考链接(When restoring a Moodle backup file to Moodle on a different server than the one used to create the backup, the absolute referenced links to files maybe broken)。修复这个问题可以通过打开backup-coursename.zip文件,编辑moodle.xml文件,并用
    $@FILEPHP@$
    替代文件内的链接。 例如,用
    $@FILEPHP@$
    替换链接http://yourserver.com/file.php/243/

    文件还原之后,新课程将使用正确的文件路径。

    变更DNS&IP伪装

    可能还需要变更新站点的DNS条目。如若已经变更完了,需要花费一定的时间去复制,所以要耐心等待。如果服务器放置在防火墙之后,可能还需要变更防火墙规则以使新服务器可正常访问。参阅IP伪装文档。

    You may have had to change the DNS entries for the new Moodle site. If you have done so, it will take some time for the changes to replicate, so be patient. If your server is located behind a firewall, you may also have to change your firewall rules to allow access to the new server. See the masquerading docs.

    内部和外部的访问

    如若设置站点为可通过内网和外网均可访问,确保已经核验过新站点内外网络均可访问。

    另请参阅

    使用Moodle论坛中的讨论:

    </div></div></div></div></div></div>