docs: update documentation for Halo 2.0.0 (#125)

为 Halo 2.0 正式版更新文档。

/kind documentation

```release-note
None
```
JohnNiang-patch-1
Ryan Wang 2 years ago committed by GitHub
parent 779e584dbd
commit 89fb87557c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -103,10 +103,3 @@ VITE v3.1.6 ready in 638 ms
``` ```
6. 最终访问 `http://localhost:8090/console` 即可进入控制台。访问 `http://localhost:8090` 即可进入站点首页。 6. 最终访问 `http://localhost:8090/console` 即可进入控制台。访问 `http://localhost:8090` 即可进入站点首页。
:::info 注意
目前 RC 版本有以下几个使用注意事项:
:::
1. 由于目前评论组件被插件化且暂不支持提供默认插件,所以如果要体验完整的评论功能,需要手动在后台安装 <https://github.com/halo-sigs/plugin-comment-widget> 评论组件插件。
2. 目前 2.0 已支持的主题和插件会同步到 <https://github.com/halo-sigs/awesome-halo>,你可以在对应仓库的 release 下载最新的主题或插件。

@ -9,23 +9,23 @@ description: 使用 Docker Compose 部署
## 创建容器组 ## 创建容器组
可用的 Halo 2.0.0-rc.1 的 Docker 镜像: 可用的 Halo 2.0.0 的 Docker 镜像:
- [halohub/halo-dev](https://hub.docker.com/r/halohub/halo-dev) - [halohub/halo](https://hub.docker.com/r/halohub/halo)
- [ghcr.io/halo-dev/halo-dev](https://github.com/halo-dev/halo/pkgs/container/halo-dev) - [ghcr.io/halo-dev/halo](https://github.com/halo-dev/halo/pkgs/container/halo)
:::info 注意 :::info 注意
以上两个镜像仅作为 Halo 2.0 测试期间的镜像,正式发布之后会更改为 `halohub/halo``ghcr.io/halo-dev/halo`。 目前 Halo 2.0 并未更新 Docker 的 latest 标签镜像,主要因为 2.0 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 `halohub/halo:2.0.0`。
::: :::
1. 在系统任意位置创建一个文件夹,此文档以 `~/halo-next` 为例。 1. 在系统任意位置创建一个文件夹,此文档以 `~/halo` 为例。
```bash ```bash
mkdir ~/halo-next && cd ~/halo-next mkdir ~/halo && cd ~/halo
``` ```
:::info :::info
注意后续操作中Halo 的所有相关数据都会保存在这个目录,请妥善保存。 注意后续操作中Halo 产生的所有数据都会保存在这个目录,请妥善保存。
::: :::
2. 创建 `docker-compose.yaml` 2. 创建 `docker-compose.yaml`
@ -36,41 +36,74 @@ description: 使用 Docker Compose 部署
需要注意的是,此文档为了更加方便的管理配置,所有与 Halo 相关的配置都使用 Docker 环境变量代替,所以无需创建 application.yaml 文件。 需要注意的是,此文档为了更加方便的管理配置,所有与 Halo 相关的配置都使用 Docker 环境变量代替,所以无需创建 application.yaml 文件。
::: :::
1. 创建 Halo 实例(使用默认的 H2 数据库) 1. 创建 Halo + PostgreSQL 的实例:
```yaml {13-20} ```yaml {18-28,46} title="~/halo/docker-compose.yaml"
version: "3" version: "3"
services: services:
halo_next: halo:
image: halohub/halo-dev:2.0.0-rc.1 image: halohub/halo:2.0.0
container_name: halo_next container_name: halo
restart: on-failure:3 restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes: volumes:
- ./:/root/.halo2 - ./:/root/.halo2
ports: ports:
- "8090:8090" - "8090:8090"
environment: environment:
- SPRING_R2DBC_URL=r2dbc:pool:postgresql://halodb/halo
- SPRING_R2DBC_USERNAME=halo
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
- SPRING_R2DBC_PASSWORD=openpostgresql
- SPRING_SQL_INIT_PLATFORM=postgresql
# 外部访问地址,请根据实际需要修改 # 外部访问地址,请根据实际需要修改
- HALO_EXTERNAL_URL=http://localhost:8090/ - HALO_EXTERNAL_URL=http://localhost:8090/
# 初始化的超级管理员用户名 # 初始化的超级管理员用户名
- HALO_SECURITY_INITIALIZER_SUPERADMINUSERNAME=admin - HALO_SECURITY_INITIALIZER_SUPERADMINUSERNAME=admin
# 初始化的超级管理员密码 # 初始化的超级管理员密码
- HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd - HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd
halodb:
image: postgres:latest
container_name: halodb
restart: on-failure:3
networks:
halo_network:
volumes:
- ./db:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: [ "CMD", "pg_isready" ]
interval: 10s
timeout: 5s
retries: 5
environment:
- POSTGRES_PASSWORD=openpostgresql
- POSTGRES_USER=halo
- POSTGRES_DB=halo
networks:
halo_network:
``` ```
2. 创建 Halo + PostgreSQL 的实例: 2. 创建 Halo + MySQL 的实例:
```yaml {18-28,46} ```yaml
version: "3" version: "3"
services: services:
halo_next: halo:
image: halohub/halo-dev:2.0.0-rc.1 image: halohub/halo:2.0.0
container_name: halo_next container_name: halo
restart: on-failure:3 restart: on-failure:3
depends_on: depends_on:
halo_db: halodb:
condition: service_healthy condition: service_healthy
networks: networks:
halo_network: halo_network:
@ -79,11 +112,11 @@ description: 使用 Docker Compose 部署
ports: ports:
- "8090:8090" - "8090:8090"
environment: environment:
- SPRING_R2DBC_URL=r2dbc:pool:postgresql://halo_db/halo - SPRING_R2DBC_URL=r2dbc:pool:mysql://halodb:3306/halo
- SPRING_R2DBC_USERNAME=halo - SPRING_R2DBC_USERNAME=root
# PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。 # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- SPRING_R2DBC_PASSWORD=openpostgresql - SPRING_R2DBC_PASSWORD=o#DwN&JSa56
- SPRING_SQL_INIT_PLATFORM=postgresql - SPRING_SQL_INIT_PLATFORM=mysql
# 外部访问地址,请根据实际需要修改 # 外部访问地址,请根据实际需要修改
- HALO_EXTERNAL_URL=http://localhost:8090/ - HALO_EXTERNAL_URL=http://localhost:8090/
# 初始化的超级管理员用户名 # 初始化的超级管理员用户名
@ -91,48 +124,110 @@ description: 使用 Docker Compose 部署
# 初始化的超级管理员密码 # 初始化的超级管理员密码
- HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd - HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd
halo_db: halodb:
image: postgres:latest image: mysql:8.0.27
container_name: halo_db container_name: halodb
restart: on-failure:3 restart: on-failure:3
networks: networks:
halo_network: halo_network:
command: --default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
volumes: volumes:
- ./db:/var/lib/postgresql/data - ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports: ports:
- "5432:5432" - "3306:3306"
healthcheck: healthcheck:
test: [ "CMD", "pg_isready" ] test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 10s interval: 3s
timeout: 5s
retries: 5 retries: 5
start_period: 30s
environment: environment:
- POSTGRES_PASSWORD=openpostgresql # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- POSTGRES_USER=halo - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- POSTGRES_DB=halo - MYSQL_DATABASE=halo
networks: networks:
halo_network: halo_network:
``` ```
3. 仅创建 Halo 实例(使用默认的 H2 数据库,**不推荐用于生产环境,建议体验和测试的时候使用**
```yaml {13-20} title="~/halo/docker-compose.yaml"
version: "3"
services:
halo:
image: halohub/halo:2.0.0
container_name: halo
restart: on-failure:3
volumes:
- ./:/root/.halo2
ports:
- "8090:8090"
environment:
# 外部访问地址,请根据实际需要修改
- HALO_EXTERNAL_URL=http://localhost:8090/
# 初始化的超级管理员用户名
- HALO_SECURITY_INITIALIZER_SUPERADMINUSERNAME=admin
# 初始化的超级管理员密码
- HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd
```
3. 启动 Halo 服务 3. 启动 Halo 服务
```bash ```bash
docker-compose up -d docker-compose up -d
``` ```
实时查看日志:
```bash
docker-compose logs -f
```
4. 用浏览器访问 `$HALO_EXTERNAL_URL/console/`(外部访问链接)即可进入 Halo 管理端。管理员用户名为 `admin`,登录密码为上方设置的 `HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD` 4. 用浏览器访问 `$HALO_EXTERNAL_URL/console/`(外部访问链接)即可进入 Halo 管理端。管理员用户名为 `admin`,登录密码为上方设置的 `HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD`
:::tip :::tip
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。 如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
::: :::
## 使用 ## 更新容器组
1. 停止运行中的容器组
```bash
cd ~/halo && docker-compose down
```
2. 备份数据(重要)
```bash
cp -r ~/halo ~/halo.archive
```
> 需要注意的是,`halo.archive` 文件名不一定要根据此文档命名,这里仅仅是个示例。
目前 RC 版本有以下几个使用注意事项: 3. 更新 Halo 服务
修改 `docker-compose.yaml` 中配置的镜像版本。
1. 由于目前评论组件被插件化且暂不支持提供默认插件,所以如果要体验完整的评论功能,需要手动在后台安装 <https://github.com/halo-sigs/plugin-comment-widget> 评论组件插件。 ```yaml {3}
2. 目前 2.0 已支持的主题和插件会同步到 <https://github.com/halo-sigs/awesome-halo>,你可以在对应仓库的 release 下载最新的主题或插件。 services:
halo:
image: halohub/halo:2.0.0
container_name: halo
```
```bash
docker-compose pull
```
```bash
docker-compose up -d
```
## 反向代理 ## 反向代理
@ -140,7 +235,7 @@ description: 使用 Docker Compose 部署
### Nginx ### Nginx
```nginx ```nginx {2,7,10}
upstream halo { upstream halo {
server 127.0.0.1:8090; server 127.0.0.1:8090;
} }
@ -159,61 +254,12 @@ server {
} }
``` ```
### Caddy 1.x ### Caddy 2
```txt
https://www.yourdomain.com {
gzip
tls your@email.com
proxy / localhost:8090 {
transparent
}
}
```
### Caddy 2.x
```txt ```txt {1,5}
www.yourdomain.com www.yourdomain.com
encode gzip encode gzip
reverse_proxy 127.0.0.1:8090 reverse_proxy 127.0.0.1:8090
``` ```
以上配置都可以在 <https://github.com/halo-dev/halo-common> 找到。
## 更新容器组
:::info
我们假设您的 Halo 服务容器是按照 [使用 Docker Compose 部署 Halo](docker-compose.md) 中的方式启动的。如有不同,请根据实际情况修改。
:::
1. 停止运行中的容器组
```bash
cd ~/halo-next && docker-compose stop
```
2. 备份数据(重要)
```bash
cp -r ~/halo-next ~/halo-next.archive
```
> 需要注意的是,`halo-next.archive` 文件名不一定要根据此文档命名,这里仅仅是个示例。
3. 更新 Halo 服务
修改 `docker-compose.yaml` 中配置的镜像版本。
```yaml {3}
services:
halo_next:
image: halohub/halo-dev:2.0.0-rc.1
container_name: halo_next
```
```bash
docker-compose pull && docker-compose up -d
```

@ -4,29 +4,37 @@ description: 使用 Docker 部署
--- ---
:::info :::info
暂时我们仅提供使用 Docker 运行的文档。在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。 在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
:::
:::tip
此文档仅提供使用默认 H2 数据库的 Docker 运行方式,主要用于体验和测试,在生产环境我们不推荐使用 H2 数据库。
如果需要使用其他数据库部署,我们推荐使用 Docker Compose 部署:[使用 Docker Compose 部署](./docker-compose)
::: :::
## 使用 Docker 镜像 ## 使用 Docker 镜像
可用的 Halo 2.0.0-rc.1 的 Docker 镜像: 可用的 Halo 2.0.0 的 Docker 镜像:
- [halohub/halo-dev](https://hub.docker.com/r/halohub/halo-dev) - [halohub/halo](https://hub.docker.com/r/halohub/halo)
- [ghcr.io/halo-dev/halo-dev](https://github.com/halo-dev/halo/pkgs/container/halo-dev) - [ghcr.io/halo-dev/halo](https://github.com/halo-dev/halo/pkgs/container/halo)
> 注意:以上两个镜像仅作为 Halo 2.0 测试期间的镜像,正式发布之后会更改为 `halohub/halo``ghcr.io/halo-dev/halo` :::info 注意
目前 Halo 2.0 并未更新 Docker 的 latest 标签镜像,主要因为 2.0 不兼容 1.x 版本,防止使用者误操作。我们推荐使用固定版本的标签,比如 `halohub/halo:2.0.0`
:::
1. 创建容器 1. 创建容器
```bash ```bash
docker run \ docker run \
-it -d \ -it -d \
--name halo-next \ --name halo \
-p 8090:8090 \ -p 8090:8090 \
-v ~/.halo2:/root/.halo2 \ -v ~/.halo2:/root/.halo2 \
-e HALO_EXTERNAL_URL=http://localhost:8090/ \ -e HALO_EXTERNAL_URL=http://localhost:8090/ \
-e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \ -e HALO_SECURITY_INITIALIZER_SUPERADMINPASSWORD=P@88w0rd \
halohub/halo-dev:2.0.0-rc.1 halohub/halo:2.0.0
``` ```
:::info :::info
@ -47,59 +55,3 @@ description: 使用 Docker 部署
:::tip :::tip
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。 如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
::: :::
## 使用
目前 RC 版本有以下几个使用注意事项:
1. 由于目前评论组件被插件化且暂不支持提供默认插件,所以如果要体验完整的评论功能,需要手动在后台安装 <https://github.com/halo-sigs/plugin-comment-widget> 评论组件插件。
2. 目前 2.0 已支持的主题和插件会同步到 <https://github.com/halo-sigs/awesome-halo>,你可以在对应仓库的 release 下载最新的主题或插件。
## 反向代理
你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其的基本操作有一定了解。如果你对 Nginx 不熟悉,我们推荐使用 [OneinStack](./other/oneinstack) 来管理 Nginx。
### Nginx
```nginx
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
server_name www.yourdomain.com;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
### Caddy 1.x
```txt
https://www.yourdomain.com {
gzip
tls your@email.com
proxy / localhost:8090 {
transparent
}
}
```
### Caddy 2.x
```txt
www.yourdomain.com
encode gzip
reverse_proxy 127.0.0.1:8090
```
以上配置都可以在 <https://github.com/halo-dev/halo-common> 找到。

@ -1,271 +0,0 @@
---
title: 在 Linux 环境部署
description: 在 Linux 上快速安装 Halo
---
:::info
在继续操作之前,我们推荐您先阅读[《写在前面》](../prepare),这可以快速帮助你了解 Halo。
:::
## 依赖检查
目前运行 Halo 的最低依赖要求为 JRE 11请务必确保在进行下面操作之前已经正确安装了 JRE。
目前介绍两种 Linux 发行版的安装方式,均为 OpenJRE不推荐 Oracle 版本。
### CentOS
```bash
sudo yum install java-17-openjdk -y
```
检查版本:
```bash
java -version
```
如果输出以下类似内容即代表成功
```bash
openjdk version "17.0.4.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 17.0.4.1+1)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.4.1+1, mixed mode, sharing)
```
### Ubuntu
```bash
sudo apt-get install openjdk-17-jre -y
```
检查版本:
```bash
java -version
```
如果输出以下类似内容即代表成功
```bash
openjdk version "17.0.4.1" 2022-08-12
OpenJDK Runtime Environment Homebrew (build 17.0.4.1+1)
OpenJDK 64-Bit Server VM Homebrew (build 17.0.4.1+1, mixed mode, sharing)
```
## 安装
1. 创建新的系统用户
:::info
我们不推荐直接使用系统 root 用户来运行 Halo。如果您需要直接使用 root 用户,请跳过这一步。
:::
创建一个名为 halo 的用户(名字可以随意)
```bash
useradd -m halo
```
给予 sudo 权限
```bash
usermod -aG wheel halo
```
为 halo 用户创建密码
```bash
passwd halo
```
登录到 halo 账户
```bash
su - halo
```
2. 创建存放 [运行包](../prepare#运行包) 的目录,这里以 `~/app` 为例
```bash
mkdir ~/app && cd ~/app
```
3. 下载运行包
```bash
wget https://dl.halo.run/prerelease/halo-2.0-alpha.1.jar -O halo.jar
```
:::info
如果下载速度不理想,可以 [在这里](../downloads) 选择其他下载地址。
:::
4. 创建 [工作目录](../prepare#工作目录)
```bash
mkdir ~/halo-next && cd ~/halo-next
```
5. 下载示例配置文件到 [工作目录](../prepare#工作目录)
```bash
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
```
6. 编辑配置文件,配置数据库或者端口等,如需配置请参考 [配置参考](../config)
```bash
vim application.yaml
```
7. 测试运行 Halo
```bash
cd ~/app && java -jar halo.jar
```
8. 如看到类似以下日志输出,则代表启动成功。
```bash
run.halo.app.listener.StartedListener : Halo started at http://127.0.0.1:8090
run.halo.app.listener.StartedListener : Halo admin started at http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener : Halo has started successfully!
```
打开 `http://ip:端口号` 即可看到安装引导界面。
:::info
如测试启动正常,请继续看`作为服务运行`部分,第 8 步仅仅作为测试。当你关闭 ssh 连接之后,服务会停止。你可使用 <kbd>CTRL</kbd>+<kbd>C</kbd> 停止运行测试进程。
:::
:::tip
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip: 端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
:::
## 作为服务运行
1. 退出 halo 账户,登录到 root 账户
> 如果当前就是 root 账户,请略过此步骤。
```bash
exit
```
2. 下载 Halo 官方的 halo.service 模板
```bash
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
```
3. 修改 halo.service
```bash
vim /etc/systemd/system/halo.service
```
4. 修改配置
- **YOUR_JAR_PATH**Halo 运行包的绝对路径,例如 `/home/halo/app/halo.jar`,注意:此路径不支持 `~` 符号。
- **USER**:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo修改为你创建的用户名称即可。反之请删除 `User=USER`
```ini
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=USER
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
```
:::tip
请确保 `/usr/bin/java` 是正确无误的。建议将 `ExecStart` 中的命令复制出来运行一下,保证命令有效。
:::
5. 重新加载 systemd
```bash
systemctl daemon-reload
```
6. 运行服务
```bash
systemctl start halo
```
7. 在系统启动时启动服务
```bash
systemctl enable halo
```
您可以查看服务日志检查启动状态
```bash
journalctl -n 20 -u halo
```
## 反向代理
你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其基本操作有一定了解。如果你对 Nginx 不熟悉,我们推荐使用 [OneinStack](./other/oneinstack) 来管理 Nginx。
### Nginx
```nginx
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
server_name www.yourdomain.com;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
注意Nginx 默认的 `client_max_body_size` 配置大小为 1m可能会导致你在 Halo 后台上传文件被 Nginx 限制,所以此示例配置文件加上了 `client_max_body_size 1024m;` 这行配置。当然1024m 可根据你的需要自行修改。
### Caddy 1.x
```txt
https://www.yourdomain.com {
gzip
tls your@email.com
proxy / localhost:8090 {
transparent
}
}
```
### Caddy 2.x
```txt
www.yourdomain.com
encode gzip
reverse_proxy 127.0.0.1:8090
```
以上配置都可以在 <https://github.com/halo-dev/halo-common> 找到。

@ -1,149 +0,0 @@
---
title: 与宝塔面板配合使用
description: 与宝塔面板配合使用的指南
---
## 声明
1. 本组织与宝塔面板官方无任何合作和利益关系。
2. 您在使用期间如果有宝塔面板所带来的问题,均与我们无关。
3. 开始之前,我们默认认为您已经安装好了宝塔面板,以及熟悉宝塔面板的使用。
4. 建议使用宝塔面板最新版本,截止到撰写指南的时刻,宝塔面板的版本为 `7.4.7`
## Halo 部署
参见 [在 Linux 环境部署](/getting-started/install/linux)
:::info
`「作为服务运行」` 部分可以不进行操作,只需测试启动无误即可,后面将使用宝塔面板软件包中的 `Supervisor` 托管 Halo 进程。
:::
## 宝塔面板所需软件包下载
需要在宝塔面板的软件商店安装的软件包有:
1. Nginx
2. Supervisor
## 使用 Supervisor 托管 Halo 进程
打开 Supervisor 管理器的设置,点击 `添加守护进程` 按钮。
需要填写的表单信息如下:
- **名称**:随意
- **启动用户**:如果您按照 [在 Linux 环境部署](/getting-started/install/linux) 创建了用于运行 Halo 的用户,则选择您创建的用户即可。否则选择默认的 root。
- **运行目录**:运行包的存放目录,按照实际情况填写,需要保证你所选的目录包含运行包。
- **启动命令**`java -server -Xms256m -Xmx256m -jar halo.jar`
填写完成之后点击 `确定` 按钮即可。
## 添加站点并配置 Nginx
1. 点击左侧的 `网站` 菜单项,点击 `添加站点` 按钮。
需要填写的表单信息如下:
- **域名**:填写您已经解析到当前服务器公网 IP 的域名。
- **PHP版本**:纯静态
填写完成之后点击 `提交` 按钮即可。
2. 设置 SSL
:::info
在配置反向代理之前,我们推荐先设置好 SSL 证书。
:::
- 可选择 `宝塔 SSL` 或者 `Let's Encrypt` 进行证书申请。
- 需要开启右上角的 `强制 HTTPS`
3. 修改配置文件
在根节点添加:
```nginx
upstream halo {
server 127.0.0.1:8090;
}
```
> 其中的 8090 为 Halo 的运行端口,请按需修改。
在 server 节点添加:
```nginx
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
```
修改 server 节点中的 `location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$` 节点:
```nginx
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://halo;
expires 30d;
error_log /dev/null;
access_log off;
}
```
修改 server 节点中的 `location ~ .*\.(js|css)?$` 节点:
```nginx
location ~ .*\.(js|css)?$
{
proxy_pass http://halo;
expires 12h;
error_log /dev/null;
access_log off;
}
```
完整配置文件示例(仅包含关键部分):
```nginx
upstream halo {
server 127.0.0.1:8090;
}
server
{
...
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
proxy_pass http://halo;
expires 30d;
error_log /dev/null;
access_log off;
}
location ~ .*\.(js|css)?$
{
proxy_pass http://halo;
expires 12h;
error_log /dev/null;
access_log off;
}
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
}
```
随后点击保存即可。如果配置不生效,请重载 Nginx 或者 重启 Nginx。
最后,访问域名即可进行 Halo 的初始化。

@ -1,202 +0,0 @@
---
title: 使用 Docker 部署 Halo 和 MySQL
description: Halo 与 MySQL 在 Docker 中的部署方案
---
### 简介
该章节我们将分三种情况为您说明该如何同时使用 Docker + MySQL 来部署 Halo
前提条件: 我们默认您的机器上已经安装好 `Docker`
- 如果你想完全通过 `Docker` 运行 `MySQL``Halo` 请参考小节《统一使用 Docker 安装》
- 如果你已经有 `Docker`部署的 `MySQL`,想安装 `Halo` 请参考小节《MySQL 部署在 Docker 如何使用 Docker 安装 Halo》
- 如果你已有 `MySQL` 但部署在宿主机,想通过 `Docker` 安装 `Halo` 请参考小节《MySQL 在宿主机如何通过 Docker 安装 Halo》
### 统一使用 Docker 安装
如果你的机器上没有现成的 `MySQL` 可供使用,那么您可以选择使用 `Docker` 来运行 `MySQL``Halo`
1. 创建 Docker 自定义桥接网络
```shell
docker network create halo-net
```
:::tip
如果你之前有 Docker 使用经验,你可能已经习惯了使用 `--link` 参数来使容器互联。
但随着 Docker 网络的完善,强烈建议大家将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 --link 参数。
Docker 官方文档中称:该--link 标志是 Docker 的遗留功能。它可能最终会被删除。除非您确定需要继续使用它,否则我们建议您使用用户定义的网络来促进两个容器之间的通信,而不是使用 --link。
:::
2. 拉取 `MySQL` 镜像
```shell
docker pull mysql:8.0.27
```
3. 创建 `MySQL` 数据目录
```shell
mkdir -p ~/.halo/mysql
```
3. 启动 `MySQL` 实例
```shell
docker run --name some-mysql -v ~/.halo/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw --net halo-net --restart=unless-stopped -d mysql:8.0.27
```
注意: 请将 `my-secret-pw` 修改为自己需要的密码后再执行,密码尽量包含小写字母、大写字母、数字和特殊字符且长度超过 8 位。
:::tip 释意
`-e MYSQL_ROOT_PASSWORD=my-secret-pw`: 指定`MySQL`的登录密码为 `my-secret-pw`
`-v ~/.halo/mysql:/var/lib/mysql` 命令: 将宿主机的目录 `~/.halo/mysql` 挂载到容器内部的目录 `/var/lib/mysql`,默认情况下 MySQL 将向 `~/.halo/mysql` 写入其数据文件。
`--net halo-net`: 将该容器加入到 `halo-net` 网络,连接到 `halo-net` 网络的任何其他容器都可以访问 `some-mysql`容器上的所有端口。
:::
4. 进入 MySQL 容器中登录 MySQL 并创建 Halo 需要的数据库
- (1) some-mysql 为 MySQL 实例的容器名称
```shell
docker exec -it some-mysql /bin/bash
```
- (2) 登录 MySQL
```shell
mysql -u root -p
```
- (3) 输入 MySQL 数据库密码
- (4) 创建数据库
```shell
create database halodb character set utf8mb4 collate utf8mb4_bin;
```
- (5) 使用 `exit`退出`MySQL` 并退出容器
5. 创建 `Halo` 工作目录
```bash
mkdir ~/.halo && cd ~/.halo
```
6. 下载示例配置文件到[工作目录](https://docs.halo.run/getting-started/prepare#工作目录)
```shell
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
```
7. 编辑配置文件,配置数据库,其他配置请参考[参考配置](https://docs.halo.run/getting-started/config)
```shell
vim application.yaml
```
你需要做如下几个步骤:
- 注释 H2 database configuration.部分
- 启用 MySQL database configuration.部分
- 修改 datasource 下的 url 中的 ip 地址部分为容器名称并修改密码为您设定的 `MySQL` 密码
修改后的内容如下:
```yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://some-mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: my-secret-pw
```
8. 创建 Halo 容器实例
```shell
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --net halo-net --restart=unless-stopped halohub/halo:1.5.4
```
9. 打开 `http://ip:端口号` 即可看到安装引导界面。
### MySQL 部署在 Docker 如何使用 Docker 安装 Halo
如果您已有 `Docker` 部署的 `MySQL` 实例,那么为了保证 `Halo``MySQL` 两个容器的网络可以互通,和上文同样的思路可以创建一个网络让 `MySQL``Halo` 都加入进来。
1. 使用 `docker ps` 来查看的你 `MySQL` 容器实例的名称或 `container id` 例如 `some-mysql`
2. 创建一个桥接网络,让 `MySQL` 加入,首先使用 `docker network ls` 来查看一下都有哪些网络名称,起一个不会冲突的网络名称,例如 `halo-net`,其次让已经存在的 MySQL 容器实例加入到该网络中
```shell
docker network connect halo-net some-mysql
```
3. 同之前一样创建 `Halo` 工作目录
```bash
mkdir ~/.halo && cd ~/.halo
```
4. 下载示例配置文件到[工作目录](https://docs.halo.run/getting-started/prepare#工作目录)
```shell
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
```
5. 编辑配置文件,修改 `MySQL` 的数据库连接和密码
```shell
vim application.yaml
```
你需要做如下几个步骤:
- 注释 H2 database configuration.部分
- 启用 MySQL database configuration.部分
- 修改 datasource 下的 url 中的 ip 地址部分为容器名称并修改密码为您设定的 `MySQL` 密码
修改后的内容如下:
```yaml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://some-mysql:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: my-secret-pw
```
6. 创建 `Halo` 容器实例,并使用 `--net` 指定网络为刚才创建的`halo-net`
```shell
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --net halo-net --restart=unless-stopped halohub/halo:1.5.4
```
### MySQL 在宿主机如何通过 Docker 安装 Halo
如果你已有 `MySQL` 但安装在宿主机,你想使用 `Docker` 安装 `Halo` 那么此时为了保证 `MySQL``Halo` 能网络互通,可以使用 `host` 网络模式即 `--net host`
1. 创建 `Halo` 的工作目录
```shell
mkdir ~/.halo && cd ~/.halo
```
2. 拉取配置
```shell
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
```
3. 使用 `Docker` 启动 `Halo` 实例并指定网络模式为 `host`
```shell
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --net host --restart=unless-stopped halohub/halo:1.5.4
```

@ -1,11 +1,11 @@
--- ---
title: 与 OneinStack 配合使用 title: 与 OneinStack 配合使用
description: 使用 OneinStack 的 vhost 脚本创建 Halo 站点的 Nginx 配置文件 description: 使用 OneinStack 管理 Halo 服务的反向代理
--- ---
## Halo 部署 ## Halo 部署
参见 [在 Linux 环境部署](../linux.md) 参见 [使用 Docker Compose 部署](../docker-compose.md)
:::info :::info
`「反向代理」` 部分不进行操作,保证 Halo 服务运行无误即可。 `「反向代理」` 部分不进行操作,保证 Halo 服务运行无误即可。
@ -45,73 +45,73 @@ Nginx install dir: /usr/local/nginx
1. 进入到 oneinstack 目录,执行 vhost 创建命令 1. 进入到 oneinstack 目录,执行 vhost 创建命令
```bash ```bash
cd oneinstack cd oneinstack
``` ```
```bash ```bash
sh vhost.sh sh vhost.sh
``` ```
2. 按照提示选择或输入相关信息 2. 按照提示选择或输入相关信息
```bash ```bash
What Are You Doing? What Are You Doing?
1. Use HTTP Only 1. Use HTTP Only
2. Use your own SSL Certificate and Key 2. Use your own SSL Certificate and Key
3. Use Let's Encrypt to Create SSL Certificate and Key 3. Use Let's Encrypt to Create SSL Certificate and Key
q. Exit q. Exit
Please input the correct option: Please input the correct option:
``` ```
这一步是选择证书配置方式,如果你有自己的证书,输入 <kbd>2</kbd> 即可。如果需要使用 `Let's Encrypt` 申请证书,选择 <kbd>3</kbd> 即可。 这一步是选择证书配置方式,如果你有自己的证书,输入 <kbd>2</kbd> 即可。如果需要使用 `Let's Encrypt` 申请证书,选择 <kbd>3</kbd> 即可。
```bash ```bash
Please input domain(example: www.example.com): Please input domain(example: www.example.com):
``` ```
输入自己的域名即可,前提是已经提前解析好了域名。 输入自己的域名即可,前提是已经提前解析好了域名。
```bash ```bash
Please input the directory for the domain:demo.halo.run : Please input the directory for the domain:demo.halo.run :
(Default directory: /data/wwwroot/demo.halo.run): (Default directory: /data/wwwroot/demo.halo.run):
``` ```
提示输入站点根目录,因为我们是使用 Nginx 的反向代理,所以这个目录是没有必要配置的,我们直接使用默认的即可(直接回车)。 提示输入站点根目录,因为我们是使用 Nginx 的反向代理,所以这个目录是没有必要配置的,我们直接使用默认的即可(直接回车)。
```bash ```bash
Do you want to add more domain name? [y/n]: Do you want to add more domain name? [y/n]:
``` ```
是否需要添加其他域名,按照需要选择即可,如果不需要,输入 <kbd>n</kbd> 并回车确认。 是否需要添加其他域名,按照需要选择即可,如果不需要,输入 <kbd>n</kbd> 并回车确认。
```bash ```bash
Do you want to add hotlink protection? [y/n]: Do you want to add hotlink protection? [y/n]:
``` ```
是否需要做防盗链处理,按照需要选择即可。 是否需要做防盗链处理,按照需要选择即可。
```bash ```bash
Allow Rewrite rule? [y/n]: Allow Rewrite rule? [y/n]:
``` ```
路径重写配置,我们不需要,选择 <kbd>n</kbd> 回车确定即可。 路径重写配置,我们不需要,选择 <kbd>n</kbd> 回车确定即可。
```bash ```bash
Allow Nginx/Tengine/OpenResty access_log? [y/n]: Allow Nginx/Tengine/OpenResty access_log? [y/n]:
``` ```
Nginx 的请求日志,建议选择 <kbd>y</kbd> Nginx 的请求日志,建议选择 <kbd>y</kbd>
这样就完成了 vhost 站点的创建,最终会输出站点的相关信息: 这样就完成了 vhost 站点的创建,最终会输出站点的相关信息:
```bash ```bash
Your domain: demo.halo.run Your domain: demo.halo.run
Virtualhost conf: /usr/local/nginx/conf/vhost/demo.halo.run.conf Virtualhost conf: /usr/local/nginx/conf/vhost/demo.halo.run.conf
Directory of: /data/wwwroot/demo.halo.run Directory of: /data/wwwroot/demo.halo.run
``` ```
Nginx 的配置文件即 `/usr/local/nginx/conf/vhost/demo.halo.run.conf` Nginx 的配置文件即 `/usr/local/nginx/conf/vhost/demo.halo.run.conf`
## 修改 Nginx 配置文件 ## 修改 Nginx 配置文件
@ -119,136 +119,136 @@ Nginx 的配置文件即 `/usr/local/nginx/conf/vhost/demo.halo.run.conf`。
1. 使用你熟悉的工具打开配置文件,此教程使用 vim。 1. 使用你熟悉的工具打开配置文件,此教程使用 vim。
```bash ```bash
vim /usr/local/nginx/conf/vhost/demo.halo.run.conf vim /usr/local/nginx/conf/vhost/demo.halo.run.conf
``` ```
2. 删除一些不必要的配置 2. 删除一些不必要的配置
```nginx ```nginx
location ~ [^/]\.php(/|$) { location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000; #fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php-cgi.sock; fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php; fastcgi_index index.php;
include fastcgi.conf; include fastcgi.conf;
} }
``` ```
此段配置是针对 php 应用的,所以可以删掉。 此段配置是针对 php 应用的,所以可以删掉。
3. 添加 `upstream` 配置 3. 添加 `upstream` 配置
`server` 的同级节点添加如下配置: `server` 的同级节点添加如下配置:
```nginx ```nginx {2}
upstream halo { upstream halo {
server 127.0.0.1:8090; server 127.0.0.1:8090;
} }
``` ```
4. 在 `server` 节点添加如下配置 4. 在 `server` 节点添加如下配置
```nginx ```nginx {6}
location / { location / {
proxy_set_header HOST $host; proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://halo; proxy_pass http://halo;
} }
``` ```
5. 修改 `location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$` 节点 5. 修改 `location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$` 节点
```nginx ```nginx {2}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
proxy_pass http://halo;
expires 30d;
access_log off;
}
```
6. 修改 `location ~ .*\.(js|css)?$` 节点
```nginx
location ~ .*\.(js|css)?$ {
proxy_pass http://halo;
expires 7d;
access_log off;
}
```
如果不按照第 56 步操作,请求一些图片或者样式文件不会经过 Halo所以请不要忽略此配置。
7. 添加 acme.sh 续签验证路由
OneinStack 使用的 acme.sh 管理证书,如果你在创建 vhost 的时候选择了使用 `Let's Encrypt` 申请证书,那么 OneinStack 会在系统内添加一个定时任务去自动续签证书acme.sh 默认验证站点所有权的方式为在站点根目录生成一个文件(.well-known来做验证由于配置了反向代理所以在验证的时候是无法直接访问到站点目录下的 .well-known 文件夹下的验证文件的。需要添加如下配置:
```nginx
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
allow all;
root /data/wwwroot/demo.halo.run/;
}
```
至此,配置修改完毕,保存即可。最终你的配置文件可能如下面配置一样:
```nginx
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/demo.halo.run.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/demo.halo.run.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name demo.halo.run;
access_log /data/wwwlogs/demo.halo.run_nginx.log combined;
index index.html index.htm index.php;
root /data/wwwroot/demo.halo.run;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
include /usr/local/nginx/conf/rewrite/none.conf;
#error_page 404 /404.html;
#error_page 502 /502.html;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
proxy_pass http://halo; proxy_pass http://halo;
expires 30d; expires 30d;
access_log off; access_log off;
} }
```
6. 修改 `location ~ .*\.(js|css)?$` 节点
```nginx {2}
location ~ .*\.(js|css)?$ { location ~ .*\.(js|css)?$ {
proxy_pass http://halo; proxy_pass http://halo;
expires 7d; expires 7d;
access_log off; access_log off;
} }
location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) { ```
deny all;
} 如果不按照第 56 步操作,请求一些图片或者样式文件不会经过 Halo所以请不要忽略此配置。
location / {
proxy_set_header HOST $host; 7. 添加 acme.sh 续签验证路由
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr; OneinStack 使用的 acme.sh 管理证书,如果你在创建 vhost 的时候选择了使用 `Let's Encrypt` 申请证书,那么 OneinStack 会在系统内添加一个定时任务去自动续签证书acme.sh 默认验证站点所有权的方式为在站点根目录生成一个文件(.well-known来做验证由于配置了反向代理所以在验证的时候是无法直接访问到站点目录下的 .well-known 文件夹下的验证文件的。需要添加如下配置:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://halo; ```nginx {4}
}
location ^~ /.well-known/acme-challenge/ { location ^~ /.well-known/acme-challenge/ {
default_type "text/plain"; default_type "text/plain";
allow all; allow all;
root /data/wwwroot/demo.halo.run/; root /data/wwwroot/demo.halo.run/;
} }
} ```
```
至此,配置修改完毕,保存即可。最终你的配置文件可能如下面配置一样:
```nginx {2,20,29,34,41-47,51}
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /usr/local/nginx/conf/ssl/demo.halo.run.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/demo.halo.run.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_buffer_size 1400;
add_header Strict-Transport-Security max-age=15768000;
ssl_stapling on;
ssl_stapling_verify on;
server_name demo.halo.run;
access_log /data/wwwlogs/demo.halo.run_nginx.log combined;
index index.html index.htm index.php;
root /data/wwwroot/demo.halo.run;
if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
include /usr/local/nginx/conf/rewrite/none.conf;
#error_page 404 /404.html;
#error_page 502 /502.html;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
proxy_pass http://halo;
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
proxy_pass http://halo;
expires 7d;
access_log off;
}
location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) {
deny all;
}
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://halo;
}
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
allow all;
root /data/wwwroot/demo.halo.run/;
}
}
```
## 重载 Nginx 使配置生效 ## 重载 Nginx 使配置生效

@ -1,85 +0,0 @@
---
title: 腾讯云 CloudBase
description: 使用腾讯云 CloudBase 一键部署
---
## 声明
1. 本组织与腾讯云官方无任何合作和利益关系。
2. 您在使用期间如果有腾讯云所带来的问题,均与我们无关。
3. 开始之前,我们默认认为您已经了解过 [腾讯云云开发](https://cloud.tencent.com/product/tcb)。
## 注意事项
1. 系统使用内置的 H2 Database暂不支持使用 MySQL。
1. 工作目录保存在腾讯云提供的 CFS 上,在使用此方式创建应用的时候会要求创建 CFS。
1. 目前使用该方式部署,不支持修改 [配置文件](/getting-started/config)。
1. 费用相关请参考 <https://cloud.tencent.com/document/product/876/18864>
## 进入云开发页面
点击下方按钮即可进入到腾讯云云开发 CloudBase 创建应用界面,此按钮可在云开发页面自动选择 Halo 的配置模板。
### GitHub
[![CloudBase](https://main.qcloudimg.com/raw/67f5a389f1ac6f3b4d04c7256438e44f.svg)](https://console.cloud.tencent.com/tcb/env/index?action=CreateAndDeployCloudBaseProject&appUrl=https%3A%2F%2Fgithub.com%2Fhalo-dev%2Ftencent-cloudbase-halo&branch=master)
### Gitee
[![CloudBase](https://main.qcloudimg.com/raw/67f5a389f1ac6f3b4d04c7256438e44f.svg)](https://console.cloud.tencent.com/tcb/env/index?action=CreateAndDeployCloudBaseProject&appUrl=https%3A%2F%2Fgitee.com%2Fhalo-dev%2Ftencent-cloudbase-halo&branch=master)
## 配置并部署
**填写环境名称**,这里建议把 `开启免费额度` 打开,然后点击下一步。
![tencent-cloudbase-1.png](/img/tencent-cloudbase/tencent-cloudbase-1.png)
**应用配置**,需要注意:这里需要开通 CFS用于存储 Halo 的工作目录。
![tencent-cloudbase-2.png](/img/tencent-cloudbase/tencent-cloudbase-2.png)
**提交授权**,点击 `授权并开通`
![tencent-cloudbase-3.png](/img/tencent-cloudbase/tencent-cloudbase-3.png)
**创建环境中**,完成之后,点击 `环境` 下面的卡片,即可进入详细配置页面。
![tencent-cloudbase-4.png](/img/tencent-cloudbase/tencent-cloudbase-4.png)
**构建应用中**,这里可能会等待较长时间。
![tencent-cloudbase-5.png](/img/tencent-cloudbase/tencent-cloudbase-5.png)
**构建应用完成**,需要注意的是,构建完成之后可能还需要等待一小段时间才能正常访问,这个期间是在等待 Halo 应用启动完毕。点击 `访问` 按钮即可进入 Halo 初始化页面。
![tencent-cloudbase-6.png](/img/tencent-cloudbase/tencent-cloudbase-6.png)
**Halo 初始化页面**
![tencent-cloudbase-7.png](/img/tencent-cloudbase/tencent-cloudbase-7.png)
**CFS 管理页面**[https://console.cloud.tencent.com/cfs/fs](https://console.cloud.tencent.com/cfs/fs)
![tencent-cloudbase-8.png](/img/tencent-cloudbase/tencent-cloudbase-8.png)
## 更新 Halo
> 当 Halo 有新版本更新的时候,你可以采用下面的方式进行版本升级。
### 删除旧版本
前往 [云托管](https://console.cloud.tencent.com/tcb/service) 页面,点击服务名称进入版本列表,然后删除当前使用的版本。
![tencent-cloudbase-10.png](/img/tencent-cloudbase/tencent-cloudbase-10.png)
### 重新部署
回到 [我的应用](https://console.cloud.tencent.com/tcb/apps/index) 页面,点击 `部署` 按钮并确定。
![tencent-cloudbase-11.png](/img/tencent-cloudbase/tencent-cloudbase-11.png)
## 相关链接
- [Halo 配置文件仓库](https://github.com/halo-dev/tencent-cloudbase-halo)
- [腾讯云 CloudBase](https://console.cloud.tencent.com/tcb/env/index)
- [云开发使用指南](https://cloud.tencent.com/document/product/876)

@ -6,6 +6,8 @@ title: 三方指南
此类指南或教程均来自第三方或者网友提供,我们不能一直保证其具有有效性,请参考的时候仔细甄别。另外,如果您有写类似的教程,也可以[联系我们](mailto:hi@halo.run)放在下方。 此类指南或教程均来自第三方或者网友提供,我们不能一直保证其具有有效性,请参考的时候仔细甄别。另外,如果您有写类似的教程,也可以[联系我们](mailto:hi@halo.run)放在下方。
::: :::
## Halo 1.0
- [Halo 博客安装教程,一款优秀的 Java 开源博客系统](https://www.cnblogs.com/bronya0/p/14198512.html) - [Halo 博客安装教程,一款优秀的 Java 开源博客系统](https://www.cnblogs.com/bronya0/p/14198512.html)
- [如何用服务器优雅地搭建一个博客—Hello,Halo!](https://www.bilibili.com/video/BV1JN411Q7Na/) - [如何用服务器优雅地搭建一个博客—Hello,Halo!](https://www.bilibili.com/video/BV1JN411Q7Na/)
- [Halo+云服务器+Nginx反向代理实现个人博客搭建](https://yusart.xyz/archives/halo%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA) - [Halo+云服务器+Nginx反向代理实现个人博客搭建](https://yusart.xyz/archives/halo%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA)

@ -1,79 +0,0 @@
---
title: 在 Windows 服务器上部署
---
:::info
在继续操作之前,我们推荐您先阅读[《写在前面》](/getting-started/prepare),这可以快速帮助你了解 Halo。
:::
## 系统要求
目前运行 Halo 的最低依赖要求为 JRE 11而 Java9 之后将不再提供 32 位系统的环境,因此请确保您的服务器属于 64 位 CPU。
## 依赖检查
如下将介绍在 Windows 下安装 OpenJRE 11 的方式。如果您的服务器已经安装过 OpenJRE 11则可以直接跳过本节。
1. 使用浏览器前往 <https://developers.redhat.com/content-gateway/file/java-11-openjdk-jre-11.0.10.9-1.windows.redhat.x86_64.msi> 下载 OpenJRE 11 的可执行程序。
2. 下载时会提示登录“红帽”,任意注册账号登录即可。登录完成之后会自动下载 JRE。
3. 双击 MSI 安装程序,安装 JRE 至服务器,注意到安装程序第三步时,勾选 `JAVA_HOME Variable`,其余直接 `next` 即可
![img2.png](/img/img2.png)
4. 安装完成之后, 使用 <kbd>Win</kbd>+<kbd>R</kbd> 打开运行窗口并输入 `CMD` 后,回车打开 CMD 窗口。之后键入 `java -version`。显示如下所示内容即代表安装成功。
```bash
openjdk version "11.0.10" 2021-01-19 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.10+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.10+9-LTS, mixed mode)
```
![1615618595.jpg](/img/1615618595.jpg)
## 安装 Halo
1. 下载运行包
使用浏览器前往 <https://dl.halo.run/release/halo-1.4.6.jar> 下载最新版本 Halo 运行包,**并保存至桌面**。修改 Jar 包名称为 `halo.jar`
:::info
如果下载速度不理想,可以[在这里](/getting-started/downloads)选择其他下载地址。
:::
2. 下载示例配置文件
使用浏览器前往 <https://dl.halo.run/config/application-template.yaml> 下载示例配置文件,**并保存至桌面**。修改示例配置文件名字为 `application.yaml`
:::tip
IE 浏览器下,配置文件可能会以文本的形式直接打开,因此推荐使用其他浏览器或下载器下载。
:::
3. 使用记事本编辑配置文件,配置数据库或者端口等,如需配置请参考[参考配置](/getting-started/config)
4. 测试运行 Halo
使用 <kbd>Win</kbd>+<kbd>R</kbd> 打开运行窗口并输入 `CMD` 后,回车打开 CMD 窗口,并键入如下命令。
```bash
cd Desktop && java -jar halo.jar
```
5. 如看到类似以下日志输出,则代表启动成功。
```bash
run.halo.app.listener.StartedListener : Halo started at http://127.0.0.1:8090
run.halo.app.listener.StartedListener : Halo admin started at http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener : Halo has started successfully!
```
浏览器打开 `http://ip:端口号` 即可看到安装引导界面。
:::info
如测试启动正常,请继续看`作为服务运行`部分,第 4 ~ 5 步仅仅作为测试。当你关闭 CMD 窗口之后,服务会停止。你可使用 <kbd>CTRL</kbd>+<kbd>C</kbd> 停止运行测试进程。
:::
:::tip
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
:::

@ -1,119 +0,0 @@
---
title: 版本升级
description: 版本升级指南
---
当前最新版本为1.5.4。在更新之前建议先查阅变更日志:<https://github.com/halo-dev/halo/releases/tag/v1.5.4>
## Linux
:::info
我们假设你存放运行包的路径为 `~/app`,运行包的文件名为 `halo.jar`,且使用了 systemd 进行进程管理,如有不同,下列命令请按需修改。
:::
1. 停止正在运行的服务
```bash
service halo stop
```
2. 备份数据以及旧的运行包(**重要**
```bash
cp -r ~/.halo ~/.halo.archive
```
```bash
mv ~/app/halo.jar ~/app/halo.jar.archive
```
> 需要注意的是,`.halo.archive` 和 `halo.jar.archive` 文件名不一定要根据此文档命名,这里仅仅是个示例。
3. 清空 [leveldb](./config.md#缓存) 缓存(如果有使用 leveldb 作为缓存策略)
```bash
rm -rf ~/.halo/.leveldb
```
4. 下载最新版本的运行包
```bash
cd ~/app && wget https://dl.halo.run/release/halo-1.5.4.jar -O halo.jar
```
:::info
如果下载速度不理想,可以[在这里](/getting-started/downloads)选择其他下载地址。
:::
5. 启动测试
```bash
java -jar halo.jar
```
:::info
如测试启动正常,请继续下一步。使用 <kbd>CTRL</kbd>+<kbd>C</kbd> 停止运行测试进程。
:::
6. 重启服务
```bash
service halo start
```
## Docker
:::info
我们假设您的容器是按照 [使用 Docker 部署 Halo](/getting-started/install/docker) 中的命令构建的。如有不同,请根据实际情况修改。
:::
1. 停止并删除当前运行中的容器
```bash
docker stop halo
```
```bash
docker rm -f halo
```
:::info
你的容器名称不一定为 `halo`,在执行前可以先执行 `docker ps -a` 查看一下。
:::
2. 备份数据(重要)
```bash
cp -r ~/.halo ~/.halo.archive
```
> 需要注意的是,`.halo.archive` 文件名不一定要根据此文档命名,这里仅仅是个示例。
3. 清空 [leveldb](./config.md#缓存) 缓存(如果有使用 leveldb 作为缓存策略)
```bash
rm -rf ~/.halo/.leveldb
```
4. 拉取最新的 Halo 镜像
```bash
docker pull halohub/halo:1.5.4
```
:::info
查看最新版本镜像:<https://hub.docker.com/r/halohub/halo> ,我们推荐使用具体版本号的镜像,但也提供了 `latest` 标签的镜像,它始终是最新的。
:::
5. 创建容器
```bash
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.4
```
- **-it** 开启输入功能并连接伪终端
- **-d** 后台运行容器
- **--name** 为容器指定一个名称
- **-p** 端口映射,格式为 `主机(宿主)端口:容器端口` ,可在 `application.yaml` 配置。
- **-v** 工作目录映射。形式为:-v 宿主机路径:/root/.halo后者不能修改。
- **--restart** 建议设置为 `unless-stopped`,在 Docker 启动的时候自动启动 Halo 容器。

@ -23,7 +23,7 @@ slug: /
<a href="https://github.com/halo-dev/halo/actions"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/halo-dev/halo/Halo%20CI?style=flat-square" /></a> <a href="https://github.com/halo-dev/halo/actions"><img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/halo-dev/halo/Halo%20CI?style=flat-square" /></a>
<br /> <br />
<a href="https://halo.run">官网</a> <a href="https://halo.run">官网</a>
<a href="https://docs.halo.run/2.0.0-SNAPSHOT">文档2.0 RC</a> <a href="https://docs.halo.run">文档</a>
<a href="https://bbs.halo.run">社区</a> <a href="https://bbs.halo.run">社区</a>
<a href="https://gitee.com/halo-dev">Gitee</a> <a href="https://gitee.com/halo-dev">Gitee</a>
<a href="https://t.me/halo_dev">Telegram 频道</a> <a href="https://t.me/halo_dev">Telegram 频道</a>
@ -31,23 +31,13 @@ slug: /
------------------------------ ------------------------------
## 注意
当前分支为 Halo 2.0 的开发分支,目前 Halo 2.0 处于 RC 阶段,暂时无法从 1.5 直接升级不建议在生产环境使用。稳定版本Halo 1.x请查阅以下地址
- 1.5 分支:<https://github.com/halo-dev/halo/tree/release-1.5>
- 1.6 分支:<https://github.com/halo-dev/halo/tree/release-1.6>
- 1.6 文档:<https://docs.halo.run>
## 快速开始 ## 快速开始
### Docker
```bash ```bash
docker run -it -d --name halo-next -p 8090:8090 -v ~/.halo2:/root/.halo2 --restart=unless-stopped halohub/halo-dev:2.0.0-rc.1 docker run -it -d --name halo-next -p 8090:8090 -v ~/.halo2:/root/.halo2 --restart=unless-stopped halohub/halo:2.0.0
``` ```
详细部署文档请查阅:<https://docs.halo.run/2.0.0-SNAPSHOT/getting-started/install/docker> 详细部署文档请查阅:<https://docs.halo.run/getting-started/install/docker-compose>
## 在线体验 ## 在线体验
@ -58,7 +48,8 @@ docker run -it -d --name halo-next -p 8090:8090 -v ~/.halo2:/root/.halo2 --resta
## 生态 ## 生态
可访问 [awesome-halo](https://github.com/halo-sigs/awesome-halo) 查看已经适用于 Halo 2.0 的主题和插件,以及适用于 Halo 1.x 的相关仓库。 可访问 [awesome-halo](https://github.com/halo-sigs/awesome-halo) 查看已经适用于 Halo 2.0 的主题和插件,以及适用于 Halo
1.x 的相关仓库。
## 许可证 ## 许可证

@ -32,9 +32,14 @@ module.exports = {
type: "generated-index", type: "generated-index",
}, },
items: [ items: [
// "getting-started/install/linux",
"getting-started/install/docker",
"getting-started/install/docker-compose", "getting-started/install/docker-compose",
"getting-started/install/docker",
{
type: "category",
label: "其他指南",
items: ["getting-started/install/other/oneinstack"],
},
"getting-started/install/third-party",
], ],
}, },
"getting-started/migrate-from-1.x", "getting-started/migrate-from-1.x",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Loading…
Cancel
Save