原文地址http://drupal.org/node/776864
如果你变更了主机,或者保持开发和线上独立,你需要迁移你的drupal站点。这是一个线下工作,或许仅仅是一个检查列表,你需要根据你的需要和服务器环境作出相应的调整。这个过程包括单站,多站(多站在windows apache 或者 多站在linux)的迁移等。
准备工作
记录源主机和目标主机安装的php任何差异,包括bugs,features,模块,配置,版本等,另外还有mysql 和 apache的差异。
准备一些工具和命令,譬如,如何上传和下载文件,管理两台机器上的MySQL等压缩文件,在mysq下更改权限和所有者。有Drupal的工具,包括其中一些步骤,例如备份和恢复数据,但他们不是应对所有问题。你应该明白在这个过程中,那些工具能保证你,那些工具不利于迁移工程。
目标主机检查清单:你必须确认目标主机支持drupal需要的所有的特征(可写,可覆盖)。如果你从一个好主机迁移到一个此主机,drupal不能正常运行,可能不是你的迁移失败,而是目标主机不能正确支持drupal。
旧站点
- 记录使用的模块,包括他们的版本和路径。模块网站文档可以减轻这方面的工作
- 记录用于管理/设置/文件系统(admin/settings/file-system)的临时缓存路径,还原数据库之后并保持2个站点使用相同的路径。
- 设置网站离线模式,管理/维护模式( Administer/Site maintenance),选择“离线”(Off line)。
- 考虑迁移之前更新 Drupal核心和模块
- 关闭“简洁链接” (Administer/"Clean URLs") .
- 清除缓存数据。
-
导出数据库数据。你可以使用mysql管理员或者phpmyadmin,导出成.sql文件。你不需要下载,因为这个文件就在你的计算机上。
- 在mysql 管理界面,第一次链接需要您输入密码,点击备份链接,从数据库列表中选择要备份的数据库,被移动到右侧的备份内容列表里,选择保存路径,点击“确认”按钮。
- 如果你的网站是在线服务器,请考虑是否设置你的网站在线。维护模式为在线。当然,此后的的所有提交(评论,论坛等)都将丢失。因此,你可以考虑通过修改权限来阻止用户评论。
- 复制drupal所有的代码,并且下载到本地。并且传送到新的目标机器。这样,可以在新的目标机器上使用该备份。
- 复制网站文件和任何相关的路径(譬如图片路径),并下载到本地,上传到新的目标机器。erver.
源主机和目标主机之间
这些步骤需要在你自己的电脑上执行,和源主机和目标主机上执行不同。
在数据库的数据包括一些硬编码,这些可能不适合新的目标主机。你可以使用sql 查询来重建数据库并改变这些,或者你可以使用文本编辑器修改.sql文件。利用文本搜索可以得到一些意想不到的变更区域。如果很慢,你可以考虑以下:
- 文件列表(文件表中的路径)[The files list (field "filepath" in table "files")]
- 网站url。一些节点链接和引用指向了网站绝对路径,另外在日志文件中也有很多链接。在新的目标网站,这些并不是合适的。你可以考虑修改每个表。
- 上述变更引起的变化。例如消息模块,在消息存储中为每条消息存储了网站url。我相信图像(imagefield)模块类似文件清单的列表。
- 什么工具创建新的数据库(参见下面的导入数据)
- 数据库名称。你的托管公司可能需要所有的数据库表以“yourname_”开始。此外,他们可能还限制字符长度。
-
下面的命令能从数据库dump文件中除去数据,当drupal数据库不能从一个数据库迁移到另外的数据库
sed -E -e "/^INSERT INTO \`(cache|watchdog|sessions)/d" < /path/to/dump.sql > /path/to/dump-stripped.sql
如果你的数据库使用表前缀,你需要调整正则表达式
如果你移动一个在线网站从一个主机到另一台主机,你需要调整dns配置指向新的主机。
在目标主机
现在在目标主机上执行:
- 上传整个drupal代码到目标主机,包括内核,模块,主题。或者重新构建。一些人喜欢安装新的内核。
- Upload or copy the files directory and any similar directories (such as image galleries) to the location you chose when editing the .sql file上传文件夹和相关文件夹(譬如图像文件)到你选择的路径。
- 利用drupal用户创建数据库。如果你的托管公司需要,所有表以 "yourName_"开始。此外,他们可能限制字符长度。如果你可以创建并且你有.sql文件,则跳过这步。
- 上传并导入数据文件。如果你不能创建数据库,你可以需要你主机上的其他工具来完成创建数据库。这时,你需要删除.sql里的所有的"create database"行("create database if not exists"除外)。你可能发现对于phpMyAdmin来说,数据库过大而不能上传。一些主机提供了mysql administrator 用户,用来接收大文件。如果你能ssh接入到目标主机,你可以使用mysql 命令"mysql --user=user_name --password=your_password database_name" 登录mysql,然后使用source命令导入sql文件。 "source database_backup.sql".
- 修改settings.php文件,修改数据库连接。使用正确的用户名密码,保证能连接目标主机的mysql。你需要调整mysql目标地址来适用当前的环境。
- 有时,需要修改.htaccess 文件的rewrite规则
- 登录新站点,使用“/?q=user”登录,修改维护模式,开启简洁url。
- 调整网站配置,包括email地址,修改文件路径,修改临时缓存
-
调整模块。譬如php从5.2.8升级到5.3.0,一些模块不能正常工作。通过大量的错误信息,搜索可能的解决方案。或许不得不作出以下调整,但不限于
- 在php.ini设置datemezone
- 为内核或者模块打补丁
- 使用开发板代替alpha版本
- 删除不工作的模块
- 检查状态报告。运行cron,如果drupal建议。
- 你的新站点和旧站点一模一样了。你可以修改主题或者主题颜色增强视觉效果。
- 调整性能参数,配置,性能(Administer → Site configuration → Performance.)
- 当做完所有的工作,你修改维护模式为在线。
- 设置cron任务。
- 如果你的新drupal站点为公开访问,设置dns解析到新的目标主机ip。如果你的站点修改域名提供商,你更新你的合同。