Tech Note · 2022-12-11 1

typecho博客服务器、数据迁移 –从ECS到轻量服务器(包含第一次安装记录)

typecho博客服务器、数据迁移 –从ECS到轻量服务器
背景: 阿里云提供了一个月的ECS免费试用活动,利用这台服务器搭建了自己的个人博客并把代码托管到了github,使用了两周感觉还不错。现在试用服务马上到期,准备为我的网站购买一台轻量级服务器,并且把这两周的数据迁移到新服务器。

看了一些教程,轻量服务器貌似不能用阿里云的快照功能一键迁移。所以本次纯手动迁移(重新搭建环境,使用之前的网站程序+数据),记录一下全过程。
网站环境: CentOS7,博客使用的是typecho框架,主题叫Nabo,语言php,数据库mysql
迁移思路:

  1. 购买新服务器,和旧服务器配置相同系统镜像
  2. 解析域名至新服务器地址
  3. 在新服务器安装配置LNMP环境
  4. 把原本网站程序打包拉到新服务器
  5. phpMyAdmin从旧服务器导出数据并导入新服务器

操作步骤:

1.购买新服务器,和旧服务器配置相同镜像系统

1. 新服务器选了阿里云轻量级服务器,系统镜像CentOS7.3,2核1G,月流量1tb,24块一个月  
2. 买好服务器后重置服务器密码  
3. 阿里云控制台,防火墙安全组里,放开端口21(给FTP),3306(给数据库),80(HTTP),443(HTTPS)

2.购买域名,解析至服务器地址

1. 迁移前是用IP做网址,这次迁移顺便买了一个域名  
2. 进入域名管理(我的是腾讯云):点击我的域名>解析>添加一个a记录,前面字段写@(代表没有任何www等前缀),ip处填服务器的公网IP

3.在新服务器安装配置LNMP环境(使用LNMP一键安装Nginx,php,mysql,并手动设置好配置文件。)

1. mobaxterm(Xshell等软件也可以)新建会话,登录到新服务器,执行如下命令准备环境:

yum -y update
yum -y install wget screen

2. 安装lnmp套装:windows打开lnmp.org并转到下载页面

1.复制下载url

http://soft.vpser.net/lnmp/lnmp1.9.tar.gz

2.回到mobaxterm, 使用wget下载:

wget http://soft.vpser.net/lnmp/lnmp1.9.tar.gz

3.授权并解压文件:

chmod +X lnmp1.9.tar.gz
tar -xzvf lnmp1.9.tar.gz

4.进入lnmp目录修改配置:

cd lnmp1.9
vim ./include/main.sh

删除这段:

if [ “${Bin}" != "y" ] && [[ "${DBSelect}” =~ ^5|[7-9]|10$ ]] && [ $(free -m | grep Mem | awk ‘{print $2}’) -le 1024 ]; then
echo “Memory less than 1GB, can’t install MySQL 8.0 or MairaDB 10.3+!”
exit 1
fi
然后保存退出(:wq)

5.执行程序安装脚本 :

./install.sh
个人选择参考:mysql 5.5.62 ,按指示设定密码, php选的7.2.34 , memory选的jemalloc

接下来时间有点长,等待安装完成 安装完成后:

Install lnmp takes 16 minutes.
Install lnmp V1.9 completed! enjoy it.
[root@izt4n2i79j9fk2hcdwzqwpz lnmp1.9]# exit

6.重新回到根目录添加一个虚拟主机:

lnmp vhost add

输入刚刚配置的域名sleepwalking.love并回车

Please enter domain(example: www.lnmp.org):sleepwalking.love
Your domain: sleepwalking.love

如果有其他域名指向同一个主机,继续填加

Enter more domain name(example: lnmp.org sub.lnmp.org): 8.219.233.112

domain list: sleepwalking.love 8.219.233.112  

设置目录,可保持不变,直接回车:

Please enter the directory for the domain: sleepwalking.love
Default directory: /home/wwwroot/sleepwalking.love: 直接回车
Virtual Host Directory: /home/wwwroot/sleepwalking.love

(PS:接下来一路Y, 需要输name的时候输typecho,密码自己设定)
设置伪静态相关:

Allow Rewrite rule? (y/n) y

输入typecho

Please enter the rewrite of programme,wordpress,discuzx,typecho,thinkphp,laravel,codeigniter,yii2,zblog rewrite was exist.
(Default rewrite: other): typecho
You choose rewrite: typecho

设置PHPpath :

