mirror of
https://github.com/halo-dev/docs.git
synced 2026-05-07 01:01:45 +08:00
refactor: document versioning structure (#99)
重构文档版本结构。 - 移除 1.5/1.4 相关所有 patch 版本的文档,使用 1.5/1.4 版本号代替。 - 创建 1.6 的文档版本。 - 后续针对 1.5 或者 1.6 的更新,可以直接对具体版本进行更改。 本打算使用 [@docusaurus/plugin-client-redirects](https://docusaurus.io/zh-CN/docs/api/plugins/@docusaurus/plugin-client-redirects) 做已删除的 patch 版本的重定向,旦可能不是很好满足匹配重定向的需求。~~所以在此 PR 合并之前我将通过 Nginx 对具体版本进行重定向转发~~。 比如:`/1.4.17/{path}` 重定向到 `/1.4/{path}`,`/1.5.4/{path}` `/1.5.3/{path}` 都从定向到 `/1.5/{path}` /kind documentation /cc @halo-dev/sig-docs > PS: 此 PR 未对新发布的 [1.6.0](https://github.com/halo-dev/halo/releases/tag/v1.6.0) [1.5.5](https://github.com/halo-dev/halo/releases/tag/v1.5.5) [2.0.0-alpha.2](https://github.com/halo-dev/halo/releases/tag/v2.0.0-alpha.2) 做修改,将在后续 PR 更改。 ```release-note None ```
This commit is contained in:
@@ -0,0 +1,207 @@
|
||||
---
|
||||
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
|
||||
cache: memory
|
||||
```
|
||||
|
||||
目前支持两种策略:
|
||||
|
||||
- `memory` 将数据缓存至内存,重启服务缓存将清空。
|
||||
- `level` 将数据缓存至本地,重启服务不会清空缓存。
|
||||
|
||||
### 压缩
|
||||
|
||||
启用压缩对于减少带宽和加快页面加载非常有用,在**未使用** `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
|
||||
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
|
||||
cache: memory
|
||||
```
|
||||
|
||||
官方的完整示例配置文件可以在 [https://dl.halo.run/config/](https://dl.halo.run/config/) 下找到。
|
||||
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: 资源下载
|
||||
description: 目前所有与 Halo 相关的下载地址
|
||||
---
|
||||
|
||||
## GitHub
|
||||
|
||||
:::note
|
||||
如果您的服务器在海外,推荐从 GitHub 下载。
|
||||
:::
|
||||
|
||||
- [运行包](https://github.com/halo-dev/halo/releases)
|
||||
- [配置文件](https://github.com/halo-dev/halo-common)
|
||||
|
||||
## 官方镜像源
|
||||
|
||||
- [https://dl.halo.run](https://dl.halo.run)
|
||||
|
||||
此镜像源由 [Nova Kwok](https://nova.moe/) 提供并维护。
|
||||
|
||||
## 三方镜像源
|
||||
|
||||
- [https://halo.cary.tech](https://halo.cary.tech)
|
||||
|
||||
此镜像源由 [新逸Cary](https://blog.xinac.cn) 提供并维护。
|
||||
@@ -0,0 +1,108 @@
|
||||
---
|
||||
title: 使用 Docker 部署 Halo
|
||||
description: 使用 Docker 部署
|
||||
---
|
||||
|
||||
:::info
|
||||
在继续操作之前,我们推荐您先阅读[《写在前面》](/getting-started/prepare),这可以快速帮助你了解 Halo。
|
||||
:::
|
||||
|
||||
## 使用 Docker 镜像
|
||||
|
||||
Halo 在 Docker Hub 上发布的镜像为 [halohub/halo](https://hub.docker.com/r/halohub/halo)
|
||||
|
||||
1. 创建[工作目录](/getting-started/prepare#工作目录)
|
||||
|
||||
```bash
|
||||
mkdir ~/.halo && cd ~/.halo
|
||||
```
|
||||
|
||||
2. 下载示例配置文件到[工作目录](/getting-started/prepare#工作目录)
|
||||
|
||||
```bash
|
||||
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
|
||||
```
|
||||
|
||||
3. 编辑配置文件,配置数据库或者端口等,如需配置请参考[参考配置](/getting-started/config)
|
||||
|
||||
```bash
|
||||
vim application.yaml
|
||||
```
|
||||
|
||||
4. 拉取最新的 Halo 镜像
|
||||
|
||||
```bash
|
||||
docker pull halohub/halo:1.4.17
|
||||
```
|
||||
|
||||
:::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.4.17
|
||||
```
|
||||
|
||||
- **-it:** 开启输入功能并连接伪终端
|
||||
- **-d:** 后台运行容器
|
||||
- **--name:** 为容器指定一个名称
|
||||
- **-p:** 端口映射,格式为 `主机(宿主)端口:容器端口` ,可在 `application.yaml` 配置。
|
||||
- **-v:** 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
|
||||
- **--restart:** 建议设置为 `unless-stopped`,在 Docker 启动的时候自动启动 Halo 容器。
|
||||
|
||||
6. 打开 `http://ip:端口号` 即可看到安装引导界面。
|
||||
|
||||
:::tip
|
||||
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 `http://ip:端口号` 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
|
||||
:::
|
||||
|
||||
## 反向代理
|
||||
|
||||
你可以在下面的反向代理软件中任选一项,我们假设你已经安装好了其中一项,并对其的基本操作有一定了解。如果你对 Nginx 不熟悉,我们推荐使用 [OneinStack](/getting-started/install/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> 找到。
|
||||
@@ -0,0 +1,271 @@
|
||||
---
|
||||
title: 在 Linux 环境部署
|
||||
description: 在Linux上快速安装Halo
|
||||
---
|
||||
|
||||
:::info
|
||||
在继续操作之前,我们推荐您先阅读[《写在前面》](/getting-started/prepare),这可以快速帮助你了解 Halo。
|
||||
:::
|
||||
|
||||
## 依赖检查
|
||||
|
||||
目前运行 Halo 的最低依赖要求为 JRE 11,请务必确保在进行下面操作之前已经正确安装了 JRE。
|
||||
|
||||
目前介绍两种 Linux 发行版的安装方式,均为 OpenJRE,不推荐 Oracle 版本。
|
||||
|
||||
### CentOS <i class="mdi mdi-centos"></i>
|
||||
|
||||
```bash
|
||||
sudo yum install java-11-openjdk -y
|
||||
```
|
||||
|
||||
检查版本:
|
||||
|
||||
```bash
|
||||
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, sharing)
|
||||
```
|
||||
|
||||
### Ubuntu <i class="mdi mdi-ubuntu"></i>
|
||||
|
||||
```bash
|
||||
sudo apt-get install openjdk-11-jre -y
|
||||
```
|
||||
|
||||
检查版本:
|
||||
|
||||
```bash
|
||||
java -version
|
||||
```
|
||||
|
||||
如果输出以下类似内容即代表成功
|
||||
|
||||
```bash
|
||||
openjdk version "11.0.10" 2021-01-19
|
||||
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
|
||||
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode)
|
||||
```
|
||||
|
||||
## 安装
|
||||
|
||||
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. 创建存放 [运行包](/getting-started/prepare#运行包) 的目录,这里以 `~/app` 为例
|
||||
|
||||
```bash
|
||||
mkdir ~/app && cd ~/app
|
||||
```
|
||||
|
||||
3. 下载运行包
|
||||
|
||||
```bash
|
||||
wget https://dl.halo.run/release/halo-1.4.17.jar -O halo.jar
|
||||
```
|
||||
|
||||
:::info
|
||||
如果下载速度不理想,可以 [在这里](/getting-started/downloads) 选择其他下载地址。
|
||||
:::
|
||||
|
||||
4. 创建 [工作目录](/getting-started/prepare#工作目录)
|
||||
|
||||
```bash
|
||||
mkdir ~/.halo && cd ~/.halo
|
||||
```
|
||||
|
||||
5. 下载示例配置文件到 [工作目录](/getting-started/prepare#工作目录)
|
||||
|
||||
```bash
|
||||
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
|
||||
```
|
||||
|
||||
6. 编辑配置文件,配置数据库或者端口等,如需配置请参考 [参考配置](/getting-started/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](/getting-started/install/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> 找到。
|
||||
@@ -0,0 +1,149 @@
|
||||
---
|
||||
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 的初始化。
|
||||
@@ -0,0 +1,202 @@
|
||||
---
|
||||
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.4.17
|
||||
```
|
||||
|
||||
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.4.17
|
||||
```
|
||||
|
||||
### 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.4.17
|
||||
```
|
||||
@@ -0,0 +1,274 @@
|
||||
---
|
||||
title: 与 OneinStack 配合使用
|
||||
description: 使用 OneinStack 的 vhost 脚本创建 Halo 站点的 Nginx 配置文件
|
||||
---
|
||||
|
||||
## Halo 部署
|
||||
|
||||
参见 [在 Linux 环境部署](/getting-started/install/linux)
|
||||
|
||||
:::info
|
||||
`「反向代理」` 部分不进行操作,保证 Halo 服务运行无误即可。
|
||||
:::
|
||||
|
||||
## 通过 OneinStack 安装 Nginx
|
||||
|
||||
点击下方链接进入 OneinStack 官网,仅选择 `安装 Nginx`,其他的都可以取消选择。
|
||||
|
||||
<https://oneinstack.com/auto>
|
||||
|
||||
最后点击 `复制安装命令` 到服务器执行即可。如果你仅安装 Nginx,你的链接应该是这样:
|
||||
|
||||
```bash
|
||||
wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1
|
||||
```
|
||||
|
||||
:::info
|
||||
这一步会经过编译安装,可能会导致安装时间很漫长,这主要取决于你服务器的性能。
|
||||
:::
|
||||
|
||||
出现下面的信息即代表安装成功:
|
||||
|
||||
```bash
|
||||
Nginx installed successfully!
|
||||
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
|
||||
Redirecting to /bin/systemctl start nginx.service
|
||||
####################Congratulations########################
|
||||
Total OneinStack Install Time: 5 minutes
|
||||
|
||||
Nginx install dir: /usr/local/nginx
|
||||
```
|
||||
|
||||
## 创建 vhost
|
||||
|
||||
> 即创建一个站点,你可以通过这样的方式在你的服务器创建无限个站点。接下来的目的就是创建一个站点,并反向代理到 Halo。这一步在此教程使用 `demo.halo.run` 这个域名做演示,实际情况请修改此域名。
|
||||
|
||||
1. 进入到 oneinstack 目录,执行 vhost 创建命令
|
||||
|
||||
```bash
|
||||
cd oneinstack
|
||||
```
|
||||
|
||||
```bash
|
||||
sh vhost.sh
|
||||
```
|
||||
|
||||
2. 按照提示选择或输入相关信息
|
||||
|
||||
```bash
|
||||
What Are You Doing?
|
||||
1. Use HTTP Only
|
||||
2. Use your own SSL Certificate and Key
|
||||
3. Use Let's Encrypt to Create SSL Certificate and Key
|
||||
q. Exit
|
||||
Please input the correct option:
|
||||
```
|
||||
|
||||
这一步是选择证书配置方式,如果你有自己的证书,输入 <kbd>2</kbd> 即可。如果需要使用 `Let's Encrypt` 申请证书,选择 <kbd>3</kbd> 即可。
|
||||
|
||||
```bash
|
||||
Please input domain(example: www.example.com):
|
||||
```
|
||||
|
||||
输入自己的域名即可,前提是已经提前解析好了域名。
|
||||
|
||||
```bash
|
||||
Please input the directory for the domain:demo.halo.run :
|
||||
(Default directory: /data/wwwroot/demo.halo.run):
|
||||
```
|
||||
|
||||
提示输入站点根目录,因为我们是使用 Nginx 的反向代理,所以这个目录是没有必要配置的,我们直接使用默认的即可(直接回车)。
|
||||
|
||||
```bash
|
||||
Do you want to add more domain name? [y/n]:
|
||||
```
|
||||
|
||||
是否需要添加其他域名,按照需要选择即可,如果不需要,输入 <kbd>n</kbd> 并回车确认。
|
||||
|
||||
```bash
|
||||
Do you want to add hotlink protection? [y/n]:
|
||||
```
|
||||
|
||||
是否需要做防盗链处理,按照需要选择即可。
|
||||
|
||||
```bash
|
||||
Allow Rewrite rule? [y/n]:
|
||||
```
|
||||
|
||||
路径重写配置,我们不需要,选择 <kbd>n</kbd> 回车确定即可。
|
||||
|
||||
```bash
|
||||
Allow Nginx/Tengine/OpenResty access_log? [y/n]:
|
||||
```
|
||||
|
||||
Nginx 的请求日志,建议选择 <kbd>y</kbd>。
|
||||
|
||||
这样就完成了 vhost 站点的创建,最终会输出站点的相关信息:
|
||||
|
||||
```bash
|
||||
Your domain: demo.halo.run
|
||||
Virtualhost conf: /usr/local/nginx/conf/vhost/demo.halo.run.conf
|
||||
Directory of: /data/wwwroot/demo.halo.run
|
||||
```
|
||||
|
||||
Nginx 的配置文件即 `/usr/local/nginx/conf/vhost/demo.halo.run.conf`。
|
||||
|
||||
## 修改 Nginx 配置文件
|
||||
|
||||
上方创建 vhost 的过程并没有创建反向代理的配置,所以需要我们自己修改一下配置文件。
|
||||
|
||||
1. 使用你熟悉的工具打开配置文件,此教程使用 vim。
|
||||
|
||||
```bash
|
||||
vim /usr/local/nginx/conf/vhost/demo.halo.run.conf
|
||||
```
|
||||
|
||||
2. 删除一些不必要的配置
|
||||
|
||||
```nginx
|
||||
location ~ [^/]\.php(/|$) {
|
||||
#fastcgi_pass remote_php_ip:9000;
|
||||
fastcgi_pass unix:/dev/shm/php-cgi.sock;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi.conf;
|
||||
}
|
||||
```
|
||||
|
||||
此段配置是针对 php 应用的,所以可以删掉。
|
||||
|
||||
3. 添加 `upstream` 配置
|
||||
|
||||
在 `server` 的同级节点添加如下配置:
|
||||
|
||||
```nginx
|
||||
upstream halo {
|
||||
server 127.0.0.1:8090;
|
||||
}
|
||||
```
|
||||
|
||||
4. 在 `server` 节点添加如下配置
|
||||
|
||||
```nginx
|
||||
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;
|
||||
}
|
||||
```
|
||||
|
||||
5. 修改 `location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$` 节点
|
||||
|
||||
```nginx
|
||||
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;
|
||||
}
|
||||
```
|
||||
|
||||
如果不按照第 5,6 步操作,请求一些图片或者样式文件不会经过 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)$ {
|
||||
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 配置
|
||||
|
||||
```bash
|
||||
nginx -t
|
||||
```
|
||||
|
||||
如果输出如下提示则代表配置有效:
|
||||
|
||||
```bash
|
||||
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
|
||||
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
|
||||
```
|
||||
|
||||
重载 Nginx 配置:
|
||||
|
||||
```bash
|
||||
nginx -s reload
|
||||
```
|
||||
|
||||
至此,整个教程完毕,现在你可以访问域名检查是否已经配置成功。
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
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 的配置模板。
|
||||
|
||||
[](https://console.cloud.tencent.com/tcb/env/index?action=CreateAndDeployCloudBaseProject&appUrl=https%3A%2F%2Fgithub.com%2Fhalo-dev%2Ftencent-cloudbase-halo&branch=master)
|
||||
|
||||
## 配置并部署
|
||||
|
||||
**填写环境名称**,这里建议把 `开启免费额度` 打开,然后点击下一步。
|
||||
|
||||

|
||||
|
||||
**应用配置**,需要注意:这里需要开通 CFS,用于存储 Halo 的工作目录。
|
||||
|
||||

|
||||
|
||||
**提交授权**,点击 `授权并开通`。
|
||||
|
||||

|
||||
|
||||
**创建环境中**,完成之后,点击 `环境` 下面的卡片,即可进入详细配置页面。
|
||||
|
||||

|
||||
|
||||
**构建应用中**,这里可能会等待较长时间。
|
||||
|
||||

|
||||
|
||||
**构建应用完成**,需要注意的是,构建完成之后可能还需要等待一小段时间才能正常访问,这个期间是在等待 Halo 应用启动完毕。点击 `访问` 按钮即可进入 Halo 初始化页面。
|
||||
|
||||

|
||||
|
||||
**Halo 初始化页面**:
|
||||
|
||||

|
||||
|
||||
**CFS 管理页面**:[https://console.cloud.tencent.com/cfs/fs](https://console.cloud.tencent.com/cfs/fs)
|
||||
|
||||

|
||||
|
||||
## 更新 Halo
|
||||
|
||||
> 当 Halo 有新版本更新的时候,你可以采用下面的方式进行版本升级。
|
||||
|
||||
### 删除旧版本
|
||||
|
||||
前往 [云托管](https://console.cloud.tencent.com/tcb/service) 页面,点击服务名称进入版本列表,然后删除当前使用的版本。
|
||||
|
||||

|
||||
|
||||
### 重新部署
|
||||
|
||||
回到 [我的应用](https://console.cloud.tencent.com/tcb/apps/index) 页面,点击 `部署` 按钮并确定。
|
||||
|
||||

|
||||
|
||||
## 相关链接
|
||||
|
||||
- [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)
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
title: 三方指南
|
||||
---
|
||||
|
||||
:::tip
|
||||
此类指南或教程均来自第三方或者网友提供,我们不能一直保证其具有有效性,请参考的时候仔细甄别。另外,如果您有写类似的教程,也可以[联系我们](mailto:hi@halo.run)放在下方。
|
||||
:::
|
||||
|
||||
- [Halo 博客安装教程,一款优秀的 Java 开源博客系统](https://www.cnblogs.com/bronya0/p/14198512.html)
|
||||
- [如何用服务器优雅地搭建一个博客—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)
|
||||
- [如何在 Windows 下搭建 Halo](https://ykanade.cn/2021/08/11/HaloInWindows/)
|
||||
- [Halo 博客建站记录](https://catchersun.cn/archives/halo%E5%8D%9A%E5%AE%A2%E5%BB%BA%E7%AB%99%E8%AE%B0%E5%BD%95)
|
||||
- [Windows下搭建halo并配置nginx与SSL](https://blog.shikangsi.cn/archives/halo-windows)
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
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` 即可
|
||||
|
||||

|
||||
|
||||
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)
|
||||
```
|
||||
|
||||

|
||||
|
||||
## 安装 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 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
|
||||
:::
|
||||
@@ -0,0 +1,99 @@
|
||||
---
|
||||
title: 写在前面
|
||||
description: 在开始前,您需要了解的事项
|
||||
---
|
||||
|
||||
## 环境要求
|
||||
|
||||
这里将讲述运行 Halo 所要求的一些软硬件的配置,我们建议您在运行或者部署之前先浏览一遍此页面。
|
||||
|
||||
### 硬件配置
|
||||
|
||||
:::tip
|
||||
如果您要使用服务器进行部署 Halo,您需要注意的是,Halo 目前不支持市面上的云虚拟主机,请使用云服务器或者 VPS。
|
||||
:::
|
||||
|
||||
#### CPU
|
||||
|
||||
无特别要求。目前我们的 [Docker 镜像](https://hub.docker.com/r/halohub/halo) 也已经支持多平台。
|
||||
|
||||
#### 内存
|
||||
|
||||
为了获得更好的体验,我们建议至少配置 1G 的 RAM。
|
||||
|
||||
#### 磁盘
|
||||
|
||||
无特别要求,理论上如果不大量在服务器上传附件,Halo 对磁盘的容量要求并不是很高。但我们推荐最好使用 SSD 硬盘的服务器,能更快的运行 Halo。
|
||||
|
||||
#### 网络
|
||||
|
||||
Halo 目前必须在外网畅通的情况下使用,否则会导致页面异常。
|
||||
|
||||
### 软件环境
|
||||
|
||||
Halo 理论上可以运行在任何支持 Java 的平台。
|
||||
|
||||
#### JRE(Java Runtime Environment)
|
||||
|
||||
必须在运行环境安装好 JRE,这是运行 Halo 所要求的的最低软件环境要求。如果您使用 Docker 运行 Halo,可忽略此要求。
|
||||
|
||||
:::info
|
||||
从 1.4.3 起,版本要求为 11 以上的版本。1.4.3 以下需要 1.8 以上的版本。
|
||||
:::
|
||||
|
||||
#### MySQL(可选)
|
||||
|
||||
这并不是 Halo 必须依赖的,Halo 默认使用自带的 `H2 Database`,无需单独安装。如果 `H2 Database` 不能满足你的要求,您需要在系统内安装并运行好 MySQL。
|
||||
|
||||
具体要求:
|
||||
|
||||
1. 版本:5.7 +
|
||||
2. 字符集(Character Set):`utf8mb4`
|
||||
3. 排序规则(Collate):`utf8mb4_bin`
|
||||
4. 存储引擎:`InnoDB`
|
||||
|
||||
综上,建议创建数据库采用下面的命令:
|
||||
|
||||
```bash
|
||||
create database halodb character set utf8mb4 collate utf8mb4_bin;
|
||||
```
|
||||
|
||||
#### Web 服务器(可选)
|
||||
|
||||
如果您部署在生产环境,那么你很可能需要进行域名绑定,这时候我们推荐使用诸如 [Nginx](http://nginx.org/)、[Caddy](https://caddyserver.com/) 之类的 Web 服务器进行反向代理。
|
||||
|
||||
#### Wget(可选)
|
||||
|
||||
后续的文档中,我们会使用 wget 为例,用于下载所需要的文件,所以请确保服务器已经安装好了这个软件包。当然,下载文件不限制工具,如果你对其他工具熟悉,可以忽略。
|
||||
|
||||
#### VIM(可选)
|
||||
|
||||
后续的文档中,我们会使用 vim 为例,用于修改一些必要的配置文件,所以同样请确保服务器已经安装了这个软件包。当前,修改文档也不限制工具,如果你对其他编辑软件熟悉,也可以忽略。
|
||||
|
||||
## 浏览器支持
|
||||
|
||||
1. 用户前台:视主题所支持的情况而定,由于目前的评论模块使用了 [Vuejs](https://cn.vuejs.org/v2/guide/installation.html#%E5%85%BC%E5%AE%B9%E6%80%A7) 开发,所以在 [Vuejs](https://cn.vuejs.org/v2/guide/installation.html#%E5%85%BC%E5%AE%B9%E6%80%A7) 不支持的某些浏览器中无法正常显示评论区域。
|
||||
2. 管理后台:支持目前常见的现代浏览器,具体视 [Vuejs](https://cn.vuejs.org/v2/guide/installation.html#%E5%85%BC%E5%AE%B9%E6%80%A7) 框架的支持情况而定。
|
||||
|
||||
## 名词解释
|
||||
|
||||
这里将列出后续文档中一些和 Halo 相关的名词含义。
|
||||
|
||||
### ~(符号)
|
||||
|
||||
代表当前系统下的 [用户目录](https://zh.wikipedia.org/wiki/%E5%AE%B6%E7%9B%AE%E5%BD%95)。
|
||||
|
||||
### 运行包
|
||||
|
||||
指 Halo 构建所产生的 Jar 包,后缀为 `.jar`。可能与其他网站应用有所区别的是,Halo 仅仅只有这一个文件。而且所有数据统一保存在下面所说的 `工作目录`。
|
||||
|
||||
### 工作目录
|
||||
|
||||
指 Halo 所依赖的工作目录,在 Halo 运行的时候会在系统当前用户目录下产生一个 `.halo` 的文件夹,绝对路径为 `~/.halo`。由于这个工作目录是固定的,所以上面所说的 `运行包`不限制所存放的位置,里面通常包含下列目录或文件:
|
||||
|
||||
1. `db`:存放 H2 Database 的物理文件,如果您使用 MySQL 数据库,那么不会存在这个目录。
|
||||
2. `templates/themes`:里面包含用户所下载的主题。
|
||||
3. `static`:相当于网站的根目录。
|
||||
4. `logs`:运行日志目录。
|
||||
5. `upload`:附件目录。
|
||||
6. `application.yaml`:配置文件。
|
||||
@@ -0,0 +1,109 @@
|
||||
---
|
||||
title: 版本升级
|
||||
description: 版本升级指南
|
||||
---
|
||||
|
||||
选择你部署的平台:
|
||||
|
||||
## Linux <i class="mdi mdi-ubuntu"></i>
|
||||
|
||||
> 我们假设您存放运行包的路径为 `~/app`,运行包的文件名为 `halo.jar`,如有不同,下列命令请按需修改。
|
||||
|
||||
---
|
||||
|
||||
:::tip
|
||||
从 1.4.3 开始,Halo 最低支持的 JRE 版本为 11,在升级前,请务必先升级 JRE。
|
||||
:::
|
||||
|
||||
:::info
|
||||
如果当前您不方便升级到 11,我们推荐使用 [Docker](/getting-started/install/docker) 运行新版 Halo,从 Jar 包的方式迁移到 Docker 运行非常方便,按照[指南](/getting-started/install/docker)在创建容器的时候将容器内的 `/root/.halo` 目录映射到当前 Halo 的工作目录即可。
|
||||
:::
|
||||
|
||||
1. 停止正在运行的服务
|
||||
|
||||
```bash
|
||||
service halo stop
|
||||
```
|
||||
|
||||
2. 备份数据以及旧的运行包(重要)
|
||||
|
||||
```bash
|
||||
cp -r ~/.halo ~/.halo.1.4.16
|
||||
```
|
||||
|
||||
```bash
|
||||
cd ~/app && mv halo.jar halo.jar.1.4.16
|
||||
```
|
||||
|
||||
3. 下载最新版本的运行包
|
||||
|
||||
```bash
|
||||
cd ~/app && wget https://dl.halo.run/release/halo-1.4.17.jar -O halo.jar
|
||||
```
|
||||
|
||||
:::info
|
||||
如果下载速度不理想,可以[在这里](/getting-started/downloads)选择其他下载地址。
|
||||
:::
|
||||
|
||||
4. 启动测试
|
||||
|
||||
```bash
|
||||
java -jar halo.jar
|
||||
```
|
||||
|
||||
:::info
|
||||
如测试启动正常,请继续下一步。使用 <kbd>CTRL</kbd>+<kbd>C</kbd> 停止运行测试进程。
|
||||
:::
|
||||
|
||||
5. 重启服务
|
||||
|
||||
```bash
|
||||
service halo start
|
||||
```
|
||||
|
||||
## Docker <i class="mdi mdi-docker"></i>
|
||||
|
||||
> 我们假设您的容器是按照 [使用 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.1.4.16
|
||||
```
|
||||
|
||||
3. 拉取最新的 Halo 镜像
|
||||
|
||||
```bash
|
||||
docker pull halohub/halo:1.4.17
|
||||
```
|
||||
|
||||
:::info
|
||||
查看最新版本镜像:<https://hub.docker.com/r/halohub/halo> ,我们推荐使用具体版本号的镜像,但也提供了 `latest` 标签的镜像,它始终是最新的。
|
||||
:::
|
||||
|
||||
4. 创建容器
|
||||
|
||||
```bash
|
||||
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.4.17
|
||||
```
|
||||
|
||||
- **-it:** 开启输入功能并连接伪终端
|
||||
- **-d:** 后台运行容器
|
||||
- **--name:** 为容器指定一个名称
|
||||
- **-p:** 端口映射,格式为 `主机(宿主)端口:容器端口` ,可在 `application.yaml` 配置。
|
||||
- **-v:** 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
|
||||
- **--restart:** 建议设置为 `unless-stopped`,在 Docker 启动的时候自动启动 Halo 容器。
|
||||
Reference in New Issue
Block a user