背景

之前我写了一篇,用gitbook搭建文档中心,gitbook是一款搭建博客的技术,是静态博客技术,不带后台管理系统、不带数据库,要发文章的话,是通过提供markdown文件,渲染成html,通过nginx对外访问。后来也给他们展示过其他静态博客技术如docsify搭建出来的样子,我自己还是蛮喜欢的,比较简洁,但是产品最终还是选择了带后台管理系统的方案-halo。

这个halo,属于动态博客技术,国产的,java开发的,数据库支持h2(内存数据库,重启丢数据,不要用于生产)、postgreSql、mysql。既然是动态博客技术,那就是带后台管理系统的,适合给不懂技术的人员使用,好些人还是不习惯markdown的,markdown的话,图床也是个问题(倒是可以用公司内部的oss服务)。

这个方案还是比较适合我们这边,为啥呢,因为我们现在在搞信创,数据库是国产的,国产数据库有几款是基于pg改的,我们的国产数据库就属于pg改的,所以这个方案也能满足信创要求。

本文只是简单记录下搭建过程以及部分踩坑过程以备忘。

halo简介

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

演示站点:https://docs.halo.run/#在线体验

文档:https://docs.halo.run/category/安装指南

我们搭建出来的效果最终大概这样(用的earth主题):

搭建过程

docker安装

之前也写了个内网环境没网如何用rpm搭建docker的文章,后来有好心人提示我可以用更简单的办法。

可以参考官网这里,https://docs.docker.com/engine/install/binaries/

这个是直接利用静态链接的方式,把docker需要的所有的二进制都搞到这一个压缩包里了,比如说,大家安装nginx的时候,经常提示大家缺少了openssl、pcre等动态库,这种就属于动态链接了,其实你也可以不依赖系统的动态库,直接指定openssl、pcre的源码,然后直接编译进最终的nginx的二进制文件里,这种就是静态链接了,这种的问题是,如果运维统一升级了openssl这些,但你自己编译的这个nginx还是老版本,就会有风险,这里的这种docker安装方式,也是同样道理。

但是我这边反正是用这种方式,文档中心也不怎么重要,内网也很少遇到需要升级这些基础组件的场景,开整。

