范例:从http://www.youdomain.com 迁移到http://www.newsite.com。
- 将原来网站文件中的var文件中的cache和session文件删除,将media中的缓存文件删除。然后将所有文件制作成一个压缩包,以减少文件体积,方便转移。
- 将压缩包转移到新的服务器域名指向的文件夹,解压。
一、首先要通过phpMyAdmin备份整个magento的数据库。备份数据并且存为.SQL.
二、接着打开你的备份文件(.SQL),查找并且替换所有的 “www.youdomain.com” 到“www.newsite.com”. 必须在导入数据之前完成,不然新的MAGENTO将会全部瘫痪。
三、 接着别关闭你的备份文件(.SQL),还有重要一步就是必须强制关闭相关的“数据库关键字的关系”。
请拷贝下面代码放在你的SQL代码的顶部:
SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT;
SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS;
SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION;
SET NAMES utf8;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO';
SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0;
接着将下面的代码放在你的SQL代码的底部:
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT;
SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS;
SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION;
SET SQL_NOTES=@OLD_SQL_NOTES;
四、接下来,保存后压缩你的数据库(.SQL)文件,结尾为ZIP格式。因为我的原SQL文件大约8MB,但是压缩之后只有500KB,这样可 以大大加速上传的时间。记住,请用PHPMYADMIN上传。如果数据库比较大,你可以修改服务器运行时间。
五、把原网站所以文件拷贝到你要迁移的服务器上。
六、现在你需要打开htdocs/app/etc/local.xml并且修改其中的数据库连接到新服务器的数据库(对应www.newsite.com).保存你的修改。现在你的magento应该可以工作了。
七、最后还有一样事情你需要做,那就是修改 .htaccess文件. 如果你迁移是从一个服务器到另外一个服务器,而且所有的绝对路径是相同的,你不需要做任何事情。
但是如果你是从子文件夹http://www.youdomain.com/store/移动出来,你需要修改.htaccess 中 “RewriteBase/magento/” 部分。并且搜索替换SQL中相关的部分,例如“http://www.youdomain.com/store”换成“http: //www.newsite.com/” 。
- 安装结束后,进入后台去刷新下缓存和索引管理。
- 在前台检查是否有异样。如果某些图片显示不正常,检查是否使用了固定的链接,因为域名更换,引起图片无效。
- 如果修改了域名, 则还需要修改magento数据库,core_config_data表中的path为web/unsecure/base_url和web /secure/base_url的内容,为你网站的新域名,注意域名后面的“/”。更换网站完整域名+/ http://www.abc.com/
- 登录进入Magento后台, 进入system 的Cache management和index management刷新一下缓存, 并且重建索引.
注意:
如果恢复SQL的过程中出现如下错误:
Mysql查询错误
查询语句:DROP TABLE IF EXISTS `mg_admin_role`
错误信息:Cannot delete or update a parent row: a foreign key constraint fails
就是因为MySQL外键约束导致mysql还原出错,可以在
在恢复数据之前运行下面语句,取消外键检查
SET FOREIGN_KEY_CHECKS = 0;
恢复之后再运行:
SET FOREIGN_KEY_CHECKS = 1;
即可。
在新空间创建新的数据库,导入备份的数据文件。如果导不进去的是因为magento的数据库使用了外键约束,通过phpmyadmin导入的时候会报错,在导出的sql文件上加一行
1 | SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; |