上周为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、里里外外逛了一圈之后,感觉还可以,所以就发布,并在内网上挂了一个外网链接,算是迁移完成。