寻古诗词网迁移服务器记录-程序旅途

该图片由Mirosław i Joanna BucholcPixabay上发布

2020年做了一个古诗词的网站,《我也撸了一个古诗词网站》这篇文章是完成时写的。时隔3年,服务器快到期了,趁着这几天没那么多事,准备迁移到新的服务器。

寻古诗词网的代码是基于 .net core 3.1 开发的,本次迁移同时把框架升级到了 .net6。原来的服务器是 CentOS 8,由于 .net6 不支持 CentOS 8,所以使用 CentOS 7。

安装环境

安装宝塔面板

执行命令

yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

参考:宝塔面板安装图文教程

安装 MySQL8.0、Redis 和 Nginx

登录宝塔面板,在“软件商店”中安装 MySQL 8.0,Redis和 Nginx

安装 .NET 6

执行命令

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm


sudo yum install aspnetcore-runtime-6.0 -y

安装 ElasticSearch 8.7.0

当前 ElasticSearch是8.8.2,之所以安装 8.7.0,是因为用到的拼音分词器最新版且可用的是8.7.0

ES需要Java环境,先安装 OpenJDK

sudo yum install java-11-openjdk.x86_64 -y

rpm方式安装

wget -b https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.7.0-x86_64.rpm
rpm -ivh elasticsearch-8.7.0-x86_64.rpm

启动 ES

systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

修改 jvm.options配置

vi /etc/elasticsearch/jvm.options

-Xms1g
-Xmx1g

修改 elasticsearch.yml 配置

vi /etc/elasticsearch/elasticsearch.yml

node.name: node-1
cluster.initial_master_nodes: ["node-1"]
network.host: 0.0.0.0
xpack.security.http.ssl:
  enabled: false

重启 ES

systemctl restart elasticsearch.service

修改 elastic 用户密码

/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i

安装 elasticsearch-analysis-ik 和 elasticsearch-analysis-pinyin

执行命令

/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.7.0/elasticsearch-analysis-ik-8.7.0.zip

/usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v8.7.0/elasticsearch-analysis-pinyin-8.7.0.zip

迁移数据库

在老的服务器上使用宝塔的备份数据库功能,然后将备份文件 scp 到新服务器,再导入即可。

重新索引数据

将原来的索引数据迁移过来,先尝试了两种办法。一是原来服务器上备份索引,再到新服务器上还原,可能是由于版本不一致的缘故,在新服务器上一直提示索引不存在。第二种,使用reindex迁移数据,但是使用拼音查询一直没有结果。最终决定还是使用以前写的索引数据的程序重新索引数据。

重新索引还遇到一个问题,参考《BulkAll halted after receiving failures that can not be retried from _bulk 的解决办法

部署程序

一切准备就绪后,部署升级到.NET6.0的程序就可以了。

最后

本文粗略的记录了一下迁移过程,有很多细节没有在文中体现,主要目的是记录一下大体流程,防止以后再迁移服务器花费太多时间。