【个人博客搭建】基于Halo+docker compose的个人博客搭建教程,全程官方文档开路,简单易学,快来搭建一个属于自己的博客网站吧

博客信息介绍

框架选择:halo
部署方式:docker compose
云服务器信息:腾讯云2核2G3M带宽版本,操作系统选的CentOS
成品链接:https:blog.xieqin.online
操作难度:有手就行

成品展示

在这里插入图片描述

docker

因为halo的部署方式使用的是docker-compose的方式,所以服务器必须先安装docker。
如果你的服务器已经安装好了docker,你可以直接跳到halo的部署步骤去。如果你想先把之前的docker卸载掉或者你本身就没有安装docker,那么就可以根据我的步骤一步步来。(卸载的步骤这里不单独讲了,原谅我萨斯给!)

安装步骤

  1. 安装yum-utils包
sudo yum install -y yum-utils
  1. 设置存储库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装Docker引擎、容器和Docker Compose
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  1. 打完一把大乱斗,回来查看docker信息或者版本
sudo docker info
sudo docker --version
  1. 启动docker
sudo systemctl start docker
  1. 查看状态
sudo systemctl status docker
  1. 安装docker compose
sudo curl -L  "https://github.com/docker/compose/releases/download/v2.5.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 提供可执行权限
sudo chmod +x /usr/local/bin/docker-compose
  1. 验证安装
sudo docker-compose --version
  1. 到这里基本就安装结束了。可以切换成root用户后去掉sudo执行。比如下面部署halo就是切成root用户后开始操作的。切换的命令是su,输密码切换就行
su

部署halo

halo的部署在官方文档中有很多方式,基于docker的方式部署halo有两种,分别是docker和docker compose。官方文档建议学习和测试的时候使用docker方式部署,生产环境不建议使用。
综合考虑,我选择了docker compose的方式,文档我贴最文章最下面了。
其实两种方式都可以参考文档,我也是根据文档来的,基本是一步到位。
ps: 如果你只是想玩玩,可以选择部署到公司开发环境玩一下。如果你公司不允许,那么可以用自己公司电脑在windows环境使用docker desktop的方式练练手(我开始也是先用的这个方式)。如果这都不行,那么考虑一下用自己电脑使用docker desktop的方式练练手。如果还是不行,云服务厂商基本都用试用服务,去白嫖吧。云服务器学生党好像还福利,这里就不贴链接了,没给广告费。

安装步骤

  1. 创建halo文件夹
mkdir halo
  1. 创建docker-compose.yaml文件。我是在Windows建好文件后上传上去的,如果想直接在服务器创建也可以。在halo文件夹下创建。偷懒省略一下cd命令不过分吧。
vi docker-compose.yaml
  1. 按字母键 i 切换inseret模式。复制下面配置。这里复制的是官网未修改版本的mysql配置,有需要的可以自己复制过去,找到带注释的那三行,按自己需求改了就行。目前halo支持的数据库H2,PostgreSql,Mysql,MariaDB,官方提供的配置是mysql和PostgreSql.如果想改其他的可以根据官方文档修改。
version: "3"

services:
  halo:
    image: halohub/halo:2.15
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s          
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
  halodb:
    image: postgres:15.4
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:
  1. 修改完退出保存。左上角Esc键后shift+: 然后输入wq保存退出。退出后可以使用cat命令查看文件内容是否正确。
cat -n docker-compose.yaml
  1. 上面创建配置文件的命令都是很基础的命令用起来应该没啥难度。嫌麻烦的话可以直接windows环境创建好后直接文件传输丢到服务器就行。
  2. 启动docker-compose
docker-compose up -d
  1. docker logs -f 可以查看日志。再打一把大乱斗回来,一看已经搞定。
docker-compose logs -f
  1. 查看一下启动的容器。正常情况下是两个halo+mysql。不正常就看看日志。如果有问题就想办法解决问题。只要按步骤来,不出意外的话不会出意外。
docker ps
  1. 如果两个成功一个,失败一个,找出失败原因,改好以后重新启动docker-compose就行了

到这里halo也已经部署完了,浏览器访问http://ip:8091/console就可以进去了,第一次进入需要初始化,按步骤来就OK。关于halo的使用问题,可以去官方文档-用户指南学习怎么使用。剧透一下,可以去主题管理选择你想要的主题,甚至可以制定你自己想要的主题,功能多多喔。

需要注意的是防火墙的端口的问题,我的是腾讯云服务器,直接在控制台防火墙加上就好了。关于防火墙的问题,如果是学习测试,可以直接用docker desktop的部署方式,我会尽快写出来,可以在我的文章中找一下,找不到私信我。想正式使用的话基本都会买服务器,到时候可以直接在服务器厂商控制台解决这个问题。个人服务器下防火墙问题我目前没遇到,以后遇到或者有时间又恰好有想法,会学习一下并记录下来。

