背景

个人的阿里云服务器是五六年前做的 centos 7 的系统。
无论是基于安全性考虑还是实用性考虑,作为个人服务器这个系统都过于老旧了。
前几天尝试安装 python 库的时候发现 python 版本太低了。
想升级 python 发现 centos7 默认 repopython 包更新不了。
再加上多年使用安装过不少无用软件以及各类缓存占用了不少磁盘。
所以忍痛决定升级一下操作系统。
因为工作机的系统是 ubuntu 22.04,感觉对需要的软件支持都不错。所以这次从红帽系换到 debian 系了,也算是全新尝试。
好在之前把大多数服务都改成 docker 部署了,所以痛感不是很强。
以下为大体操作记录。

备份

因为使用的是阿里云的服务器。所以第一步就是通过快照功能备份了整块云盘。

之后为了方便使用,我备份了以下路径。
文件|说明
-|-
/root/.ssh |root用户的ssh信息
/home//.ssh |普通用户的ssh信息
/data/
_docker |各docker容器的挂载文件
/data/docker-compose |所有docker-compose文件
/server/* |各种docker image
/usr/local/nginx/conf |nginx配置文件
/usr/local/nginx/ca |nginx证书文件
/usr/local/nginx/html |nginx静态文件
/data/sh|各种脚本文件

上述列表中我放弃了 /home/*/src 路径,因为所有有意义的代码我在 git 是都有备份。
其余 nginx 的日志之类的文件我都放弃了,因为个人服务我觉得没必要保留历史日志了。

通过 scp 命令将上述文件转移到了其他服务器后,备份完毕。

更换系统

阿里云更换操作系统比较方便。只需要关机后就可以在页面上进行更换。

回退

操作过程中因为准备不完善,有些文件并未转移。加上时间原因没法立即初始化新服务器,于是中途曾回退过一次。
回退时,先将云盘快照封装成自定义镜像。然后关闭服务器后,更改系统时选择自定义镜像即可完成操作。

新系统部署

在第二次操作前,我就列下了详细的操作步骤。(主要是第一次的回退让我明白,年纪大了不得不把操作提前想好,不然脑子记不住所有细节。)
所以这次部署比较顺利。大体操作步骤如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#创建普通账户
useradd -m -s /bin/bash blog
useradd -m -s /bin/bash python
useradd -m -s /bin/bash go
useradd -m -s /bin/bash fu

#给登录用账户设置密码
passwd fu

#给登陆用账户设置sudo权限
chmod u+w /etc/sudoers.d/90-cloud-init-users
vim /etc/sudoers.d/90-cloud-init-users
chmod u-w /etc/sudoers.d/90-cloud-init-users


#安装docker及相关软件
apt update
apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt update
apt install -y docker-ce
apt install docker-compose
usermod -aG docker fu


#这里设置了bash的命令提示符,但是后来还是装了zsh
echo 'PS1="\[\033[01;36m\][13's \[\033[01;31m\]\u \[\033[01;36m\]in \[\033[01;34m\]\W\[\033[01;36m\] at \t] #\[\033[00m\] "' >> ~/.bashrc

#这里通过docker创建了一个网络。主要是因为我把反向代理服务器从nginx换成了caddy,并且通过docker部署了。所以这里预设一个网络方便以后使用
docker network create net-server


#安装zsh和oh-my-zsh
可以看这篇博客 https://www.fushisanlang.cn/article/8dec6b6c.html

通过以上操作基本就将环境初始化好了。之后通过docker-compose就可以将服务启动了。