mirror of
https://github.com/halo-dev/docs.git
synced 2026-05-05 01:02:40 +08:00
chore: remove 1.x documentation (#303)
移除 1.x 的文档,以及清除一些过时文档。 1.x 所有文档已经被移动到 https://github.com/halo-dev/v1-legacy-docs 并托管在 https://v1.legacy-docs.halo.run <img width="669" alt="图片" src="https://github.com/halo-dev/docs/assets/21301288/684e4b0e-fc60-44ae-bda1-52fe62c4670d"> /kind cleanup ```release-note None ```
This commit is contained in:
@@ -1,238 +0,0 @@
|
||||
---
|
||||
title: 配置参考
|
||||
description: Halo 配置文件的详细介绍及参考
|
||||
---
|
||||
|
||||
Halo 的配置文件名为 `application.yaml`,其必须位于[工作目录](/getting-started/prepare#工作目录) `~/.halo` 下。 Halo 会读取该目录下的配置文件进行加载。
|
||||
|
||||
:::info
|
||||
如果您是单独下载的官方配置文件,则必须将文件名 application-template.yaml 重命名为 application.yaml
|
||||
:::
|
||||
|
||||
如下将详细列出配置文件 `application.yaml` 中所有的配置项。
|
||||
|
||||
## 基础配置
|
||||
|
||||
基础配置中的配置设置一般来说是**必要的**,且必须在 application.yaml 里进行定义。
|
||||
|
||||
### 端口
|
||||
|
||||
用于指定 HTTP 服务器监听的端口,Halo 默认设置为 `8090`。
|
||||
|
||||
```yaml
|
||||
server:
|
||||
port: 8090
|
||||
```
|
||||
|
||||
请注意,如果您选择设置端口为 `80`,则需要确保您的 80 端口未被占用,通常**不建议**直接设置为 80 端口。
|
||||
|
||||
### 数据库
|
||||
|
||||
Halo 目前支持 `H2` 及 `MySQL` 数据库。
|
||||
|
||||
:::tip
|
||||
得益于我们使用的 ORM 框架,Halo 在首次启动的时候会自动根据实体类创建表结构,无需通过 SQL 脚本自行创建,也不会提供所谓的 SQL 脚本。所以,此步骤仅需配置好数据库连接地址和用户名密码即可。注意,H2 无需手动创建数据库,MySQL 需要。
|
||||
:::
|
||||
|
||||
#### H2
|
||||
|
||||
:::info
|
||||
推荐使用 **H2**,较其他数据库来说更为方便。
|
||||
:::
|
||||
|
||||
```yaml
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: org.h2.Driver
|
||||
url: jdbc:h2:file:~/.halo/db/halo
|
||||
username: admin
|
||||
password: 123456
|
||||
h2:
|
||||
console:
|
||||
settings:
|
||||
web-allow-others: false
|
||||
path: /h2-console
|
||||
enabled: false
|
||||
```
|
||||
|
||||
**注意事项**:
|
||||
|
||||
- `url` 为默认的数据本地存储地址,请勿修改。
|
||||
- 默认的数据库账户和密码为 `admin` 和 `123456`,建议将其修改,并妥善保存(此用户名和密码在 Halo 第一次启动的时候将自动创建。并且不支持首次启动后,通过修改配置文件中的账户或者密码,如果修改,再次启动将提示用户名或者密码错误。)。
|
||||
- 线上环境中,`h2` 的配置使用默认即可。如果需要手动修改一些数据,可将 `web-allow-others` 和 `enabled` 设为 `true` 来开启 h2 控制台,访问路径为 `ip:端口/h2-console`。`JDBC URL`,`username`,`password` 使用配置文件中的即可。
|
||||
|
||||
:::warning
|
||||
特别注意:在开启 `h2-console` 并完成所需操作之后,一定要再次关闭 `h2-console` 并重启,不要长时间将 `h2-console` 处于开启状态,这可能会有隐性的安全风险。
|
||||
:::
|
||||
|
||||
#### MySQL
|
||||
|
||||
```yaml
|
||||
spring:
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password: 123456
|
||||
```
|
||||
|
||||
**要求**:
|
||||
|
||||
1. 版本:5.7 +
|
||||
2. 字符集(Character Set):`utf8mb4`
|
||||
3. 排序规则(Collate):`utf8mb4_bin`
|
||||
4. 存储引擎:`InnoDB`
|
||||
|
||||
综上,建议创建数据库采用下面的命令:
|
||||
|
||||
```bash
|
||||
create database halodb character set utf8mb4 collate utf8mb4_bin;
|
||||
```
|
||||
|
||||
**注意事项**:
|
||||
|
||||
- `username` 及 `password` 需要修改为您的 MySQL 数据库账号和密码。
|
||||
- 默认时区为 `Asia/Shanghai`,如果与您所在时区不一致,则可以修改为您所在的时区。
|
||||
|
||||
## 高级配置
|
||||
|
||||
高级配置中的配置设置是可选的,如果不需要,可以略过。
|
||||
|
||||
### 后台路径
|
||||
|
||||
Halo 支持自定义后台管理的**根路径**。
|
||||
|
||||
```yaml
|
||||
halo:
|
||||
# Your admin client path is https://your-domain/{admin-path}
|
||||
admin-path: admin
|
||||
```
|
||||
|
||||
注意:仅为改动后台管理的根路径,因此前后不带 `/`。
|
||||
|
||||
### 缓存
|
||||
|
||||
某些情况下,需要用户根据需求来设置缓存数据的保存方式,例如将缓存数据持久化保存在本地。
|
||||
|
||||
```yaml
|
||||
halo:
|
||||
# memory or level or redis
|
||||
cache: memory
|
||||
```
|
||||
|
||||
目前支持三种策略:
|
||||
|
||||
- `memory` 将数据缓存至内存,重启服务缓存将清空。
|
||||
- `level` 将数据缓存至本地,重启服务不会清空缓存。
|
||||
- `redis` 将数据缓存至 Redis,重启服务不会清空缓存,如需分布式部署 Halo,请选用此种缓存方式。
|
||||
|
||||
**注意事项**:
|
||||
|
||||
- 如果选用 Redis 缓存方式,请在配置文件加入 Redis 相关配置,完整的配置示例如下:
|
||||
|
||||
```yaml
|
||||
server:
|
||||
port: 8090
|
||||
|
||||
# Response data gzip.
|
||||
compression:
|
||||
enabled: true
|
||||
|
||||
spring:
|
||||
datasource:
|
||||
# MySQL database configuration.
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password: 123456
|
||||
redis:
|
||||
# Redis cache configuration.
|
||||
port: 6379
|
||||
database: 0
|
||||
host: 127.0.0.1
|
||||
password: 123456
|
||||
|
||||
halo:
|
||||
# Your admin client path is https://your-domain/{admin-path}
|
||||
admin-path: admin
|
||||
|
||||
# memory or level or redis
|
||||
cache: redis
|
||||
```
|
||||
|
||||
### 压缩
|
||||
|
||||
启用压缩对于减少带宽和加快页面加载非常有用,在**未使用** `Nginx` 或 `Caddy` 等反向代理服务器时(反向代理服务器通常是默认开启 Gzip 的),可以考虑开启系统自带的 Gzip 功能。
|
||||
|
||||
```yaml
|
||||
server:
|
||||
# Response data gzip.
|
||||
compression:
|
||||
enabled: true
|
||||
```
|
||||
|
||||
## 示例配置文件
|
||||
|
||||
:::info
|
||||
建议根据使用的数据库类型查看。
|
||||
:::
|
||||
|
||||
### H2 Database
|
||||
|
||||
```yaml
|
||||
server:
|
||||
port: 8090
|
||||
|
||||
# Response data gzip.
|
||||
compression:
|
||||
enabled: true
|
||||
spring:
|
||||
datasource:
|
||||
# H2 database configuration.
|
||||
driver-class-name: org.h2.Driver
|
||||
url: jdbc:h2:file:~/.halo/db/halo
|
||||
username: admin
|
||||
password: 123456
|
||||
|
||||
# H2 database console configuration.
|
||||
h2:
|
||||
console:
|
||||
settings:
|
||||
web-allow-others: false
|
||||
path: /h2-console
|
||||
enabled: false
|
||||
|
||||
halo:
|
||||
# Your admin client path is https://your-domain/{admin-path}
|
||||
admin-path: admin
|
||||
|
||||
# memory or level or redis
|
||||
cache: memory
|
||||
```
|
||||
|
||||
### MySQL
|
||||
|
||||
```yaml
|
||||
server:
|
||||
port: 8090
|
||||
|
||||
# Response data gzip.
|
||||
compression:
|
||||
enabled: true
|
||||
spring:
|
||||
datasource:
|
||||
# MySQL database configuration.
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||
username: root
|
||||
password: 123456
|
||||
|
||||
halo:
|
||||
# Your admin client path is https://your-domain/{admin-path}
|
||||
admin-path: admin
|
||||
|
||||
# memory or level or redis
|
||||
cache: memory
|
||||
```
|
||||
|
||||
官方的完整示例配置文件可以在 [https://dl.halo.run/config/](https://dl.halo.run/config/) 下找到。
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
title: 资源下载
|
||||
description: 目前所有与 Halo 相关的下载地址
|
||||
---
|
||||
|
||||
## GitHub
|
||||
|
||||
:::note
|
||||
如果您的服务器在海外,推荐从 GitHub 下载。
|
||||
:::
|
||||
|
||||
- [运行包](https://github.com/halo-dev/halo/releases)
|
||||
- [配置文件](https://github.com/halo-dev/halo-common)
|
||||
|
||||
## 官方镜像源
|
||||
|
||||
- [https://download.halo.run](https://download.halo.run)
|
||||
|
||||
此镜像源由 [Nova Kwok](https://nova.moe/) 提供并维护。
|
||||
|
||||
## 三方镜像源
|
||||
|
||||
- [https://halo.cary.tech](https://halo.cary.tech)
|
||||
|
||||
此镜像源由 [新逸Cary](https://blog.xinac.cn) 提供并维护。
|
||||
@@ -24,7 +24,7 @@ description: 从 Halo 1.x 迁移的完整指南和注意事项
|
||||
|
||||
## 备份数据
|
||||
|
||||
在进行迁移操作之前,我们强烈建议先**完整备份所有数据**,可以参考 [备份迁移](https://docs.halo.run/user-guide/backup-migration) 进行整站备份。
|
||||
在进行迁移操作之前,我们强烈建议先**完整备份所有数据**,可以参考 [备份迁移](https://v1.legacy-docs.halo.run/user-guide/backup-migration) 进行整站备份。
|
||||
|
||||
## 导出数据文件
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
title: 备份迁移
|
||||
description: 关于备份和迁移的最佳实践
|
||||
---
|
||||
|
||||
:::info
|
||||
在开始之前,我们推荐你先阅读 [《写在前面》](/getting-started/prepare) 的名词解释部分。
|
||||
:::
|
||||
|
||||
## 备份
|
||||
|
||||
### 数据备份
|
||||
|
||||
目前 Halo 在后台的小工具中提供了数据导出的功能,此功能的作用为导出数据库的所有数据,格式为 `JSON`。通常可以作为切换数据库类型的时候使用。需要注意的是,此备份仅仅为备份数据,不包含其他诸如主题、附件等资料。如下图:
|
||||
|
||||

|
||||
|
||||
点击右下角的备份按钮即可导出所有数据,之后点击备份文件的标题即可下载。
|
||||
|
||||
### 整站备份
|
||||
|
||||
通过 [《写在前面》](/getting-started/prepare) 的名词解释部分我们可以知道,Halo 的所有数据都是存放在当前用户目录的工作目录(.halo)下的(使用 MySQL 数据库除外,你还需要导出 MySQL 数据)。**所以我们备份整站的数据仅需备份这个目录即可**,不管你使用何种方式。不过,为了操作方便,我们也在后台的小工具中提供了备份整站数据的功能,和上面所说的数据备份一致,点击备份按钮即可打包工作目录文件夹。如下图:
|
||||
|
||||

|
||||
|
||||
## 迁移
|
||||
|
||||
### 导入数据
|
||||
|
||||
此功能为导入上面所说的数据备份产生的数据文件(JSON 格式),并非整站备份的工作目录文件。需要注意的是,此功能仅在站点初始化的时候支持。如下图:
|
||||
|
||||

|
||||
|
||||
上传文件之后,点击导入即可。
|
||||
|
||||
### 整站迁移
|
||||
|
||||
此操作通常用于迁移服务器,基于上面 **整站备份** 所说,Halo 的所有数据都是存放于当前用户目录的工作目录(.halo)下的。当然,这仅限于使用 **H2 Database** 的情况下,如果你使用的 MySQL,那么还需要手动导出 MySQL 数据。所以,我们迁移服务器仅仅需要将工作目录的备份文件上传到新服务器的用户目录下解压,然后按照 [《安装指南》](../getting-started/install/docker-compose.md) 重新安装即可。MySQL 用户还需要做的就是手动导出 MySQL 数据,并在新服务器上导入。
|
||||
@@ -1,172 +0,0 @@
|
||||
---
|
||||
title: 功能配置
|
||||
description: 系统功能的相关配置说明
|
||||
---
|
||||
|
||||
## 修改博客地址
|
||||
|
||||
很多人在部署完成之后都会惊奇的发现,博客前台居然没有样式?究其原因就是无法获取到静态资源,那么为什么获取不到呢?那就是你的博客地址没有设置正确。
|
||||
|
||||
第一步:
|
||||
|
||||
登录到后台之后,进入 博客设置 -> 常规设置。
|
||||
|
||||
第二步:
|
||||
|
||||
修改你的博客地址:
|
||||
|
||||
- 如果你没有进行域名解析或者没有配置反向代理,那么博客地址一般为 `http://ip:端口`。
|
||||
|
||||
- 如果你进行了域名解析且配置了反向代理,但是没有配置 SSL 证书,那么博客地址一般为 `http://域名`。
|
||||
|
||||
- 如果你进行了域名解析、配置了反向代理、也配置了 SSL 证书,那么博客地址一般为 `https://域名`。
|
||||
|
||||
说了这么多,就是希望你别把 `http://` 或者 `https://` 搞混了。
|
||||
|
||||
另外,需要注意的是,地址尾部不需要 `/`。
|
||||
|
||||
## 注册 Gravatar
|
||||
|
||||
很多人反映评论中自己的头像不显示,其实评论部分调用的头像并不是在个人资料中设置的那个,而是 `Gravatar`。所以这一点怪我,从 Halo 发布至今我都没有说明这个事情。
|
||||
|
||||
至于什么是 `Gravatar`,引用 `Gravatar` 官方的说明:`全球公认的头像`。这可不是在吹牛,因为只要接入了 Gravatar 的网站,你在网站上使用在 Gravatar 注册的邮箱之后,都会显示你设置的头像,而不需要额外设置。比较出名的网站有 `GitHub`,`GitLab`,`V2EX` 等。所以点击 <https://cn.gravatar.com/> 注册一个吧。
|
||||
|
||||
## 设置用户头像/Logo/Favicon
|
||||
|
||||
### 头像
|
||||
|
||||
第一步:
|
||||
|
||||
登录到后台之后,进入 用户 -> 个人资料。
|
||||
|
||||
第二步:
|
||||
|
||||
点击左侧头像即可选择本地附件中的图片。另外,也支持设置为 `Gravatar` 头像。点击 `使用 Gravatar` 即可。当然,前提是你注册了 `Gravatar` 才行。
|
||||
|
||||
### Logo/Favicon
|
||||
|
||||
第一步:
|
||||
|
||||
登录到后台之后,进入 系统 -> 博客设置。
|
||||
|
||||
第二步:
|
||||
|
||||
在常规设置中找到 Logo/Favicon 输入框,点击输入框后面的按钮即可调用附件库选择图片。
|
||||
|
||||
## SEO 设置
|
||||
|
||||
先说说程序本身对 SEO 做的优化:
|
||||
|
||||
- 支持 sitemap 站点地图:可访问 /sitemap.xml 或 /sitemap.html
|
||||
- 全站绝对路径
|
||||
- 页面静态化
|
||||
- 支持伪静态(1.3.0+)
|
||||
|
||||
需要自己设置的有:
|
||||
|
||||
第一步:
|
||||
|
||||
登录到后台之后,进入 系统 -> 博客设置 -> SEO 设置。
|
||||
|
||||
第二步:
|
||||
|
||||
填写你需要的一些关键词和博客描述,这部分可能需要你了解一定的 SEO 优化技巧。
|
||||
|
||||
> 另外,文章和自定义页面都可以自行设置关键词和描述(文章设置的高级设置中)。当然,你也可以不设置,系统为自动取你设置的文章标签为关键词,描述会自动取文章的部分内容。
|
||||
|
||||
Q&A
|
||||
|
||||
Q:我刚发布的文章,为啥百度搜索不到呢?
|
||||
|
||||
A:这是一件非常正常的事情,建议注册百度的站长工具,手动或者自动提交链接。
|
||||
|
||||
## SMTP 服务
|
||||
|
||||
SMTP 服务,简称发信服务,顾名思义就是用来发邮件的。那么,为什么要设置这个呢?有两个用途:
|
||||
|
||||
1. 评论通知,收到评论之后发信通知博主,评论者被回复之后发信通知被评论者。
|
||||
|
||||
2. 找回密码。
|
||||
|
||||
第一步:
|
||||
|
||||
登录到后台之后,进入 系统 -> 博客设置 -> SMTP 设置。
|
||||
|
||||
第二步:
|
||||
|
||||
勾选 `是否启用`,并配置相关信息:
|
||||
|
||||
1. SMTP 地址,到邮箱服务商查询。举两个例子:QQ 邮箱(smtp.qq.com),163 邮箱(smtp.163.com)
|
||||
|
||||
2. 发送协议:一般不修改,具体可到邮箱服务商查询。
|
||||
|
||||
3. SSL 端口:一般不修改,具体可到邮箱服务商查询。
|
||||
|
||||
4. 邮箱账号:你的账号。
|
||||
|
||||
5. 邮箱密码:你的密码。
|
||||
|
||||
6. 发件人:随意。
|
||||
|
||||
第三步:
|
||||
|
||||
点击发送测试,填上你可以接收到的邮箱,并填写测试内容,最后点击发送。不出意外就可以发送成功,失败了就检查下配置吧。
|
||||
|
||||
Q&A:
|
||||
|
||||
Q:发送失败
|
||||
|
||||
A:先检查配置是否有误,如不知道哪里错误,请查看日志。点击左上角 `Halo Dashboard`即可进入开发者选项,点击 `实时日志` 即可看到最近的日志。
|
||||
|
||||
Q:日志说我授权出错,但是我密码明明是对的啊!
|
||||
|
||||
A:部分邮箱所谓的密码并不是你的登陆密码,需要去邮箱服务商生成 `授权码`。这个才是你需要填写的。
|
||||
|
||||
## 设置统计代码
|
||||
|
||||
第一步:
|
||||
|
||||
登录到后台之后,进入 系统 -> 博客设置 -> 其他设置。
|
||||
|
||||
第二步:
|
||||
|
||||
将 `网站统计平台` 提供给你的一串代码填写到 `统计代码` 即可。
|
||||
|
||||
Q&A:
|
||||
|
||||
Q:什么是网站统计平台?
|
||||
|
||||
A:诸如百度统计,CNZZ,Google Analytics。可以非常详细的统计你网站的访问情况。
|
||||
|
||||
## 找一个合适自己的主题
|
||||
|
||||
当你搭建好博客之后,如果你不喜欢默认的主题,那么你可以去 [https://halo.run/themes/](https://halo.run/themes/) 选择你喜欢的主题。在这里主要讲一些注意事项。
|
||||
|
||||
### 如何安装?
|
||||
|
||||
登录到后台之后,进入 外观 -> 主题,在后下角有一个按钮,点击之后选择 `安装主题`。系统提供的两种安装方式。
|
||||
|
||||
1. 第一种,远程拉取。你只需要把主题的 GitHub 地址复制进去点击下载即可。
|
||||
2. 第二种,本地上传,你需要将主题安装包(releases)下载到本地,然后选择 `本地上传` 点击选择你下载好的主题即可。
|
||||
|
||||
> 一般情况下,推荐第二种,第一种一般安装的为开发版本,建议谨慎使用。
|
||||
|
||||
### 设置主题
|
||||
|
||||
> 可能有一部分人不太清楚,一般情况下,每个主题都是有单独的设置选项的。
|
||||
|
||||
点击主题下方的设置按钮即可进入主题设置。另外主题设置还有一种预览模式,可以实时查看主题设置变更后的效果。当你设置当前激活主题的时候,在页面右下角有一个 `预览模式` 的按钮,点击即可进入预览模式。
|
||||
|
||||
## 设置备案信息
|
||||
|
||||
由于后台博客设置并没有提供设置备案信息的选项,所以有很多人不知道该怎么添加备案信息,这里简单说明一下。
|
||||
|
||||
第一步:
|
||||
|
||||
登录到后台之后,进入 系统 -> 博客设置 -> 常规设置。
|
||||
|
||||
这时候你应该可以看到一个`页脚信息`的选项,而且有提示 `支持 HTML 格式的文本`。所以我们把备案信息放在这里即可。
|
||||
|
||||
第二步:
|
||||
|
||||
将整理好的备案信息填写到页脚信息即可,如果没记错的话,公安联网备案是有提供`网站公安机关备案号`和`备案编号HTML代码`的。
|
||||
@@ -99,32 +99,29 @@ server {
|
||||
|
||||
### 如何在一台服务器上部署多个站点?
|
||||
|
||||
参考 [写在前面/工作目录](../getting-started/prepare.md#工作目录) 我们可以知道,工作目录对于 Halo 主程序来说是固定的。如果我们需要部署多个站点,我们提供以下两种方式以供参考:
|
||||
使用 Docker 创建多个容器,因为使用 Docker 可以将内部的工作目录映射到宿主机的任何目录,可以参考以下创建容器的方式:
|
||||
|
||||
1. 创建多个 Linux 账户,并在每个账户上运行一个独立的 Halo。因为工作目录是基于账户的,所以每个账户都有自己的工作目录。但是有一点需要注意,就是需要修改每一个 Halo 的运行端口,参考:[配置参考/端口](../getting-started/config#%E7%AB%AF%E5%8F%A3)
|
||||
2. 使用 Docker 创建多个容器,因为使用 Docker 可以将内部的工作目录映射到宿主机的任何目录,可以参考以下创建容器的方式:
|
||||
```bash
|
||||
# 第一个 Halo 容器
|
||||
docker run \
|
||||
-it -d \
|
||||
--name halo-1 \
|
||||
-p 8090:8090 \
|
||||
-v ~/.halo2.1:/root/.halo2 \
|
||||
-e HALO_EXTERNAL_URL=http://localhost:8090/ \
|
||||
-e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \
|
||||
halohub/halo:2.3.0
|
||||
|
||||
```bash
|
||||
# 第一个 Halo 容器
|
||||
docker run \
|
||||
-it -d \
|
||||
--name halo-1 \
|
||||
-p 8090:8090 \
|
||||
-v ~/.halo2.1:/root/.halo2 \
|
||||
-e HALO_EXTERNAL_URL=http://localhost:8090/ \
|
||||
-e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \
|
||||
halohub/halo:2.3.0
|
||||
|
||||
# 第二个 Halo 容器
|
||||
docker run \
|
||||
-it -d \
|
||||
--name halo-2 \
|
||||
-p 8090:8090 \
|
||||
-v ~/.halo2.2:/root/.halo2 \
|
||||
-e HALO_EXTERNAL_URL=http://localhost:8090/ \
|
||||
-e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \
|
||||
halohub/halo:2.3.0
|
||||
```
|
||||
# 第二个 Halo 容器
|
||||
docker run \
|
||||
-it -d \
|
||||
--name halo-2 \
|
||||
-p 8090:8090 \
|
||||
-v ~/.halo2.2:/root/.halo2 \
|
||||
-e HALO_EXTERNAL_URL=http://localhost:8090/ \
|
||||
-e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \
|
||||
halohub/halo:2.3.0
|
||||
```
|
||||
|
||||
更多 Docker 相关的教程请参考:[使用 Docker 部署 Halo](../getting-started/install/docker.md)
|
||||
|
||||
|
||||
@@ -1,454 +0,0 @@
|
||||
---
|
||||
title: Markdown 语法
|
||||
description: Halo 编辑器中所支持的 Markdown 语法说明
|
||||
---
|
||||
|
||||
## 写在前面
|
||||
|
||||
从 1.5.0 版本开始,Halo 默认保存编辑器渲染的 html 文档。使用的 Markdown 渲染库为 [markdown-it](https://github.com/markdown-it/markdown-it),我们也对此进行了封装:[@halo-dev/markdown-renderer](https://github.com/halo-dev/js-sdk/tree/master/packages/markdown-renderer)。后续我们会在任何需要渲染 Markdown 的地方都使用此库,保证 Markdown 渲染结果一致。
|
||||
|
||||
## 基础语法
|
||||
|
||||
markdown-it 使用了 [CommonMark spec](https://spec.commonmark.org) 规范,基础语法请参考 [CommonMark spec](https://spec.commonmark.org)。
|
||||
|
||||
## 自动链接(Auto Link)
|
||||
|
||||
支持自动将一个链接格式的文本转换为 a 标签链接。
|
||||
|
||||
语法规则:
|
||||
|
||||
```plain
|
||||
https://halo.run
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<a href="https://halo.run">https://halo.run</a>
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
<https://halo.run>
|
||||
|
||||
## 代码块(Code Block)
|
||||
|
||||
语法规则:
|
||||
|
||||
````markdown {1}
|
||||
```language
|
||||
内容
|
||||
```
|
||||
````
|
||||
|
||||
示例:
|
||||
|
||||
````markdown {1}
|
||||
```java
|
||||
public static void main(String[] args){
|
||||
System.out.println("Hello World!");
|
||||
}
|
||||
```
|
||||
````
|
||||
|
||||
````markdown {1}
|
||||
```javascript
|
||||
console.log("Hello World!")
|
||||
```
|
||||
````
|
||||
|
||||
:::info
|
||||
注意:代码高亮需要主题添加插件支持,不同的主题可能有实现差异。
|
||||
:::
|
||||
|
||||
## 缩写(abbr)
|
||||
|
||||
语法规则:
|
||||
|
||||
```markdown
|
||||
*[HTML]: Hyper Text Markup Language
|
||||
*[W3C]: World Wide Web Consortium
|
||||
The HTML specification
|
||||
is maintained by the W3C.
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<p>
|
||||
The
|
||||
<abbr title="Hyper Text Markup Language">
|
||||
HTML
|
||||
</abbr>
|
||||
specification
|
||||
<br />
|
||||
is maintained by the
|
||||
<abbr title="World Wide Web Consortium">
|
||||
W3C
|
||||
</abbr>
|
||||
.
|
||||
</p>
|
||||
```
|
||||
|
||||
## Attrs
|
||||
|
||||
此语法支持将 `id` `class` `target` 添加到渲染后的 HTML 标签上。
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
# Halo {#halo}
|
||||
```
|
||||
|
||||
```markdown
|
||||
> Hello Halo {.info}
|
||||
```
|
||||
|
||||
```markdown
|
||||
[https://halo.run](https://halo.run) {target="_blank"}
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<h1 id="halo" tabindex="-1">Halo</h1>
|
||||
```
|
||||
|
||||
```html
|
||||
<blockquote class="info"> <p>Hello Halo</p> </blockquote>
|
||||
```
|
||||
|
||||
```html
|
||||
<a href="https://halo.run" target="_blank">https://halo.run</a>
|
||||
```
|
||||
|
||||
## Emoji
|
||||
|
||||
支持将 Emoji 的文字形式转化为图片形式。
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
:100:
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
💯
|
||||
```
|
||||
|
||||
## 脚注(Footnote)
|
||||
|
||||
语法规则:
|
||||
|
||||
```markdown
|
||||
[^脚注名]
|
||||
[^脚注名]: 脚注内容
|
||||
```
|
||||
|
||||
示例:
|
||||
|
||||
```html
|
||||
驿外[^1]断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
|
||||
[^1]: 驿(yì)外:指荒僻、冷清之地。驿,驿站。
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<p>
|
||||
驿外
|
||||
<sup class="footnote-ref">
|
||||
<a href="#fn1" id="fnref1">
|
||||
[1]
|
||||
</a>
|
||||
</sup>
|
||||
断桥边,寂寞开无主。已是黄昏独自愁,更着风和雨
|
||||
</p>
|
||||
<hr class="footnotes-sep">
|
||||
<section class="footnotes">
|
||||
<ol class="footnotes-list">
|
||||
<li id="fn1" class="footnote-item">
|
||||
<p>
|
||||
驿(yì)外:指荒僻、冷清之地。驿,驿站。
|
||||
<a href="#fnref1" class="footnote-backref">
|
||||
↩︎
|
||||
</a>
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
```
|
||||
|
||||
## 下划线(ins)
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
++inserted++
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<ins>inserted</ins>
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
<ins>inserted</ins>
|
||||
|
||||
## 标记(mark)
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
==marked==
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<mark>marked</mark>
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
<mark>marked</mark>
|
||||
|
||||
## 下标(sub)
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
H~2~0
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
H<sub>2</sub>0
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
H<sub>2</sub>0
|
||||
|
||||
## 上标(sup)
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
29^th^
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
29<sup>th</sup>
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
29<sup>th</sup>
|
||||
|
||||
## 目录(TOC)
|
||||
|
||||
此语法支持根据标题生成文档目录。
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
[toc]
|
||||
|
||||
# Heading
|
||||
|
||||
## Sub heading 1
|
||||
Some nice text
|
||||
|
||||
## Sub heading 2
|
||||
Some even nicer text
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<p>
|
||||
<div class="table-of-contents">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#heading">
|
||||
Heading
|
||||
</a>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="#sub-heading-1">
|
||||
Sub heading 1
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#sub-heading-2">
|
||||
Sub heading 2
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</p>
|
||||
<h1 id="heading" tabindex="-1">
|
||||
Heading
|
||||
</h1>
|
||||
<h2 id="sub-heading-1" tabindex="-1">
|
||||
Sub heading 1
|
||||
</h2>
|
||||
<p>
|
||||
Some nice text
|
||||
</p>
|
||||
<h2 id="sub-heading-2" tabindex="-1">
|
||||
Sub heading 2
|
||||
</h2>
|
||||
<p>
|
||||
Some even nicer text
|
||||
</p>
|
||||
```
|
||||
|
||||
## 任务列表(Task Lists)
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
- [x] Apple
|
||||
- [ ] Banana
|
||||
```
|
||||
|
||||
渲染结果:
|
||||
|
||||
```html
|
||||
<ul class="contains-task-list">
|
||||
<li class="task-list-item">
|
||||
<input class="task-list-item-checkbox" checked="" disabled="" type="checkbox">
|
||||
Apple
|
||||
</li>
|
||||
<li class="task-list-item">
|
||||
<input class="task-list-item-checkbox" disabled="" type="checkbox">
|
||||
Banana
|
||||
</li>
|
||||
</ul>
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
- [x] Apple
|
||||
- [ ] Banana
|
||||
|
||||
## 数学公式(Katex)
|
||||
|
||||
我们使用了 KaTeX 作为数学公式渲染的插件,因为从 1.5.0 开始,我们将直接保存编辑器渲染的内容,在保存的时候就已经保存了渲染好的 KaTeX 结构。所以在前台无需引入 KaTeX 插件来进行渲染,但目前仍需要引入 KaTeX 的样式文件,如果主题没有支持,可以在系统设置的 `自定义内容页 head:` 中加入以下代码:
|
||||
|
||||
```html
|
||||
<link rel="stylesheet" href="https://unpkg.com/katex@0.12.0/dist/katex.min.css" />
|
||||
```
|
||||
|
||||
### 行内公式
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
$\sqrt{3x-1}+(1+x)^2$
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
Example:$\sqrt{3x-1}+(1+x)^2$
|
||||
|
||||
### 块级公式
|
||||
|
||||
示例:
|
||||
|
||||
```markdown
|
||||
$$\begin{array}{c}
|
||||
|
||||
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
|
||||
= \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
|
||||
|
||||
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
|
||||
|
||||
\nabla \cdot \vec{\mathbf{B}} & = 0
|
||||
|
||||
\end{array}$$
|
||||
```
|
||||
|
||||
预览:
|
||||
|
||||
$$\begin{array}{c}
|
||||
|
||||
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
|
||||
= \frac{4\pi}{c}\vec{\mathbf{j}} \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
|
||||
|
||||
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
|
||||
|
||||
\nabla \cdot \vec{\mathbf{B}} & = 0
|
||||
|
||||
\end{array}$$
|
||||
|
||||
## 图表(Mermaid)
|
||||
|
||||
从 Halo 1.5.0 开始,编辑器支持渲染 Mermaid 图表为 svg 内容,并直接保存渲染后的内容,所以无需在前台引入 Mermaid 插件进行渲染。
|
||||
|
||||
示例:
|
||||
|
||||
````markdown
|
||||
```mermaid
|
||||
graph TD;
|
||||
A-->B;
|
||||
A-->C;
|
||||
B-->D;
|
||||
C-->D;
|
||||
```
|
||||
````
|
||||
|
||||
````markdown
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Alice
|
||||
participant Bob
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts <br/>prevail!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
```
|
||||
````
|
||||
|
||||
预览:
|
||||
|
||||
```mermaid
|
||||
graph TD;
|
||||
A-->B;
|
||||
A-->C;
|
||||
B-->D;
|
||||
C-->D;
|
||||
```
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Alice
|
||||
participant Bob
|
||||
Alice->>John: Hello John, how are you?
|
||||
loop Healthcheck
|
||||
John->>John: Fight against hypochondria
|
||||
end
|
||||
Note right of John: Rational thoughts <br/>prevail!
|
||||
John-->>Alice: Great!
|
||||
John->>Bob: How about you?
|
||||
Bob-->>John: Jolly good!
|
||||
```
|
||||
|
||||
## 短连接
|
||||
|
||||
参考 [1.4.17/Markdown 语法](https://docs.halo.run/1.4/user-guide/markdown#短连接)。目前已经在 1.5.x 移除,建议直接使用官方提供的嵌入代码。
|
||||
Reference in New Issue
Block a user