前言

趁着618活动,入手了一台腾讯云3年的服务器,去年618在华为云购买的一年服务器到期了,考虑到网站的迁移和备案问题,这次就选择了3年的机器,省时省力。

我买的是3年轻量 2核 2G 4M 50GB 300GB流量,我需求不高,目前来说性能也够用,如果有需要更大的存储空间,可以考虑对象存储,腾讯云的对象存储也还可以,拿来当图床也是一个不错的选择。

真的强烈建议买3年的机器,非常划算了,不要浪费首单优惠啊,首单3年才396,现在腾讯云的服务器续费都非常贵,一年的续费就要507元了,买一年的话,虽然比较便宜,但我还是不推荐,如果你听我的买3年的机器,一年后你会来感谢我的。

如果你已经买过一次了,不是腾讯云首单用户了,腾讯云其实可以开启3个用户,这3个用户都可以享受首单优惠,你扫码登录腾讯云时,创建一个用户就好了,还是可以继续享受首单优惠。

如果你有需要,可以点我下面的邀请链接注册或者登录购买,这样我也能蹭点代金券(偷笑)

腾讯云618专场:https://curl.qcloud.com/4QKETzxt

腾讯云618 夏日盛惠_腾讯云年中优惠活20230602-006

续费一年507元,真tm贵

老用户续费一年507元-20230602-860

初始化服务器

本文主要是为了记录自己的迁移记录,方便日后有迁移需求,可以回头参考,本文章内容需要有一定Shell、服务器知识、Docker等基础知识。

初始化用户

登录服务器

01-登录服务器-20230527-355

腾讯云的服务器,有一个默认的lighthouse用户,通过官网登录,不需要密码就可以远程。

02-登录-20230527-353

修改root用户密码

Ubuntu系统初始化的root用户是没有密码,需要添加密码。

1
sudo passwd root

重复输入两个新密码即可。

03-重置root用户密码-20230527-391

创建新用户

这里创建TestUsername用户为例。

1
sudo adduser TestUsername

使用adduser命令创建用户可以自动为创建的用户指定主目录、系统shell版本,会在创建时输入用户密码

添加用户权限

给TestUsername添加管理员权限,NOPASSWD:表示再使用sudo时不需要输入密码

1
sudo sed -i '33i TestUsername ALL=(ALL:ALL) NOPASSWD: ALL' /etc/sudoers

以上指令表示在/etc/sudoers文件中的32行后插入一行lilbai518 ALL=(ALL:ALL) NOPASSWD: ALL语句

允许root用户使用SSH(不建议)

不建议使用root用户直接远程服务器,使用上面的TestUsername就可以了,TestUsername用户有超级权限,只是使用麻烦一点点,需要加sudo,但相对安全一点。

1
sed -i '39i PermitRootLogin yes' /etc/ssh/sshd_config

以上指令表示在/etc/ssh/sshd_config文件中的38行后插入一行PermitRootLogin yes语句

添加其他用户

我们需要在服务器部署网站,或者使用服务器充当Git仓库,我们最好是使用一个用户来管理。

下面添加wwwgit用户

1
2
3
4
5
sudo useradd git #创建的用户无密码、无主目录、没有指定shell版本
sudo useradd www #创建的用户无密码、无主目录、没有指定shell版本
sudo mkdir /www # 创建一个文件夹存储web服务的资源
sudo chown -R www:www /www
sudo ls -l /

使用sudo ls -l /命令可以看到www文件夹所属归www用户所有。

使用useradd命令创建用户可以添加指定属性

  • -c:comment 指定一段注释性描述。
  • -d:目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  • -g:用户组 指定用户所属的用户组。
  • -G:用户组,用户组 指定用户所属的附加组。
  • -s:Shell文件 指定用户的登录Shell。
  • -u:用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

更多用户使用方式可以看菜鸟教程:https://www.runoob.com/linux/linux-user-manage.html

设置用户密码

1
2
sudo passwd git
sudo passwd www

04-修改用户密码-20230529-903

到这里,初始化用户就差不多做好了,你如果还需要其他用户,可以根据自己的情况创建。

初始化常用文件夹

回收站

1
sudo mkdir /del

在根目录创建一个del目录,模拟回收站,删除文件时,使用mv xx.tar /del来代替删除文件,防止删错文件

docker数据备份

1
sudo mkdir /opt/dockerfile

