完整的迁移你的网站/数据库

我写下这篇文章,不是为了教你如何给博客搬家,只是想让你知道,买了两个服务器的枯燥

上面副标题纯属跟风朱带劳力士,请不要在意

刚才在一个博客交流群里看到一位群友在把自己的博客搬到其他服务器时出了一点问题,跟他水了一会群以后突然想起我的博客将近一个月没更新了,干脆以此为题,写一篇博客搬家教程吧,
水平有限,如果有错误的地方,还请各位大佬指正

Step 1. 打包网站目录

tar -zcvf website.tar.gz /path/to/your_website

Step 2. 导出数据库

  • 导出整个数据库
mysqldump -u 用户名 -p 数据库名 > /path/to/导出的文件名
例:
mysqldump -u oopsky -p oopsky > oopsky.sql

下面是有关数据库导出(mysqldump方式)的一些扩展知识,更多操作可以执行mysqldump --helpman mysqldump自行查看

  • 导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
例:
mysqldump -u oopsky -p oopsky  friends > friends.sql
  • 导出一个数据库结构
mysqldump -u oopsky -p -d --add-drop-table oopsky > oopsky.sql
  • 可能用到的一些mysqldump参数的解释
-n, --no-create-db:禁止生成创建数据库语句;
-t, --no-create-info:禁止生成创建数据库库表语句;
-d, --no-data:  没有数据
--add-drop-table:在每个创建数据库表语句前添加删除数据库表的语句;

Step 3. 在新服务器建立相同软件环境

Step 4. 创建与原来相同的数据库

在终端执行下面命令使用root账户登陆到mysql

mysqldump -u 用户名 -p
例:
mysql -u root -p

然后执行以下命令创建数据库及用户


CREATE DATABASE mydatabase;

CREATE USER "username"@"localhost" IDENTIFIED BY "password";

GRANT ALL ON mydatabase.* TO "username"@"localhost";

FLUSH PRIVILEGES;
对于上述语句,这里简单解释一下:
1、create user 语句用于创建用户(及密码)
其中 usermane 是用户名,psaaword 是密码。
localhost 则表明是本地用户。
2、grant 语句用于对用户进行赋权
其中,all 表示所有的权限,包括对数据的增删改查
及更改数据库;
mydatabase 为具体某个数据库名,mydatabase.* 表示该数据库下所有的表(以及视图等);
username 则为刚才所建立的用户名。
3、flush 语句使更改生效。
这里创建的数据库名,用户名,用户密码必须和原数据库保持一致

Step 5. 导入数据

  • 可以使用SFTP从旧服务器获取先前导出的文件,不需要额外配置,具体方法请自行百度

使用use命令进入数据库(MySQL视图),然后用source命令导入先前导出的文件

use oopsky

source /var/oopsky.sql

也可以使用mysqldump命令导入数据,感兴趣的朋友可以自行搜索

Step 6. 把网站文件解压到新的位置

tar -zxvf website.tar.gz
cd website
mv ./* /path/to/your_website

检查一下网站(新)目录内文件属主,属组,还有权限,我这里属主属组都是www,(属主属组跟着服务器默认网站目录走),目录权限755,文件权限644

递归修改属主属组为www(视你自己实际情况而定)
chown -R www.www path/to/website
修改目录权限为755
find path -type d -exec chmod 755 {} path/to/website
修改文件权限为644
find path -type f -exec chmod 644 {} path/to/website

到此为止,网站就迁移完毕了
下面把你的域名解析到新服务器,然后打开浏览器看看吧


添加新评论

已有 2 条评论

waleslau waleslau 回复 @冬马的白色相簿
0 0

两个学生机