https://download.docker.com/linux/static/stable/x86_64/
下载了 docker-24.0.7.tgz tar xzvf docker-24.0.7.tgz
cp docker/* /usr/bin/ [root@AppDevPlatform3 upload]# docker -v
Docker version 24.0.7, build afdd53b 启动:
dockerd &
检查:
[root@AppDevPlatform3 upload]# ps -ef|grep docker
root 1101154 1005806 1 15:34 pts/0 00:00:00 dockerd
root 1101163 1101154 0 15:34 ? 00:00:00 containerd --config /var/run/docker/containerd/containerd.toml

如果生产安装的话,可以再多搞点事,比如开机自启动、非root用户启动:

https://docs.docker.com/engine/install/linux-postinstall/

加载halo的image

有网络的话,这个就行:

https://hub.docker.com/r/halohub/halo

docker pull halohub/halo

内网机器没网的话,我是先在有网的机器上把镜像拉下来后,用docker save后传输到内网机器后,docker load来解决这个问题。(公司内docker私服ok也行,但是生产上我们这边是完全没网,估计还是得这样)

[root@xxx local-image]# docker load <halo.tar
01d4e4b4f381: Loading layer [==================================================>] 80.35MB/80.35MB
...
3.072kB/3.072kB

创建数据库

这个就大家自己弄吧,假设建了个库叫test,url为:1.1.1.1:5432/test

启动docker

我这边是没打算用docker compose方式,因为安装docker compose还要多费点事情,然后docker compose的话,是会自己给我们整一个halo进程 + mysql/postgre进程,我这边都有外置的db了,单跑个docker足矣。

docker run -it -d --privileged  --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2  halohub/halo:2.10
--server.port=8090
--spring.r2dbc.url=r2dbc:pool:postgresql://1.1.1.1/test?currentSchema=test
--spring.r2dbc.username=abc
--spring.r2dbc.password=def
--spring.sql.init.platform=postgresql

这块主要是数据库相关的参数,我这个是连接pg库的,参数的详细信息,大家参考官网文档:

https://docs.halo.run/getting-started/install/docker

我这边加了个--privileged参数,是因为我遇到个什么报错来着,启动不了,加了后就ok了。

参数详解:https://www.python100.com/html/100478.html

使用docker-compose启动(可选)

如果还是选择用docker-compose,这里也简单记录下,安装docker-compose插件:

https://docs.docker.com/compose/install/linux/#install-the-plugin-manually

然后就照着这里弄吧:

https://docs.halo.run/getting-started/install/docker-compose

我贴下我的配置:

docker-compose.yaml

version: "3"

services:
halo:
image: halohub/halo:2.10
container_name: halo
restart: on-failure:3
network_mode: "host"
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
command:
- --spring.r2dbc.url=r2dbc:pool:postgresql://1.1.1.15432/test?currentSchema=abc
- --spring.r2dbc.username=abc
- --spring.r2dbc.password=def
- --spring.sql.init.platform=postgresql
- --server.port=8090
docker-compose -f docker-compose.yaml up -d

docker-compose -f docker-compose.yaml logs -f

访问网站及后台

访问对应的ip:8090端口即可。

安装markdown插件

在内网服务器上安装会失败,因为这个需要请求外网服务器

离线安装markdown插件:

插件首页:

https://www.halo.run/store/apps/app-HTyhC

安装主题

如果安装报错,请检查“本地未安装”中是否存在未安装成功的主题。

备份恢复

这个功能对我很重要,我在开发环境搭好后,就是产品自己去搞成自己想要的效果了,为了避免转测试、上线后,他需要再重复弄,这个整站的迁移功能就很重要,省了我很多事。

https://docs.halo.run/user-guide/backup

使用该机制,可以快速备份环境再导入新环境,不用手动重新配置一遍。

搭建过程中涉及国产db的一个小坑

创建数据库时,我是新建了一个专门的用户,然后把新建的库分给这个用户。结果这个halo连上后,启动时,一直说用户名密码错误,但是同样的用户名密码,用dbeaver都是可以连接的,报错的就是程序会报错,当时还以为halo程序有问题。

后来也是抓包解决了:

是国产库那边,说,密码第一次设置后,首次使用的话,必须要再改一次还是怎么的,我改来改去都有问题。后来把问题反馈给那边,那边说这个首次使用的密码必须强制修改的机制可以关闭,也是坑爹。

遗留问题

我们现在要上生产的话,数据库密码必须是配置成加密的,所以,我这个上线部署方案估计都有点问题,后面可能还是要看下halo的代码,我大概知道是用spring boot 3.x + jdk 17搞的,密码加密不知道支持不,不支持的话,到时候还得二开一下。

结语

大概就是这些了,成都马上又迎来几个月的冬天了,瑟瑟发抖。

使用halo快速搭建应用文档中心的更多相关文章

  1. IDEA快速搭建 SpringCloud 注册中心与

    第一步:创建 注册中心(eureka)项目 按照以下步骤一步一步来(只是对于IDEA的初学者来说) (我这里选择maven项目.比较方便) 给注册中心项目 取上可爱的名称 第二步配置 eureka的p ...

  2. 推荐一个vuepress模板,一键快速搭建文档站

    介绍 vuepress-template是一个简单的VuePress案例模板,目的是让用户可以直接clone这个仓库,作为初始化一个VuePress网站启动项目,然后在这个项目的基础上新增自定义配置和 ...

  3. EpiiAdmin 开源的php交互性管理后台框架, 让复杂的交互变得更简单!Phper快速搭建交互性平台的开发框架,基于Thinkphp5.1+Adminlte3.0+Require.js。

    EpiiAdmin EpiiAdmin php开源交互性管理后台框架,基于Thinkphp5.1+Adminlte3.0+Require.js, 让复杂的交互变得更简单!Phper快速搭建交互性平台的 ...

  4. spring boot / cloud (十七) 快速搭建注册中心和配置中心

    spring boot / cloud (十七) 快速搭建注册中心和配置中心 本文将使用spring cloud的eureka和config server来搭建. 然后搭建的模式,有很多种,本文主要聊 ...

  5. .NetCore快速搭建ELK分布式日志中心

    懒人必备:.NetCore快速搭建ELK分布式日志中心   该篇内容由个人博客点击跳转同步更新!转载请注明出处! 前言 ELK是什么 它是一个分布式日志解决方案,是Logstash.Elastaics ...

  6. 使用Docker快速搭建Halo个人博客到阿里云服务器上[附加主题和使用域名访问]

    一.前言 小编买了一个服务器也是一直想整个网站,一直在摸索,看了能够快速搭建博客系统的教程.总结了有以下几种方式,大家按照自己喜欢的去搭建: halo wordpress hexo vuepress ...

  7. 搭建SpringCloud-Eureka 注册中心以及服务提供与调用 快速了解 SpringCloud-Eureka

    原文地址:  搭建SpringCloud-Eureka 注册中心以及服务提供与调用   纸上得来终觉浅,绝知此事要躬行啊~果然看着很easy,自己搞起来就是各种坑~各位看官,容我慢慢道来~ 关于spr ...

  8. 【Elastic-1】ELK基本概念、环境搭建、快速开始文档

    TODO 快速开始文档 SpringBoot整合ELK(Logstash收集日志.应用主动向ES写入) ELK接入Kafka 基本概念 ElasticSearch 什么是ElasticSearch? ...

  9. Dubbo应用文档

    Dubbo应用文档 Dubbo简介 概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架, ...

  10. Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

    本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...

随机推荐

  1. 论文解读(CTDA)《Contrastive transformer based domain adaptation for multi-source cross-domain sentiment classification》

    Note:[ wechat:Y466551 | 可加勿骚扰,付费咨询 ] 论文信息 论文标题:Contrastive transformer based domain adaptation for m ...

  2. selenium-wire兼容selenium和requests

    背景 在工作中UI自动化中可能会需要用到API来做一些数据准备或清理的事情,那UI操作是略低效的,但API操作相对高效. 而实战课就有这样一个案例,不过那个案例是UI操作和API分开的. 极少会遇到这 ...

  3. CodeForces 1343D Constant Palindrome Sum

    题意 多组样例 给一个长度为\(n\)(\(n\)一定为偶数)的数组\(a[]\),给一个正整数\(k\),保证数组内元素为小于等于\(k\)的正整数,你可以每次将数组的一个元素变为小于等于\(k\) ...

  4. 正则表达式快速入门一:正则表达式(regex)基本语法及概念

    Regex quickstart :正则表达式快速入门 author: wclsn reference quick start 如果想要了解正则表达式的基本概念且英文ok的话,完全可以从我上面所附网站 ...

  5. 各快 100 倍?4G、5G、6G 相差这么多吗

    二狗子今天晚上有点 emo,为什么呢? 原来是二狗子心心念很久的一个手游上线了,二狗子兴冲冲地下载了 40 多分钟,终于下载完了游戏.结果打开游戏一看,发现游戏内部的更新写着预计 30 分钟完成更新. ...

  6. Record -「Tricks」记录

    曼哈顿距离 \(\text{dist}(A,B)=|x_{A}-x_{B}|+|y_{A}-y_{B}|\) 可以拆成 \(\max\{x_{A}-x_{B}+y_{A}-y_{B},x_{A}-x_ ...

  7. 五分钟k8s入门到实战-应用配置

    背景 在前面三节中已经讲到如何将我们的应用部署到 k8s 集群并提供对外访问的能力,x现在可以满足基本的应用开发需求了. 现在我们需要更进一步,使用 k8s 提供的一些其他对象来标准化我的应用开发. ...

  8. 【matplotlib 实战】--柱状图

    柱状图,是一种使用矩形条,对不同类别进行数值比较的统计图表.在柱状图上,分类变量的每个实体都被表示为一个矩形(通俗讲即为"柱子"),而数值则决定了柱子的高度. 1. 主要元素 柱状 ...

  9. 再学Blazor——组件

    Blazor 应用基于组件,组件可以复用和嵌套.本文内容如下: 组件类 组件嵌套 组件参数 组件对象 1. 组件类 所有组件都是继承 ComponentBase 组件基类,razor 文件默认继承 C ...

  10. Windows10 下载并编译指定版本chromium源码

    1.一些信息 Chromium 的官网是 https://www.chromium.org/ Git 仓库是 https://chromium.googlesource.com/chromium/sr ...