之后会从旧服务器迁移一些docker容器的数据过来,把文件存放在这里,可以当做备份

腾讯云备案

前言

我原本的网站是部署在华为云的,域名是阿里云的,现在华为云的服务器准备到期了,需要迁移一下网站了,将网站迁移到腾讯云上。

这样一来就需要在腾讯云重新办理接入备案了,我查了一下,如果已经在别的厂商备案了,重新接入别的厂商,不需要暂停网站服务。

提示:你如果之前备案的时候填写什么内容,这里就填写一模一样的内容。

开始备案

备案域名

打开我的备案https://console.cloud.tencent.com/beian/manage/material

输入要备案的域名

01-输入域名- 20230528-089

接入备案

输入我的备案域名后,可以看到我的网站已经备案了,但没有接入到腾讯云,我们点击接入备案。

02-接入腾讯云-20230528-733

自助备案

我们选择自助备案,如果你没有时间,并且比较着急,你可以尝试委托备案管家(博主没有使用过)。

03-开始备案-20230528-598

备案省份

我户籍是广东湛江,现在在广州,我这里选择备案省份在广东省,然后选择个人备案

04-选择备案省份-20230528-386

验证身份

根据要求填写自己的身份信息,尽可能填写最详细的信息,如果不够详细,后面提交给腾讯云审核会给你打回来重新填写。

下面有个云资源:选择自己的服务器类型,并且在后面选择服务器的IP地址

05-验证身份证-20230528-891

上传身份证成功

上传身份证时,使用微信扫描上传身份证。

06-手机端上传身份证-

准备材料

身份证原件、承诺书。

承诺书可以在点击下面的下载承诺书模板下载。

07-20230528-736

承诺书下载好后,是下面这样的,签名和谐自己身份证信息,使用红油印一个红色指纹上去,一般打印店都有印模,没有的话,淘宝买几块钱也有了。

07-01-承诺书-20230529-895

主体信息

接下来的信息非常重要,一旦填错,就会被打回来重新修改。

填写信息

前面的部分根据自己的情况填写就好了。

通信地址:填写现在真是居住的地址(比如你在深圳工作,就填深圳的居住地址,具体到房间号)

通信地址:XX省XX市XX区

通信地址输入框:XX镇XX村XX小区XX楼XX号

备注:主办单位通讯地址已为最详细的地址

需要注意通信地址和输入框是不能有重复,如果有重复会被打回来。比如下面是重复的案例,会被大打回的例子:

通信地址:广东省广州市从化区

通信地址输入框:广东省广州市从化区XX镇XX村XX小区XX楼XX号

上面广东省广州市从化区这段重复了,需要去掉输入框重复的内容。

08-主体信息-20230528-061

网站信息

网站信息

网站名称,我之前填写是小码同学,现在也依然是填写小码同学。

网站名称不能出现博客、国家名字、交流、社区、钱等等相关字眼。

云资源:服务器类型、服务器IP地址

域名:自己备案的域名

网站服务内容:博客/个人空间

网站语言:中文简体

备注:个人网站使用,主要用于计算机编程学习,方便自己探索编程的学习经验和方法。本网站是个人网站,不含有企业、单位等非个人网站的信息,若在核实中发现网站中含有企业、单位等信息,本人愿接受以虚假信息进行备案,注销网站,并将主体和域名加入黑名单的处罚

最后的一个备注,你可以根据的自己的情况适当修改,最后一段话,必须加上。

09-网站信息填写-20230528-473

视频核身

10-手机端视频核身-

域名实名截图

域名实名截图:到你域名购买厂商地方截图。

我这里的域名在阿里万网购买的,打开实名位置:控制台-->域名控制台-->域名列表-->hikki.site

10-网站信息-20230528-903

补充材料上传

将上面打印的承诺书打印下来签名+身份证号+印指纹拍照上传到这里就好了。

如果没有之前没有下载打印,这里也可以选择下载打印。

11-签名-20230528-268

上传完就点击下一步

12-补充材料-20230528-816

预览信息

自己查阅一下内容是否有问题,信息一定要具体,不要使用模糊不清的术语。

13-信息预览-20230528-549

提交审核

可以仔细查看一下这两个提示。

提示

  1. 需要添加备案号在网站主页页脚
  2. 网站必须能够正常访问

14-提交审核-20230528-504

