本文主要内容是关于如何用Halo搭建自己的博客,并对了搭建博客前需要的准备工作进行了简要 的概述,如果需要更加详细的流程可以在谷歌或者百度进行相关内容的检索。
1.博客搭建基础
1.1 博客的分类
博客分为两种,一种为静态博客,一种为动态博客,所谓静态和动态主要区别在于是否依赖自己的服务器或者数据库,一般来说静态博客是通过Github或者Gitee等代码托管平台的Github Pages与Gitee Pages实现在网络上的访问,而动态博客则是基于自己的服务器借助像WordPress、TypeCho等动态博客程序进行部署。下面说一下静态博客和动态博客的优缺点,正如动静是可以相互转换的,它们优缺点不是绝对的可以通过结合其它技术优化各自的不足之处,比如通过套CDN静态博客也可以实现高速访问,白嫖数据库实现在线的文章的增删改,建议新手特别是小白新手从静态博客开始折腾,毕竟动态博客需要自己购买服务器,本篇文章则是关于如何基于Halo搭建属于自己的博客。
下面从个人角度再简述一下两者的区别,供初次搭建的小伙伴参考,
静态博客:
优点:
不依赖于自建的服务器,所以不需要自己购买服务器,可以“零元购”
可以不需要购买域名
可以依赖第三方平台实现自定义域名访问(如果需要的话)
缺点:
访问速度一般较慢
当发布的文章数越来越多时,每次提交部署就会耗费比较长的时间
文章的增删改需要在自己的电脑上(更确切一点是获取授权的电脑)
文件和图片大小存储在这些代码托管平台上一般都会受到限制
动态博客:
优点:
可以在不同的设备进行在线的文章增删改
实现多用户比较容易
自由度比较高,可以通过docker搭建部署各种应用
访问速度和带宽一般来说要高于静态博客
缺点:
需要服务器加域名,所以成本高于静态博客
受到攻击的可能性更大一些
我猜有人肯定会问,在知乎、博客园等平台写博客岂不美哉,何必本末倒置,大费周折自己搭建,毕竟博客在于内容而非载体,不得不承认搭建博客确实会浪费些时间,特别是初次搭建的小伙伴会把很多时间花在“美化”上,“美化”结束博客就被弃置了,陷入了“断更”。博客之博,乃内容之博,非样式之博,非广告之博。所以我更推荐能够长期更新的小伙伴搭建属于自己的博客平台,这样数据很大程度上掌握在自己手中,也更能发挥博客的作用,体现博文的价值。“租房”和“买房”你会选择哪种呢?无关好坏,关乎是否称心耳。
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的优点:
docker部署,步骤简单,小白易上手
稳定更新和修复bug,如今保持一月一更
社区活跃
开发者耐心解答问题
可插拔的主题与插件,让使用者有更多的选择权
Halo的缺点:
java开发,占用内存比较大,个人建议2G内存起步
相对于上面提到的两个建站工具,其主题与插件相对匮乏
编辑器和评论功能,如果仅仅书写文字则足矣,但是对于书写理工科类文章,个人认为还有很大进步空间
瑕不掩瑜,为什么选择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 # 完全删除
评论区