Enable PHP Pathinfo? (y/n) y
Enable pathinfo.

设置log相关:

Allow access log? (y/n) y
Enter access log filename(Default:sleepwalking.love.log):
You access log filename: sleepwalking.love.log

支持IPV6

Enable IPv6? (y/n) y
Enabled IPv6 Support in current Virtualhost.

设置数据库:

Create database and MySQL user with same name (y/n) y
Enter current root password of Database (Password will not shown): 输入密码
OK, MySQL root password correct.
Enter database name: typecho
Your will create a database and MySQL user with same name: typecho
Please enter password for mysql user typecho: 输入密码
Your password: YOURPASSWORD

配置证书:

Add SSL Certificate (y/n) y
1: Use your own SSL Certificate and Key
2: Use Let’s Encrypt to create SSL Certificate and Key
3: Use BuyPass to create SSL Certificate and Key
4: Use ZeroSSL to create SSL Certificate and Key
Enter 1, 2, 3 or 4: 2
Please enter your email address: [email protected]
Email address [email protected] is valid.
Using 301 to Redirect HTTP to HTTPS? (y/n) y

3.修改配置

vim /usr/local/nginx/conf/vhost/(你设置的第一个域名).conf
注释掉include rewrite/typecho.conf;
保存退出

4.重启lnmp

lnmp restart

到这里网站的运行环境就配置好了~

4.把原本网站程序打包拉到新服务器

如果是第一次安装,直接到官网下载正式版然后通过ftp放到/home/wwwroot/这个文件夹下,授权755、解压、提取出build文件夹里的内容就好了
如果原本网站程序里有自定义修改了东西、上传过新文件或者配置了主题、插件等,建议还是打包原本的网站程序

以下是打包上传过程:

mobaxterm登录旧服务器:

cd /home/wwwroot
tar -zcvf backup.tar.gz ./(你的网站文件夹)

使用ftp 传到本地
使用ftp把本地文件传到新服务器的/home/wwwroot/

登录新服务器:

cd /home/wwwroot/(你的网站文件夹)

解压并调整文件位置

tar -zxvf backup.tar.gz

我这里解压后的文件夹是47.94.225.210

chmod 755 47.94.225.210
cp -a 47.94.225.210/. .
vim config.inc.php
这里我修改了username 和 password,也可以不修改

到这里网站程序就安装好了~

5.phpMyAdmin从旧服务器导出数据并导入新服务器

如果是第一次安装,直接输入域名.install.php就可以配置数据库等初始信息

如果原本有数据、只是迁移的话不需要再次install!

以下是博主的错误经验,可以跳过:

安装好后进入了http://8.219.233.112/install.php,像第一次初始化网站一样在第二步配置了账号密码  
打开http://8.219.233.112/admin  
-----------------------------------------------
!!后面发现没办法导入数据,只能把刚刚初始化的数据表都删掉:  
清空初始化的数据库
1. 找到删表语句  
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
FROM information_schema.tables
WHERE table_schema = 'typecho';
2. 得到很多提示命令,依次执行命令后数据库就清空了

1. 旧服务器导出数据:

打开旧博客地址/phpMyadmin网站,找到typecho表,点导出>快速导出,把文件下载到本地

2. 新服务器导入数据:

打开新博客地址/phpMyadmin网站,找到typecho表,点导入,把本地文件上传就好了

这时候就完全迁移好啦!恭喜!

插播:使用时遇到的问题以及解决思路:

1. 原网站用户用原密码无法登录的问题,这时候可以通过改DB临时登录后改密码,目前还不清楚是什么加密算法,在网上查到的一条处理办法:

 打开网站phpMyadmin,登录
 从数据库修改:如果数据库表头没有改的话,就找到下面的一张表: typecho_users 找到想要改密码的账号,把相对应“password”字段的内容直接改成 e10adc3949ba59abbe56e057f20f883e 这样,登陆密码就改成“123456”了。

 2. 忘记了服务器的mysql密码:

1.关闭mysql

service mysql stop

2.设置不检查权限重启mysql

这步我忘记了哈哈哈应该是重启命令加上skip-grant-table

3.用空密码方式使用root用户登录MySQL;

mysql -u root

4.修改密码

update user set Password =password(‘新密码‘) where User=’root’;

set password for ‘root’@’localhost’ = password (‘新密码‘);
或者:

MySQL> update MySQL.user set password=PASSWORD(‘新密码‘) where User=’root’;
MySQL> flush privileges;
MySQL> quit