因为我之前已经备案过了嘛,已经有了一个备案号了,依然是使用上一个备案号。

如果你是第一次备案,那你是看不见这个提示的,第一次备案是在备案成功后才给你下发备案号,到那时拿到备案号再去网站页脚添加备案号,如我博客页脚的备案号一样。

14-01-备案号-20230602-321

等待审核备案

按照我在华为云备案的时间,厂商审核2天左右,厂商审核完提交到管局审核就稍微慢一点,大概10天左右。

从提交到结束,一般15天内可以审核完。

15-等待腾讯云审核-我的备案 - 网站备案 - 控制台 — 20230528-995

提交备案后续

网站添加备案号

因为我已经在华为云那边已经备案过了,我的网站内容已经有备案过了,也在网站页脚添加过备案号,正常来说,是不需要更改了,这里可能有些同学有修改过,我这里再啰嗦一下。

每个省份添加的备案号的方式不一样

注意: 广东省网站标明主体备案号(例如:京ICP备*****号)。 其他省份网站底部应标明网站备案号(例如:京ICP备*****号-1),不可以标明主体备案号(例如:京ICP备*****号)。

参考资料

接入备案

网站信息

备案成功后处理说明

备案视频教程

服务器软件安装

下面绝大部分安装教程都来源于我另一篇文章:https://blog.hikki.site/111f4f09.html

创建文件夹存储常用文件

用来存储软件安装包

1
sudo mkdir /opt/file

开启防火墙

我习惯使用UFW,下面使用UFW防火墙为例,Ubuntu自带UFW防火墙,不需要额外安装

开启防火墙

1
sudo ufw enable

开启常见的端口

1
2
ufw allow 443 comment "SSL"
ufw allow 80 comment "HTTP"

开启vim行号

~:表示当前的用户根目录

如果你用户根目录不存在.vimrc文件,请新建后再使用以下命令添加:set nu

1
sed -i '1i:set nu' ~/.vimrc

安装JDK11

进入file目录(可选)

1
cd /opt/file

下面全部操作都在/opt/file目录下操作,你也可以选择在其他目录进行。

下载JDK11

1
sudo wget -P /opt/file -O jdk-11.0.19_linux-x64_bin.tar https://download.oracle.com/otn/java/jdk/11.0.19+9/56a39267b45342398c37a72026d961ab/jdk-11.0.19_linux-x64_bin.tar.gz?AuthParam=1685293276_d5e2ef0f7172f346a89a348c9e17cdbe
  • -P:指定下载文件存储路径

  • -O:下载后指定存储文件名

创建jdk存储位置

我习惯将JDK存储在/bin/jvm下面

1
sudo mkdir -p /bin/jvm

解压JDK

1
tar -zxvf jdk-11.0.19_linux-x64_bin.tar -C /bin/jvm/

添加环境变量

1
2
3
sed -i '$a\export JAVA_HOME=/bin/jvm/jdk-11.0.19 #这个是你解压的JDK文件路径\
export PATH=$PATH:${JAVA_HOME}/bin\
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar' /etc/profile

加载环境变量

1
source /etc/profile

查看JDK版本

1
2
3
4
5
java -version
# 出现效果:
java version "11.0.19" 2023-04-18 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.19+9-LTS-224)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.19+9-LTS-224, mixed mode)

安装Nginx

安装Nginx必须在Root用户下安装,不然在make安装一步会报错。

下载Nginx

1
wget -P /opt/file http://nginx.org/download/nginx-1.24.0.tar.gz

更新包

1
apt-get update

安装依赖

1
apt -y install gcc make libssl-dev zlib1g-dev libgd-dev libgeoip-dev libpcre2-dev libpcre3-dev

安装依赖时,可能会出现一个粉红色的对话框,内容大概意思是询问你是否重新启动使用已过时库的守护程序,并给出了您可以重新启动的服务列表,我们按tab键跳到OK回车选择默认就好了。

这个对话框通常会在升级已安装的软件包时出现,因为升级可能会导致守护程序使用了新版本的库,但是旧版本的库仍在运行并可能会导致问题。如果您选择重启这些服务,它们将会停止并重新启动,并且将使用当前系统中的最新库。

在这个对话框中,您可以使用方向键移动光标,使用空格键来选中或取消选中服务。默认情况下,所有建议重新启动的服务都被选中。如果您不确定是否需要重启某个服务,请保留其未选中状态,并单击“OK”按钮以继续进行操作。

