环境:需要将VPS-A上的wordpress镜像至VPS-B,保持一切不变.因为VPS-A使用域名www.freetstar.com 访问wordpress博客,VPS-B要求使用IP访问镜像出来的wordpress博客
VPS-A和VPS-B都采用LAMP环境,本文假设LAMP环境均已假设成功(其实VPS-A为我目前博客所在VPS,VPS-B为准备转移至的VPS)
VPS-A的IP为:184.82.33.230
VPS-B的IP为:202.99.96.12
两个VPS的web路径结构,mysql数据库路径结构一致,web都为/var/www,数据库都为/var/lib/mysql
第一步:备份VPS-A上的wordpress文件和数据库
tar vzvf 06-05-wp.tar.gz /var/www##/var/www为wordpress存放的目录
mysqldump -uroot –add-drop-table -p mysql > bak.mysql
##VPS-A上wordpress的数据库为mysql,将其导出,注意选项.还可以利用phpmyadmin来导出到本地,具体方法:here
然后scp 06-05-wp.tar.gz bak.mysql root@VPS-B:/var/www,将wordpress的文件和数据库文件拷贝至VPS-B之中
第二步:
说明:在第一步中可以看到,我VPS-A上数据库使用的是mysql,当初装wordpress时不懂事,直接使用的mysql-server自带的mysql数据库,冏
首先在VPS-B上安装wordpress, 非常要注意的是在1:wp-config.php里,指定的数据库名为mysql,用户名和密码最好和VPS-A上的一致 2:
VPS-B上的wordpress版本必须和VPS-A上的wordpress版本一致.
然后将06-05-wp.tar.gz解压出来覆盖当前的wordpress目录
第三步:
将VPS-B上的mysql数据库删除之后再重建一个mysql数据库
mysql>drop database mysql;
mysql>show databases; //查看是否删除成功
mysql>create database mysql;
退出mysql命令行,处理bak.sql,将数据库中的www.freetstar.com都替换为202.99.96.12,即用ip来进行访问,不使用域名
sed -i ‘s#www.freetstar.com#202.99.96.12#g’ bak.sql
然后导入数据到mysql数据库中
mysql -uroot -p mysql <bak.sql
第四步:
已经完成了全部的工作,测试一下
总结一下思路:
首先两个VPS环境LAMP环境最好一致,然后在目的VPS上安装好和源VPS一致的wordpress版本,然后用源VPS的wordpress文件覆盖目的VPS的wordpress路径,至于数据库,如果目的
VPS的目的数据库不为空,最好删除了再将源VPS的数据库文件导入
注意事项和一些问题:
1 之前VPS-B使用nginx做web服务时,未成功,提示500 server 错误,error.log提示redirect错误,应该是重定向问题,自己还搞不定,晚上请教下高手.
所以暂时使用lamp环境实验下自己这样做迁移的思路,结果很ok,可以使用ip访问
2 两个VPS之间mysql和php的版本最好不要差太多了,否则容易引起错误
发表在《
发表在《
发表在《
mysql>drop database mysql;
为什么不把wp单独建立一个库呢?
[回复]
freetstar
回复:
六月 15th, 2011 at 10:16 下午
历史原因,当初不太懂,直接用的mysql自己的mysql数据库…现在已经独立出来了:)
[回复]
速度不错。反映快很多。
[回复]
freetstar
回复:
六月 9th, 2011 at 8:04 下午
@dorole, 看来很给力阿
[回复]
换vps 啦?
[回复]
freetstar
回复:
六月 9th, 2011 at 7:52 下午
@dorole, 换了,感觉速度咋样
[回复]
额,这个可以作为新手教程来着。
[回复]
想要一键备份….包括文件和数据库…全部打包成一个php,再wget到新服务器…哈哈
[回复]
freetstar
回复:
六月 7th, 2011 at 8:45 下午
@凡尘飞扬, 怎么打包成一个php..不太懂
[回复]
凡尘飞扬
回复:
六月 7th, 2011 at 9:08 下午
@freetstar, 遍历当前目录下面所有文件,php使用用gzip压缩为记录为数据流,然后再添加一个自解压程序的文件头,文件头的程序负责查找压缩数据,解压缩….
[回复]
freetstar
回复:
六月 7th, 2011 at 9:10 下午
好牛x,回来写一个出来肯定很火的
[回复]
凡尘飞扬
回复:
六月 7th, 2011 at 9:20 下午
@凡尘飞扬, 嘿嘿,期待这货早日生出来.
[回复]
主程序可以scp,但是数据库什么的,我还是用phpmyadmin稳妥……
[回复]
freetstar
回复:
六月 7th, 2011 at 1:21 下午
@Mucid, 数据库我本来也是用phpmyadmin的,可是phpmyadmin上传时有最大容量限制,只能手动mysql导入
[回复]
Mucid
回复:
六月 7th, 2011 at 1:25 下午
@freetstar, 囧,原来如此,这个很好解决嘛。
sudo vi /etc/php5/apache2/php.ini
post_max_size = 8M > post_max_size = 20M
[回复]
freetstar
回复:
六月 7th, 2011 at 1:26 下午
@Mucid, 是阿,当初我也是这样的,改完之后nginx直接报错了.好冏..可能是内存free的太少了
[回复]
Mucid
回复:
六月 7th, 2011 at 1:28 下午
@freetstar, 见鬼了,我前端Nginx后端Apache都没问题。Nginx不是这样改的,Nginx是这样子:
sudo vi /etc/nginx/nginx.conf , 添加 client_max_body_size 50m;
[回复]
Mucid
回复:
六月 7th, 2011 at 1:29 下午
@freetstar, 也可能Nginx和PHP都要一起改。
[回复]
freetstar
回复:
六月 7th, 2011 at 1:34 下午
@Mucid, 可能是我只改的php导致的不ok吧.
[回复]
对数据库的命令操作了解不多,不过wp的config文件可以改的啊,只要保证数据库可以正常链接就可以了,所以数据库的名称不必要保持一致,比如说那些买虚拟空间的转移的话,数据库的名称不必要跟从前一样,只要提供给configure文件的用户名跟密码可以链接到指定的数据库名称即可。
[回复]
freetstar
回复:
六月 7th, 2011 at 9:33 上午
@奶牛, 对,数据库名称不需要一样,只要内容一样就ok了
configure是虚拟主机理的?
[回复]
奶牛
回复:
六月 7th, 2011 at 2:06 下午
@freetstar, 不是,我是说wp的config.php,从那个里面,对应起来就ok了~
[回复]
freetstar
回复:
六月 7th, 2011 at 2:08 下午
@奶牛, 好滴,明白
[回复]
[回复]
freetstar
回复:
六月 7th, 2011 at 9:33 上午
@婉秋, 其实就是tar过去然后再回来,只是一个顺序问题了
[回复]