侧边栏壁纸
博主头像
琉璃红梅 博主等级

琉璃世界,白雪红梅。

  • 累计撰写 44 篇文章
  • 累计创建 90 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Halo系列-Halo博客部署

雪穗
2023-08-28 / 0 评论 / 0 点赞 / 32 阅读 / 0 字
温馨提示:
本文最后更新于39天前,若内容或图片失效,请留言反馈。 若部分素材不小心影响到您的利益,请联系我删除。

本文主要内容是关于如何用Halo搭建自己的博客,并对了搭建博客前需要的准备工作进行了简要 的概述,如果需要更加详细的流程可以在谷歌或者百度进行相关内容的检索。

1.博客搭建基础

1.1 博客的分类

博客分为两种,一种为静态博客,一种为动态博客,所谓静态和动态主要区别在于是否依赖自己的服务器或者数据库,一般来说静态博客是通过Github或者Gitee等代码托管平台的Github Pages与Gitee Pages实现在网络上的访问,而动态博客则是基于自己的服务器借助像WordPress、TypeCho等动态博客程序进行部署。下面说一下静态博客和动态博客的优缺点,正如动静是可以相互转换的,它们优缺点不是绝对的可以通过结合其它技术优化各自的不足之处,比如通过套CDN静态博客也可以实现高速访问,白嫖数据库实现在线的文章的增删改,建议新手特别是小白新手从静态博客开始折腾,毕竟动态博客需要自己购买服务器,本篇文章则是关于如何基于Halo搭建属于自己的博客。

下面从个人角度再简述一下两者的区别,供初次搭建的小伙伴参考,

静态博客:

优点:

  1. 不依赖于自建的服务器,所以不需要自己购买服务器,可以“零元购”

  2. 可以不需要购买域名

  3. 可以依赖第三方平台实现自定义域名访问(如果需要的话)

缺点:

  1. 访问速度一般较慢

  2. 当发布的文章数越来越多时,每次提交部署就会耗费比较长的时间

  3. 文章的增删改需要在自己的电脑上(更确切一点是获取授权的电脑)

  4. 文件和图片大小存储在这些代码托管平台上一般都会受到限制

动态博客:

优点:

  1. 可以在不同的设备进行在线的文章增删改

  2. 实现多用户比较容易

  3. 自由度比较高,可以通过docker搭建部署各种应用

  4. 访问速度和带宽一般来说要高于静态博客

缺点:

  1. 需要服务器加域名,所以成本高于静态博客

  2. 受到攻击的可能性更大一些

我猜有人肯定会问,在知乎、博客园等平台写博客岂不美哉,何必本末倒置,大费周折自己搭建,毕竟博客在于内容而非载体,不得不承认搭建博客确实会浪费些时间,特别是初次搭建的小伙伴会把很多时间花在“美化”上,“美化”结束博客就被弃置了,陷入了“断更”。博客之博,乃内容之博,非样式之博,非广告之博。所以我更推荐能够长期更新的小伙伴搭建属于自己的博客平台,这样数据很大程度上掌握在自己手中,也更能发挥博客的作用,体现博文的价值。“租房”和“买房”你会选择哪种呢?无关好坏,关乎是否称心耳。

1.2 服务器选购

博客网站需要部署在服务器上,可以是物理主机,比如安装了Linux系统的电脑,而服务器和普通电脑的区别主要在于服务器可以24小时运行,性能和稳定性更高,这里我推荐使用vps,即虚拟云服务器(你可以理解为“远在天边”的物理主机),使用云服务器一般都会带一个IPv4地址,用于公网访问,这也是购买服务器的原因。

国内比较有名的云服务器厂商有腾讯云、阿里云、华为云,大厂的优势就是不会跑路,劣势就是价格比较贵(对老用户来说,对于新用户优惠力度还是比较大的)。

一般来说大陆云服务器的价格要高于非大陆服务器和国外服务器,根据你的博客受众所在区域进行选择,物理地址越近则访问速度越快,正所谓“近水楼台先得月”。

需要说明购买的大陆服务器需要进行备案,备案时间一般一周到两周不等,甚至更久,非大陆服务器则不需要备案,部署完毕即可上线。

1.3 域名绑定

通过服务器的公网IP+端口号就可以访问自己部署在服务器上的站点,但是IP+端口号既不美观也难以记忆,所以通过域名绑定IP,实现域名访问对应服务是最佳选择。

国内域名厂商主要有腾讯云、阿里云等,国外域名厂商有Namesilo,其中.top的域名算是比较便宜的了。