安装Nginx

1. 进入Nginx解压目录

1
cd /opt/file/

2. 编译Nginx

1
./configure --prefix=/usr/local/nginx --with-http_ssl_module

3. 安装Nginx

1
make && make install

安装Docker

安装几个依赖包,让apt可以支持HTTPS

1
sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

将官方Docker库的GPG公钥添加到系统中

1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

将Docker库添加到APT里

1
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

再次更新现有包列表

1
sudo apt update

安装Docker

1
apt -y install docker-ce docker-ce-cli containerd.io

安装docker-compose

下载docker-compose

1
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose

下载过程出错

如果出现以下错误,是标识连接失败的意思,重新下载即可,下载地址在GitHub上面,国内下载是稍微有点问题。

1
curl: (35) TCP connection reset by peer

添加可执行权限

1
sudo chmod +x /usr/bin/docker-compose

查看版本

1
docker-compose --version

迁移服务器及数据

我的服务器运行的服务大多数使用Docker来运行,因为一开始就想到,买的一年服务器,到期后需要考虑数据迁移的问题,而最好的方法就是使用Docker容器,迁移非常方便,部署快速,极大减少迁移时间,下面开始迁移数据。

迁移Docker数据我认为有两个方式:

  1. 复制docker-compose.yml文件内容+挂载数据到新服务器(推荐)
  2. 打包整个容器成新镜像,将新镜像打包成tar压缩包复制到新服务器

下面演示这两种方式都演示一遍,方便你的选择。

方式一:docker-compose(推荐)

使用Docker 容器如果会产生存储数据,一直要做持久化操作,也就是挂载容器的数据到宿主机,这样后面迁移Docker服务就直接复制docker-compose和挂载的数据就可以完成迁移了。

缺点:不能打包容器产生的数据

优点:方便,直接复制docker-compose内容到其他docker-compose就可以运行,不需要繁琐的配置方法

适用范围: 需要快速部署,并且没有对容器内部修改过的

  1. 压缩数据并复制到新服务器
  2. 运行新服务器的docker服务

压缩挂载数据并复制到新服务器

我们的docker-compose.yml都在bitwarden文件夹里面了,数据也在里面,所以我们可以将整个压缩包打包发送到新服务器上面,这样就不用分次复制数据和docker-compose.yml了。

1. 压缩文件夹

1
tar cvf bitwarden.tar ./bitwarden

压缩bitwarden文件夹保存到当前目录下,压缩包名为bitwarden.tar

2. 传输文件

复制刚刚压缩好的压缩包到新服务器上

1
scp ./bitwarden.tar username@192.168.2.5:/home/docker/

运行新服务器的docker服务

1. 解压压缩包

1
tar xvf ./bitwarden.tar

2. 启动docker服务

1
2
cd bitwarden # 进入解压目录
docker-compose up -d # 运行docker-compose

方式二:打包容器

缺点:步骤太复杂了,并且不能打包容器产生数据,比如Bitwarden产生的密码文件数据,打包容器是不会打包这些数据的。

优点:你对容器内部修改过的配置,打包容器成新镜像到其他服务器不需要重新修改镜像配置,减少重复配置。

适用范围:曾对容器修改过复杂的配置,或者不想更新容器版本,因为我们使用容器习惯习惯latest最新版,迁移的时候版本可能升级了,你为了稳定不想升级,可以自己打包容器。

  1. 停止docker容器
  2. 将容器打包成新镜像
  3. 将新镜像压缩成tar压缩包
  4. 将tar压缩包复制到新服务器

停止docker容器

1
docker stop 容器名

将容器打包成新镜像

1
docker commit 容器名 新镜像名

将新镜像压缩成tar压缩包

1
docker save 镜像名 > 新压缩包名.tar

如果你需要压缩到指定位置,可以使用以下命令:

docker save -o 存储路径/file.tar 新镜像名

将tar压缩包复制到新服务器

1
2
scp 服务器A文件路径 用户名@IP地址:服务器B文件路径
scp ./new-image.tar username@46.136.154.163:/opt/new-image.tar

此处usernam用户须有有对/opt目录写入权限,如果没有,请使用有权限的用户执行,比如root,或者添加/opt文件夹所有权为username用户也是可以,实现命令:chown -R username /opt

本节内容参考我另一篇文章

迁移Docker容器