之前我的博客是直接通过java -jar halo.jar
来运行的,这种方式很麻烦,每次需要自己上传到,还要手动运行。实在是麻烦啊,所以这次我就用了 docker 部署。那么第一步就是要安装 Docker
首先说明一下的服务器环境:
这次安装 Docker 是按照官网的步骤一步一步操作,能安装成功,我这边的环境是能够安装成功的。
这里先附上 Centos 安装 Docker 的官方地址:https://docs.docker.com/install/linux/docker-ce/centos/
为了节省再打开一次网页的时间,下面我就讲所有的步骤贴出来
sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl stop docker
众所周知,如果要使用 Docker 的官方镜像源,那么下载一个 image
不知道要等到猴年马月,反正我是等不了的。为了节省我的时间,也为了节省在座各位的时间,还是聪明的使用一个国内镜像源吧。注意:本文使用的163的Docke镜像源。
后面使用Docker安装镜像就非常快了,敬请享用吧。
至于安装 Halo ,当然也是按照 官方文档来安装的,同样的,为了节省大家的时间,本文直接说步骤。
由于是转移 Halo, 所以需要在服务器的用户目录下新建一个 .halo
的文件夹。一般的命令是 mkdir ~/.halo
这一步,由于是转移博客所以,这个文件是之前就有的,我是从旧的服务器上面 直接传到 新的服务器的 .halo
目录下。
可以通过 ftp 工具转移,由于过于简单这里就不说了。我们来说说 SCP 命令。
scp root@服务器ip:/root/.halo/application.yml /root/.halo/application.yml
sudo docker pull ruibaby/halo
docker run --rm -it -d --name halo -p 8080:8080 -v ~/.halo:/root/.halo ruibaby/halo
application.yaml
配置。至此,我们的 Halo 就已经安装好了,其实还有一步就是更新 Halo,我还是贴一下命令:
# 停止容器sudo docker stop halo# 拉取最新的 Halo 镜像sudo docker pull ruibaby/halo# 创建容器docker run --rm -it -d --name halo -p 8080:8080 -v ~/.halo:/root/.halo ruibaby/halo
Halo 博客推荐使用 H2 数据库,但是爱捣鼓的我,怎么能满足一个H2 呢?于是我果断的使用了 MySQL。
安装 MySQL 我已经有了一篇文章,各位直接看已经写了的这篇文章。
通过这篇文章也说了如何迁移数据库
在上面给出的文章中,我详细讲了 如何迁移 Docker 中的MySQL数据库,也就是下面的步骤:
# 导出数据库称为一个 sqldocker exec -it mysql-dev mysqldump -uroot -p123456 halodb > /opt/sql_bak/halodb.sql# 将需要执行的sql cp 到目标容器,也就是下面:mysql-dev docker cp /opt/sql_bak/halodb.sql mysql-dev:/opt/halodb.sql # 进入目标容器docker exec -it mysql-dev /bin/bash# 登陆mysqlmysql -uroot -p123456# 创建数据库create database halodb;# 使用 halodbuse halodb;# 执行 sqlsource /opt/halodb.sql
既然这里要使用MySQL,而上文配置的application.yml
中的数据库连接却是使用的H2
数据库,那么这里就需要修改application.yml
中的数据库连接。
上图中的配置其实和官网的差不太多,我们需要修改的只有url、username、password
这三个属性,只要更具实际情况修改就可以了。
spring: datasource: type: com.zaxxer.hikari.HikariDataSource # MySQL 配置,如果你需要使用 H2Database,请注释掉该配置并取消注释上方 H2Database 的配置。 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://172.17.0.2:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: 123456
如果你的MySQL
和halo
都是使用Docker
部署的,那么spring.database.url
这个属性中的数据库 ip地址
必须要是容器的内部ip。
我们可以通过下面的指令获取容器的ip:
docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-prod
这一步比较简单,我们只需要将旧服务器~/.halo
文件夹下除logs/
文件夹以外的所有内容复制到新服务器的~/.halo
文件夹。
之前写过一篇配置 Nginx 的文章,因为都是 Unix 系统,所以这篇文章在 本次迁移也是适用的。
配置好了之后,就是需要配置 HTTPS 了。
我的 HTTPS 还是使用 Certbot配置的。
之前写了一篇文章, 使用Certbot升级Http到Https,但是这篇文章是在 Ubuntu 下安装,我今天使用的 Centos ,所以还是需要贴一下步骤的。
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
yum install certbot python2-certbot-nginx
sudo certbot --nginx
在这一步的时候,我遇到了报错:
开始报错是因为没有停止 nginx,于是我执行了 nginx -s stop
。但是还是报错,于是我 google 了。
不管是够报这个错,使用 certbot 都需要先停止 nginx
这个报错我在网上搜索到的结果是 urllib3
安装不正确,所以我重新安装了 urllib3
pip uninstall urllib3pip install urllib3
上面提示成功后,我又重新执行了certbot --nginx
,但是还是报错ImportError:No modelua named urllib3.exceptions
,于是我又执行了pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
。
可以看到,上面执行了pip install --upgrade --force-reinstall 'requests==2.6.0' urllib3
之后,提示安装成功了。
然后我执行了certbot --nginx
命令,但是还是报错:
这个错误的原因是找不到 nginx 命令,一直我创建了 nginx 的软连接。
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginxln -s /usr/local/nginx/conf/ /etc/nginx
最后一次,我直接执行certbot certonly --nginx
命令,然后终于成功了。
接下来就是在 nginx.conf
上配置 HTTPS了,在上文中我们就有讲述了,这里就不说了。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。