记Halo搭建全历程

记Halo搭建全历程

记Halo搭建全历程

一直以来都想搭建一个属于自己的网站,但由于我对云服务器、域名这些东西不太熟悉,也不知道要做成什么形式,所以这个想法一直没有付诸实践。
机缘巧合之下,我有幸结识了咱们【Java技术交流群20】的大佬苏哥(友链xiaoFsu就是他)。得益于苏哥的启发和指导,我的想法终于开始生根发芽……

前期准备

话不多说,进入正题。要从头搭建一个个人网站,首先要准备好这两货:服务器域名

服务器

服务器可以选择自己买一台实体服务器,也可以选择购买阿里云、腾讯云等厂商的云服务器服务,这里不做赘述。我选择的是阿里云的云服务器(学生机),以学生身份购买价格非常优惠~

附上截图:

image

域名

域名我也选择在阿里云购买+备案,原本想选个.com后缀的,奈何心水的域名都被抢注了,于是最后选择了keikei.vip,看起来一点都不比.com差,还更加霸气了哈哈哈(其实是因为便宜)。

域名的备案比较麻烦,注意事项多、耗时长,这个步骤需要谨慎点。

开始搭建

服务器初始化之后,就可以开始愉快地搭建Halo了。搭建的步骤还是很简单的,Halo官方文档非常详细,照着上面的步骤来就行。

Halo提供几种部署方式,这里我选择了使用Docker部署。

服务器配置

更新软件包

sudo yum update -y

配置 Docker 运行环境

安装必要依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存
sudo yum makecache fast
安装 Docker
sudo yum install docker-ce docker-ce-cli containerd.io
启动 Docker 后台服务
sudo systemctl start docker
允许当前用户直接运行 docker 命令

需要将当前用户加入 docker 用户组。这样每次运行 docker 命令的时候,就不需要加 sudo。
sudo usermod -aG docker your_name

注意:设置成功之后需要重新登录才会生效。

(这一步我省略了,我直接用root用户操作)

镜像加速
# 新建 daemon.json 文件
sudo vim /etc/docker/daemon.json

将下面的配置复制进去即可:

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

注意:修改完配置文件之后需要执行 service docker restart 才可生效。

安装 Halo

自定义配置文件

# 下载配置文件到 ~/.halo 目录
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml

修改配置文件

# 使用 Vim 工具修改配置文件
vim ~/.halo/application.yaml

由于配置文件我基本没有改动,只修改了密码,所以这里略过。

拉取最新 Halo 镜像

sudo docker pull ruibaby/halo

创建容器并运行

docker run --rm -it -d --name halo -p 8090:8090  -v ~/.halo:/root/.halo ruibaby/halo

完成以上操作即可通过 ip:端口 访问了。

更新 Halo 版本

# 停止容器
sudo docker stop halo

# 拉取最新的 Halo 镜像
sudo docker pull ruibaby/halo

# 创建容器
docker run --rm -it -d --name halo -p 8090:8090  -v ~/.halo:/root/.halo ruibaby/halo

配置域名访问

因为我对Nginx比较熟悉,所以我选择了Nginx做反向代理。Halo官方文档上提供了Nginx的yum安装方式,但我个人比较喜欢Docker,所以我采用了Docker部署Nginx。

安装 Nginx

首先到Docker官网仓库找到Nginx的镜像地址,我选择的是1.19.2版本。

# 拉取Nginx 1.19.2
docker pull nginx:1.19.2
创建配置文件
sudo vim /home/data/docker_nginx/nginx.conf
修改配置文件

创建容器并运行
docker run --rm --name nginx -p 84:84 -p 80:80 -v /home/data/docker_nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/data/docker_nginx/logs:/var/log/nginx -v /home/data/docker_nginx/conf.d:/etc/nginx/conf.d -d nginx

由于我的域名备案还没通过,直接用80端口转发无法访问,所以开了一个84端口暂用。

我在配置Nginx反向代理这一步骤遇到了一个小插曲:当我配置为转发到本机IP127.0.0.1时,项目始终无法访问,报502错误,配置如下:

location / {
            proxy_set_header Host $proxy_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8090/;
}

排查了很长时间始终找不到问题根源,当我将其修改为本机内网IP地址时,访问却成功了。秉着打破砂锅问到底的精神,经过在百度查阅大量资料以及跟苏哥坚持不懈的探讨,我终于找到了答案:
由于Nginx是在Docker容器中跑的,如果配置文件配置的转发IP为127.0.0.1,那么这个地址会映射到Docker容器的IP地址,而我的Halo部署在宿主机上,这显然行不通,也解释了为什么配置为本机内网IP时可以成功访问。

碎碎念

至此,我的个人博客网站终于搭建成功了!我给它取名【Unravel】,这个名字来源于我很喜欢的一部动漫【东京喰种】的主题曲,六七年了始终是我心中的神作(指歌)。

整个建站的路程并不算艰难,但也学到了不少东西。这里必须得感谢苏哥的鼎力相助。

变强(秃)之路道阻且长,永远不要停下前进的脚步。

Respect All , Fear None

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.keikei.vip/archives/halo搭建日记