写在前面
因服务器删档原因,去年文章重新发布。
本站是学习自咕咕大佬技术分享文章,在其文章指点下初步建站完成。写在这里的建站分享,也会大部分摘抄自咕咕大佬的相关文章。如有侵权,还请谅解,一定会立即下架!
正文
1.建站背景
身为一个前端工程师,一直想有自己的博客网站,并且在自己的技术下,整得风骚有趣一点,但是局限于后端技术以及懒惰程度,一直没有实现。之前用过WordPress,奈何太过冗杂,服务器差点建站起来都会有点卡,索性服务器空闲,也弃之不用。
最近看油管,刷到了咕咕大佬的Halo的建站视频,感觉还不错,所以学习大佬再一次建站成功。
本站使用的是Halo2.x版本,于文章写作当前最新版本是2.2.
具体的工具介绍,可以去官网查阅,本次知识重点介绍建站过程。
2.项目展示
官网地址:https://halo.run/
GitHub地址:https://github.com/halo-dev/halo
Demo地址:https://demo.halo.run
Demo后台:https://demo.halo.run/console
用户名:demo
密码:P@ssw0rd123..
3.搭建环境
服务器:Oracle cloud的4c24g的arm机器,机房米兰。(如果新手朋友学习使用可以Vultr,按小时收费,而且有活动注册送费用,完全可以白嫖练手。或者购买 Racknerd 的服务器,最低一年不到 100 块,其中有款2022年黑五套餐还不错,可以看下咕咕大佬的推荐点击查看)
系统:Debian 10 (其他系统也可以)
【非必需但建议】域名一枚,并做好解析到服务器上(后续添加域名相关文章)
4.开始部署
4.1安装NPM
参考《NPM搭建》一章
4.2安装Halo
4.2.1创建安装目录(同NPM)
mkdir -p /root/data/docker_data/halo
cd /root/data/docker_data/halo
vim docker-compose.yml
英文输入法下,按 i
version: "3"
services:
halo:
image: registry.fit2cloud.com/halo/halo:2.20
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./:/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:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=Qww675162367@
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
halodb:
image: mysql:8.1.0
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
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=Qww675162367@
- MYSQL_DATABASE=halo
networks:
halo_network:
注意:
halo.external-url=http://localhost:8090/
,其中的http://localhost:8090/
需要更改为你的域名,如果你打算用的域名是abc.com也就是要改成--halo.external-url=https://abc.com
image: halohub/halo:2.4.0,其中“:2.4.0”是指定版本,安装时可去官网查询最新版本下载
初始化的超级管理员用户名 后台登录账号,现在不改,下来不能在更改。密码可以下来后台更改
--spring.r2dbc.password=o#DwN&JSa56
和- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
这里的密码,改动的话,需要同时改动。而且一定要改
,不然会
ports:"8090"
并没有如官方一样写成8090:8090,为的就是不在公网暴露halo数据库的端口,这样也能一定程度保障博客的安全。修改好之后,注意切换成英文输入法,然后按一下
esc
,然后:wq
保存退出。查看端口8090是否占用,方法同上,被占用了就修改一下端口,比如改成 8081,注意 docker 命令行里和防火墙都要改
4.2.2运行Halo
cd /root/data/docker_data/halo # 来到 dockercompose 文件所在的文件夹下
docker-compose up -d
此时可以通过ip+端口可以访问halo了,但是不太优雅。建议整一个域名,这样可以做成https,更安全也更正规。
而且 namesilo 上面 xyz 后缀的域名一年就 7 块钱,可以年抛。
namesilo 自带隐私保护,老乔一直在用这家,价格也是这些注册商里面比较低的,关键是他家不像其他家域名注册商,没有七七八八的套路!
域名购买教程可以学习波仔大佬这篇文章:查看教程
4.2.3更新Halo
cd /root/data/docker_data/halo
docker-compose down
cp -r /root/data/docker_data/halo /root/data/docker_data/halo.archive # 万事先备份,以防万一
docker-compose pull
docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。
docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像
4.2.4卸载Halo
cd /root/data/docker_data/halo
docker-compose down
cd ..
rm -rf /root/data/docker_data/halo # 完全删除映射到本地的数据
5.反向代理
我们要用域名而不是IP+端口的方式来访问我们的服务!
参考《NPM搭建》一章
5.待完善的地方
插件商店,可以自由安装插件,而不必去GitHub自己下载
markdown的支持,目前还需要插件支持
主题切换,用户数据会显示被删除
1.0数据迁移不够完善
主题目前不够完善(1.0的主题有些还没有适配2.0)
6.结尾
祝大家用的开心,有问题可以去GitHub提Issuse,也可以在评论区或者Halo官方论坛相互探讨。
希望大家相互多多鼓励,多多分享,不要做技术上的故步自封者!
最后,感谢Halo团队的辛苦付出,感谢咕咕大佬和波仔大佬的技术分享!
7.参考资料
官网地址:https://halo.run/
GitHub地址:https://github.com/halo-dev/halo
咕咕大佬Blog:https://blog.laoda.de/
波仔大佬Blog:https://v2rayssr.com/
评论区