2013年9月

由于原来的VPS在新加坡,面对国内日益缓慢的访问速度,于是在昨天购买了美帝的VPS,测试了下移动的速度非常快,联通的一般,电信的比较烂,好在我用了安全宝加速,网站电信用户的访问速度不至于太慢,于是昨晚折腾了一宿,终于搬家完毕,本次搬家最小程度的做到了对原来数据的改动,现在做个总结。

配置LAMP

新购买的VPS默认是没有LAMP环境的,有点VPS服务商可以一键启用,我的没有,所以只能自己搭建,我的系统是 CentOS 6,仅作参考。

1. 安装和启动Apache

打开终端输入以下命令开始自动安装Apache,按照提示输入“Y”,确认

sudo yum install httpd

安装完成后,启动Apache服务

sudo service httpd start

2.安装MySQL

同样在终端使用yum安装MySQL服务

sudo yum install mysql-server

安装完成后,启动MySQL服务

sudo service mysqld start

启动服务以后,可以配置MySQL的root用户密码等其他选项

sudo /usr/bin/mysql_secure_installation

会提示输入密码,初次安装没有密码,直接Enter进入,后面按照提示设置,一般会出现以下几种提示:

Remove anonymous users? [Y/n] y ... Success! Disallow root login remotely? [Y/n] y ... Success! Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reload privilege tables now? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL!

3.安装PHP

继续在终端中,输入以下命令开始安装PHP

sudo yum install php php-mysql

后面带的是PHP Modules参数,上面的命令表示:安装PHP同时安装PHP连接MySQL组件

4.设置服务自启动

设置httpd和mysqld随服务自启动

sudo chkconfig httpd on sudo chkconfig mysqld on

最后再重启所有服务

sudo service httpd restart sudo service mysqld restart

到此,LAMP全部安装完成

传递数据

1.打包原站数据

使用ssh登录原站,然后使用tar打包站点根目录下所有数据

tar -czvf data.tar.gz *

暂时放在原站根目录,以便新站直接wget到数据,但是要注意数据安全,文件名称最好是一个随机的没有规则的名字

2.导出数据库数据

使用以下命令导出WordPress数据库

mysqldump -u 数据库用户名  -p 数据库名 > 备份文件名.sql

输入上面的命令之后,提示你输入数据库密码,输入之后就会把你的数据库备份到一个文件中,将导出的备份数据文件也放到站点根目录,导出的数据也同样注意数据安全

3.新站接收数据

使用ssh登录新站,使用wget获取原站数据和数据库数据

wget http://你的域名/data.tar.gz wget http://你的域名/备份文件名.sql

以上操作最好也是在新站的根目录,那样就不需要在移动文件

4.删除原站数据

操作完成删除原站根目录的data数据和备份sql文件

恢复数据

1.恢复网站数据

新站现在已经获得了data.tar.gz 和 备份文件名.sql 数据,这时候就要恢复原站数据到新站根目录,使用tar再解压data.tar.gz

tar -xzvf data.tar.gz

如果命令正确,这时候在根目录就会完全恢复原站的网站数据

2.创建新用户和新数据库

虽然网站数据恢复了, 但还没有数据库数据,先使用mysql创建和原网站同名的数据库和用户,原站的数据库名称,数据库用户名,数据库密码都可以在网站根目录wp_config.php 中找到

/** The name of the database for WordPress */ define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpress'); /** MySQL database password */ define('DB_PASSWORD', 'password'); /** MySQL hostname */ define('DB_HOST', 'localhost'); /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', '');

登录MySQL

mysql -u dbuser -p

按照提示输入密码即可进入

使用 mysql 创建新的网站数据库,建议和原站数据库同名

mysql > create database wordpress;

使用 mysql 创建新用户,建议和原站数据库用户同名,最小程度减少对原站的改动

mysql > CREATE USER wordpress IDENTIFIED BY 'password';

给新用户授权

mysql > GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'password';

每当调整权限后,通常需要执行以下语句刷新权限:

mysql > FLUSH PRIVILEGES;

再离开mysql

mysql > exit

3.恢复数据库数据

恢复数据库这个地方有好几种方式,我用了第一种方式发现没有起作用,后来用了另一种方式,其中原因我不太清楚为什么,我来分别介绍下

第一种方式:这个是大多数网站推荐的方式

mysqldump -u 数据库用户名 -p 数据库名 < 备份文件名.sql

按照其他网站的说法这时候,就应该导入成功,进入数据库查看数据也能发现数据,但是我没有成功,我使用的是下面的方式

第二种方式:使用mysql语句导入数据库

同样先登录MySQL数据库

mysql -u dbuser -p

按照提示输入密码即可进入

mysql > use wordpress;

使用我们之前创建的数据库,然后开始执行导入语句

mysql > source 备份文件名.sql;

等待执行完成,然后你再查看数据库,这时候应该就已经有数据了

4.删除新站根目录数据

操作完成同样需要删除新站根目录的data数据和备份sql文件

切换域名解析

这时候,理论上通过IP地址就可以访问了,而网站内的域名指向还没有改,所以通过域名访问的还是原站,所以登录域名提供商网站,修改域名解析

注意事项

在搬家过程中,我遇到几个小问题:第一个就是换了新的服务器以后,新的Apache并没有原来服务器中的哪些配置,所以需要手动调整Apache配置,这个是必须要注意的,否则有可能会出现文章或者分类页面不能打开的局面;第二个就是原来的二级域名跳转的配置也需要重新配置,否则也无法生效。

 

参考资料

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-6 (LAMP的安装)

http://blog.wpjam.com/article/ssh-wordpress/  (原文中有不少错误,仅供参考)

http://www.imhdr.com/1158/ (MySQL相关的导入导出)

http://www.libuchao.com/2013/04/06/mysql-user-and-privilege (创建用户和授权)