在博客网站上线之前需要先进行ICP备案,对于个人来讲一般需要准备个人的身份证明,域名厂商发放的域名证书等,提交申请之后会有相关人员进行电话核查,主要是询问是否为本人操作以及网站的功能用途,之后再进行一系列的审核。ICP备案之后就是公安备案,不过ICP备案之后就可以上线了。具体操作流程可以根据购买服务器厂商的提示进行,一般需要两周时间。

2.基于Halo搭建个人博客网站

2.1 Halo简介

强大的开源建站工具,个人认为与Wordpress、Typecho不分伯仲,三者孰好孰坏自难分辨,也不可分辨,但各自优缺点在互联网上随意查之便可见一斑,没有最好只有最合适。我用了Halo一段时间了,可以浅谈一下我的见解。

Halo的优点:

  1. docker部署,步骤简单,小白易上手

  2. 稳定更新和修复bug,如今保持一月一更

  3. 社区活跃

  4. 开发者耐心解答问题

  5. 可插拔的主题与插件,让使用者有更多的选择权

Halo的缺点:

  1. java开发,占用内存比较大,个人建议2G内存起步

  2. 相对于上面提到的两个建站工具,其主题与插件相对匮乏

  3. 编辑器和评论功能,如果仅仅书写文字则足矣,但是对于书写理工科类文章,个人认为还有很大进步空间

瑕不掩瑜,为什么选择Halo?一言以蔽之:国产、简单易上手、开发者稳定更新和修复bug,我愿称之为博客之光!

Halo官网:https://www.halo.run/

2.2 Halo的安装

安装前提:

1.备好服务器

2.已经安装好docker和docker compose,请参看我的博文 docker系列-docker与docker compose安装

安装建议:

1.将所有docker项目放在统一目录 /root/data/docker_data/ 下,方面后期管理与维护

2.添加SWAP虚拟内存,请参看我的博文 添加 SWAP 虚拟内存

2.2.1 创建安装目录

mkdir -p /root/data/docker_data/halo

2.2.2 创建docker-compose.yaml文件并上传至服务器

上传 docker-compose.yaml 文件到halo目录下,docker-compose.yaml 文件内容如下:

services:
  halo:
    image: halohub/halo:2.10.0                                     #后面的2.10.0为版本号,部署时可以根据最新版进行相应修改
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/root/.halo2
    ports:
      - "8090:8090"                                                #左边8090为halo服务的访问端口,可以根据端口占用情况进行修改
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=password1234                        #请自行修改密码
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=https://www.sqwfly.top/                 #你的博客域名
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin        #可以自行修改
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd     #可以自行修改或者登录博客后台修改

  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306"
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=password1234                            #请自行修改密码,与上方保持一致
      - MYSQL_DATABASE=halo

networks:
  halo_network:

2.2.3 Halo的部署

查看8090端口有没有被占用

lsof -i:8090

没有占用,进入halo目录下进行部署即可,若被占用可以更换为其它未被占用的端口,之后执行如下命令进行部署:

cd /root/data/docker_data/halo

docker compose up -d  

2.3 Halo的基本使用

自建博客须谨记:

1.根据博文更新频次定期备份博客文章,建议每周或每月进行备份!!!

2.每次更新Halo版本前务必进行文章的导出和博客的备份操作,如若不然,重要数据毁于一旦,岂不痛哉!!!

3.每次卸载Halo前务必进行文章的导出和博客的备份操作,如若不然,重要数据毁于一旦,岂不痛哉!!!

2.3.1 Halo的基础设置

2.3.2 Halo的导入导出

在工具栏可以找到备份功能,进行数据的备份,此外安装应用市场的 文章导入导出 插件,可以将文章以 Markdown 的形式导出。

2.4 Halo的升级与更新

# 方式一
cd /root/data/docker_data/halo

docker compose down --rmi all  # 停止容器运行并删除相关镜像

vim docker-compose.yml         # 修改halo的版本号为最新

docker compose up -d           # 重新运行容器

# 方式二
cd /root/data/docker_data/halo

docker compose down            # 停止容器运行

vim docker-compose.yml         # 修改halo的版本号为最新

docker compose pull            # 重新拉取镜像

docker compose up -d           # 重新运行容器

2.5 Halo的卸载

cd /root/data/docker_data/halo

docker compose down --rmi all           # 停止容器运行并删除相关镜像

cd ..

rm -rf /root/data/docker_data/halo      # 完全删除

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区