一切福田,不離方寸,從心而覓,感無不通。

Drupal Ver 7.0 的迁移方法

上周为Edu 2.0研究中心申请的空间今天批准下来了,所以中午抽空将站点从内网服务器迁移出去了。因为这过程中起了一点波折,所以还是觉得有必要记一笔,以后也可以有个参考。

以下基本是按本人操作的过程,因为之前并没经验,未必是最佳实践,看客自行斟酌,有不准确的,或者有更好的解决方法的,不妨也可以在评论中给提个建议:

1、大约12点收到FTP、MySQL帐户信息,打算开始迁移,所以在微博里放出风声,告知我们的成员在接下来的3个小时内将执行系统迁移,原部署于内网的系统会不可访问;

2、在本地服务器上,使用PHPMyAdmin,选中Drupal使用的数据库,选择export,将数据记录以默认格式导出为tempDrupal.SQL;如果你原先没有配置phpmyadmin,那么使用前需要修改phpmyadmin\libraries\config.default.php文件配置以下基本参数:

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['user'] = 'MYSQL数据库帐号';

$cfg['Servers'][$i]['password'] = 'MYSQL数据库密码';

3.敲以下命令停止Apache和MySQL服务(具体服务名称以系统中配置的为准),用FTP帐号将原先的Drupal目录中的所有文件传送到目标空间中

net stop apache2.2

net stop mysql

4. 在目标空间上同样上传并配置一个phpmyadmin,登录后选择import,将之前导出的tempDrupal.SQL导入数据库中,这时在phpmyadmin中就可以看到数据库的内部结构了。

5、修改目标空间中的Drupal配置文件,即/sites/default/settings.php。将其中的数据库信息,设置为符合目标空间的值,这些设置语句形如下文。顺便也可以将系统的$base_url 、$cookie_domain均设置为站点的域名,例如“ 'http://et2x.zjnu.edu.cn';”(注意不带“/”)

$databases = array (

 'default' =>

 array (

   'default' =>

   array (

     'database' => '数据库名称',

     'username' => '数据库用户名',

     'password' => '数据库密码',

     'host' => 'localhost',

     'port' => '',

     'driver' => 'mysql',

     'prefix' => '',    ),  ),);

6、到这一步时访问install.php,执行更新脚本,至此,迁移后的空间应该可以显示出来。如果在执行这一脚本时提示没有权限,可以在settings.php中设置 “$update_free_access = TRUE; ”(但执行完后一定要记得改回FALSE或注释掉)

7、不过我在此步登录之后做了一个手欠的事,顺手在主题列表选择另一个主题,结果系统报出一个“failed to open stream: "DrupalTemporaryStreamWrapper::stream_open"”的错误,愣了一会才意识到系统中配置的临时文件夹还没改,在“配置”/“媒体”/“文件系统”中更改了就恢复原先的主题风格了。

8、接下去是执行一些细节问题,主要的问题是由于上传路径不同而导致的一些图片无法显示,以及部分用绝对路径添加的菜单链接,等。在这里上传路径的问题,如果涉及内容多,建议还是配置成相同的,这样就排绝了后患,当然也有没有办法配置成一样的情况(例如给你的空间本来就是一个二级目录,而你原先配置的上传路径本身就是二级目录),那可能就需要探索其它方式了。

9、里里外外逛了一圈之后,感觉还可以,所以就发布,并在内网上挂了一个外网链接,算是迁移完成。

转自:http://hi.baidu.com/cneter/item/3d8aea773971b6295d17894b