网站备案+服务器迁移数据
网站备案+服务器迁移数据
小码同学前言
趁着618活动,入手了一台腾讯云3年的服务器,去年618在华为云购买的一年服务器到期了,考虑到网站的迁移和备案问题,这次就选择了3年的机器,省时省力。
我买的是3年轻量 2核 2G 4M 50GB 300GB流量
,我需求不高,目前来说性能也够用,如果有需要更大的存储空间,可以考虑对象存储,腾讯云的对象存储也还可以,拿来当图床也是一个不错的选择。
真的强烈建议买3年的机器,非常划算了,不要浪费首单优惠啊,首单3年才396,现在腾讯云的服务器续费都非常贵,一年的续费就要507元了,买一年的话,虽然比较便宜,但我还是不推荐,如果你听我的买3年的机器,一年后你会来感谢我的。
如果你已经买过一次了,不是腾讯云首单用户了,腾讯云其实可以开启3个用户,这3个用户都可以享受首单优惠,你扫码登录腾讯云时,创建一个用户就好了,还是可以继续享受首单优惠。
如果你有需要,可以点我下面的邀请链接注册或者登录购买,这样我也能蹭点代金券(偷笑)
腾讯云618专场:https://curl.qcloud.com/4QKETzxt
续费一年507元,真tm贵
初始化服务器
本文主要是为了记录自己的迁移记录,方便日后有迁移需求,可以回头参考,本文章内容需要有一定Shell、服务器知识、Docker等基础知识。
初始化用户
登录服务器
腾讯云的服务器,有一个默认的lighthouse
用户,通过官网登录,不需要密码就可以远程。
修改root用户密码
Ubuntu系统初始化的root用户是没有密码,需要添加密码。
1 | sudo passwd root |
重复输入两个新密码即可。
创建新用户
这里创建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仓库,我们最好是使用一个用户来管理。
下面添加www
和git
用户
1 | sudo useradd git #创建的用户无密码、无主目录、没有指定shell版本 |
使用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 | sudo passwd git |
到这里,初始化用户就差不多做好了,你如果还需要其他用户,可以根据自己的情况创建。
初始化常用文件夹
回收站
1 | sudo mkdir /del |
在根目录创建一个del
目录,模拟回收站,删除文件时,使用mv xx.tar /del
来代替删除文件,防止删错文件
docker数据备份
1 | sudo mkdir /opt/dockerfile |
之后会从旧服务器迁移一些docker容器的数据过来,把文件存放在这里,可以当做备份
腾讯云备案
前言
我原本的网站是部署在华为云的,域名是阿里云的,现在华为云的服务器准备到期了,需要迁移一下网站了,将网站迁移到腾讯云上。
这样一来就需要在腾讯云重新办理接入备案了,我查了一下,如果已经在别的厂商备案了,重新接入别的厂商,不需要暂停网站服务。
提示:你如果之前备案的时候填写什么内容,这里就填写一模一样的内容。
开始备案
备案域名
打开我的备案
:https://console.cloud.tencent.com/beian/manage/material
输入要备案的域名
接入备案
输入我的备案域名后,可以看到我的网站已经备案了,但没有接入到腾讯云,我们点击接入备案。
自助备案
我们选择自助备案,如果你没有时间,并且比较着急,你可以尝试委托备案管家(博主没有使用过)。
备案省份
我户籍是广东湛江,现在在广州,我这里选择备案省份在广东省
,然后选择个人备案
。
验证身份
根据要求填写自己的身份信息,尽可能填写最详细的信息,如果不够详细,后面提交给腾讯云审核会给你打回来重新填写。
下面有个云资源:选择自己的服务器类型
,并且在后面选择服务器的IP地址
上传身份证成功
上传身份证时,使用微信扫描上传身份证。
准备材料
身份证原件、承诺书。
承诺书可以在点击下面的下载承诺书模板
下载。
承诺书下载好后,是下面这样的,签名和谐自己身份证信息,使用红油印一个红色指纹上去,一般打印店都有印模,没有的话,淘宝买几块钱也有了。
主体信息
接下来的信息非常重要
,一旦填错,就会被打回来重新修改。
填写信息
前面的部分根据自己的情况填写就好了。
通信地址:填写现在真是居住的地址(比如你在深圳工作,就填深圳的居住地址,具体到房间号)
通信地址:XX省XX市XX区
通信地址输入框:XX镇XX村XX小区XX楼XX号
备注:主办单位通讯地址已为最详细的地址
需要注意通信地址和输入框是不能有重复,如果有重复会被打回来。比如下面是重复的案例,会被大打回的例子:
通信地址:
广东省广州市从化区
通信地址输入框:
广东省广州市从化区XX镇XX村XX小区XX楼XX号
上面
广东省广州市从化区
这段重复了,需要去掉输入框重复的内容。
网站信息
网站信息
网站名称,我之前填写是小码同学
,现在也依然是填写小码同学。
网站名称不能出现博客、国家名字、交流、社区、钱
等等相关字眼。
云资源:服务器类型、服务器IP地址
域名:自己备案的域名
网站服务内容:博客/个人空间
网站语言:中文简体
备注:个人网站使用,主要用于计算机编程学习,方便自己探索编程的学习经验和方法。本网站是个人网站,不含有企业、单位等非个人网站的信息,若在核实中发现网站中含有企业、单位等信息,本人愿接受以虚假信息进行备案,注销网站,并将主体和域名加入黑名单的处罚
最后的一个备注,你可以根据的自己的情况适当修改,最后一段话,必须加上。
视频核身
域名实名截图
域名实名截图:到你域名购买厂商地方截图。
我这里的域名在阿里万网购买的,打开实名位置:控制台-->域名控制台-->域名列表-->hikki.site
补充材料上传
将上面打印的承诺书打印下来签名+身份证号+印指纹
拍照上传到这里就好了。
如果没有之前没有下载打印,这里也可以选择下载打印。
上传完就点击下一步
预览信息
自己查阅一下内容是否有问题,信息一定要具体,不要使用模糊不清的术语。
提交审核
可以仔细查看一下这两个提示。
提示
- 需要添加备案号在网站主页页脚
- 网站必须能够正常访问
因为我之前已经备案过了嘛,已经有了一个备案号了,依然是使用上一个备案号。
如果你是第一次备案,那你是看不见这个提示的,第一次备案是在备案成功后才给你下发备案号,到那时拿到备案号再去网站页脚添加备案号,如我博客页脚的备案号一样。
等待审核备案
按照我在华为云备案的时间,厂商审核2天左右,厂商审核完提交到管局审核就稍微慢一点,大概10天左右。
从提交到结束,一般15天内可以审核完。
提交备案后续
网站添加备案号
因为我已经在华为云那边已经备案过了,我的网站内容已经有备案过了,也在网站页脚添加过备案号,正常来说,是不需要更改了,这里可能有些同学有修改过,我这里再啰嗦一下。
每个省份添加的备案号的方式不一样
注意: 广东省网站标明主体备案号(例如:京ICP备*****号)。 其他省份网站底部应标明网站备案号(例如:京ICP备*****号-1),不可以标明主体备案号(例如:京ICP备*****号)。
参考资料
服务器软件安装
下面绝大部分安装教程都来源于我另一篇文章:https://blog.hikki.site/111f4f09.html
创建文件夹存储常用文件
用来存储软件安装包
1 | sudo mkdir /opt/file |
开启防火墙
我习惯使用UFW,下面使用UFW防火墙为例,Ubuntu自带UFW防火墙,不需要额外安装
开启防火墙
1 | sudo ufw enable |
开启常见的端口
1 | ufw allow 443 comment "SSL" |
开启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 | sed -i '$a\export JAVA_HOME=/bin/jvm/jdk-11.0.19 #这个是你解压的JDK文件路径\ |
加载环境变量
1 | source /etc/profile |
查看JDK版本
1 | java -version |
安装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数据我认为有两个方式:
- 复制docker-compose.yml文件内容+挂载数据到新服务器
(推荐)
- 打包整个容器成新镜像,将新镜像打包成tar压缩包复制到新服务器
下面演示这两种方式都演示一遍,方便你的选择。
方式一:docker-compose(推荐)
使用Docker 容器如果会产生存储数据,一直要做持久化操作,也就是挂载容器的数据到宿主机,这样后面迁移Docker服务就直接复制docker-compose和挂载的数据就可以完成迁移了。
缺点:不能打包容器产生的数据
优点:方便,直接复制docker-compose内容到其他docker-compose就可以运行,不需要繁琐的配置方法
适用范围: 需要快速部署,并且没有对容器内部修改过的
- 压缩数据并复制到新服务器
- 运行新服务器的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 | cd bitwarden # 进入解压目录 |
方式二:打包容器
缺点:步骤太复杂了,并且不能打包容器产生数据,比如Bitwarden产生的密码文件数据,打包容器是不会打包这些数据的。
优点:你对容器内部修改过的配置,打包容器成新镜像到其他服务器不需要重新修改镜像配置,减少重复配置。
适用范围:曾对容器修改过复杂的配置,或者不想更新容器版本,因为我们使用容器习惯习惯latest最新版,迁移的时候版本可能升级了,你为了稳定不想升级,可以自己打包容器。
- 停止docker容器
- 将容器打包成新镜像
- 将新镜像压缩成tar压缩包
- 将tar压缩包复制到新服务器
停止docker容器
1 | docker stop 容器名 |
将容器打包成新镜像
1 | docker commit 容器名 新镜像名 |
将新镜像压缩成tar压缩包
1 | docker save 镜像名 > 新压缩包名.tar |
如果你需要压缩到指定位置,可以使用以下命令:
docker save -o 存储路径/file.tar 新镜像名
将tar压缩包复制到新服务器
1 | scp 服务器A文件路径 用户名@IP地址:服务器B文件路径 |
此处usernam用户须有有对
/opt
目录写入权限,如果没有,请使用有权限的用户执行,比如root,或者添加/opt
文件夹所有权为username用户也是可以,实现命令:chown -R username /opt
本节内容参考我另一篇文章