热心市民の知识库

在Linux完整迁移网站&数据库

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

到此为止,网站就迁移完毕了...