到上面为止,halo已经能用了,但是只能通过IP访问。如果不是想使用自己的域名访问的话,到这里其实结束了,这样的话建议直接使用docker desktop玩玩就好了。

域名解析

如果想通过域名访问,将域名解析好后,加上Nginx反向代理就可以直接域名访问了。
没有域名的话,买服务器的时候顺便注册一个域名,然后去备案就好了。建议先备好案,备好案以后可以按照教程一步到位。

解析步骤

  1. 找到控制台,找到域名,点击解析。我的是腾讯云,所以这里解析域名的操作是在腾讯云控制台操作的,阿里云华为云等操作应该大差不差。
    在这里插入图片描述

  2. 一般来说会默认有两个解析信息,一个是@,一个是www。如果你想在你的域名上多挂载几个网站。想我申请的域名是xieqin.online,但是我可能后面还会搞点小玩意,也挂在这个域名下,那就再解析一级域名出来。比如我现在博客的域名是blog.xieqin.online,把主机记录设置成blog就行(第三个解析记录)。
    在这里插入图片描述

  3. 这样域名就解析好了,如果你在之前部署halo的时候,填写的访问地址不是这个。可以改成这个后重新运行。步骤就是先停止halo,找到之前halo的docker-compose.yaml文件修改,启动

docker stop halo
vi halo/docker-compose.yaml
docker-compose up -d

注意:腾讯云域名备案的时候要求我把域名解析全部删掉,之后才能申请备案.所以建议先去备案。你也可以先全部弄好,然后备案的时候删掉解析,备案完成再加回来,这种方式行得通的话。
这个时候你的域名解析就已经弄好了,接下来搞个反向代理就完事了。

反向代理

目前halo给了两种方案,一种是Nginx Proxy Manager(npm),一种是Traefik。我选的是NPM,使用docker-compose安装,然后在web页面咔咔点就完事了。这里也是使用NPM进行反向代理的教程,基本都是按照文档来的。

操作步骤

  1. 创建npm文件夹
mkdir npm
  1. 创建docker-compose.yaml文件,准备复制配置信息。
vi docker-compose.yaml
  1. 复制信息。这些内容去下面的npm安装文档进去也能找到,直接复制就行,我的复制过来也没改动。
version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
      - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建
  1. 启动
docker-compose up -d
  1. 这个时候直接访问http://{服务器ip}:81,可以直接访问npm的web页面进行配置了。如果访问不了,检查一下IP和防火墙端口。这两个问题上面部署halo也讲过,不重复讲了

  2. 登录npm,默认的用户名:admin@example.com 密码:changeme,登录进去后会让你改密码的,别忘了哦。改完密码就可以配置代理了。
    在这里插入图片描述

  3. 点击proxy hosts,进去会展示一个列表,点击右边的Add Proxy Host即可。
    在这里插入图片描述

  4. 需要填的值有好几个,讲下关于Forward Hostname/IP的值,如果npm与halo部署在一个vps上可以通过下面命令查询

ip addr show docker0
  1. 关于这些需要填的空的值,解释如下:

Domain Names :填我们 Halo 网站的域名,首先记得做好 DNS 解析,把域名绑定到我们的服务器的 IP 上

Scheme :默认 http 即可,除非你有自签名证书

Forward Hostname/IP :填入服务器的 IP,或者 Docker 容器内部的 IP(如果 NPM 和 Halo 搭建在同一台服务器上的话)

Forward Port:填入 Halo 映射出的端口,这边默认是 8090

Cache Assets :缓存,可以选择打开

Block Common Exploits: 阻止常见的漏洞,可以选择打开

Websockets Support :WS 支持,可以选择打开

Access List: 这个是 NPM 自带的一个限制访问功能,这边我们不管,后续可以自行研究。

  1. 申请证书,直接在你保存的proxy host 中选到details那一栏的第三个ssl。点开后选中打开强制 SSL,统一服务,保存即可。另外几个功能如果感兴趣的可以研究一下(我不感兴趣)。

到这里反向代理就已经配置好了,访问你的域名,开启你的个人博客之旅吧!

最后,如果这篇文章有帮助到你的话,点个赞或者关注一下作者吧!感谢!

博客原文链接:https://blog.xieqin.online/archives/hello-halo
docker安装文档:https://docs.docker.com/engine/install/centos/
halo安装文档:https://docs.halo.run/getting-started/install/docker-compose
Nginx Proxy Manager安装文档:https://docs.halo.run/getting-started/install/other/nginxproxymanager

  • 36
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值