侧边栏壁纸
博主头像
桃花依旧笑春风 博主等级

人生应该是旷野

  • 累计撰写 13 篇文章
  • 累计创建 6 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

【docker】Halo搭建

老乔
2023-07-07 / 0 评论 / 0 点赞 / 21 阅读 / 0 字

写在前面

因服务器删档原因,去年文章重新发布。

本站是学习自咕咕大佬技术分享文章,在其文章指点下初步建站完成。写在这里的建站分享,也会大部分摘抄自咕咕大佬的相关文章。如有侵权,还请谅解,一定会立即下架!

正文

1.建站背景

身为一个前端工程师,一直想有自己的博客网站,并且在自己的技术下,整得风骚有趣一点,但是局限于后端技术以及懒惰程度,一直没有实现。之前用过WordPress,奈何太过冗杂,服务器差点建站起来都会有点卡,索性服务器空闲,也弃之不用。

最近看油管,刷到了咕咕大佬的Halo的建站视频,感觉还不错,所以学习大佬再一次建站成功。

本站使用的是Halo2.x版本,于文章写作当前最新版本是2.2.

具体的工具介绍,可以去官网查阅,本次知识重点介绍建站过程。

2.项目展示

文档地址:http://docs.halo.run/

社区地址:https://bbs.halo.run/

官网地址: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:

注意:

  1. halo.external-url=http://localhost:8090/ ,其中的http://localhost:8090/需要更改为你的域名,如果你打算用的域名是abc.com也就是要改成--halo.external-url=https://abc.com

  2. image: halohub/halo:2.4.0,其中“:2.4.0”是指定版本,安装时可去官网查询最新版本下载

  3. 初始化的超级管理员用户名 后台登录账号,现在不改,下来不能在更改。密码可以下来后台更改

  4. --spring.r2dbc.password=o#DwN&JSa56- MYSQL_ROOT_PASSWORD=o#DwN&JSa56这里的密码,改动的话,需要同时改动。而且一定要改,不然会

  5. 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.待完善的地方

  1. 插件商店,可以自由安装插件,而不必去GitHub自己下载

  2. markdown的支持,目前还需要插件支持

  3. 主题切换,用户数据会显示被删除

  4. 1.0数据迁移不够完善

  5. 主题目前不够完善(1.0的主题有些还没有适配2.0)

6.结尾

祝大家用的开心,有问题可以去GitHub提Issuse,也可以在评论区或者Halo官方论坛相互探讨。

希望大家相互多多鼓励,多多分享,不要做技术上的故步自封者!

最后,感谢Halo团队的辛苦付出,感谢咕咕大佬和波仔大佬的技术分享!

7.参考资料

文档地址:http://docs.halo.run/

社区地址:https://bbs.halo.run/

官网地址:https://halo.run/

GitHub地址:https://github.com/halo-dev/halo

咕咕大佬Blog:https://blog.laoda.de/

波仔大佬Blog:https://v2rayssr.com/

0

评论区