简介
Serv00 是一个提供免费虚拟主机的平台,支持的服务众多,可选择 php 版本,有多款数据库,MySQL,postgresql,mongdodb,支持 ssh 连接,没有广告,3G 空间。
Halo 是一款开源的建站工具,专注于博客,同时也适合构建个人网站。它以其简洁、易用和强大的自定义能力而著称。
部署
准备
登录 serv00 控制台,开启可执行权限和开放一个端口
新建一个 MySQL 数据库,记录数据库信息
数据库字符集选择 Collation: utf8mb4_bin
halo 环境
- Java 环境,目前 Halo 最低需要 JRE 17 的环境。
- 数据库(任一)
serv00 官方已经支持 jdk17
ssh 连接 serv00
export JAVA_VERSION="17"
java --version
写入到环境变量
echo 'export JAVA_VERSION="17"' >> $HOME/.profile
source $HOME/.profile
安装 halo
创建存放运行包的目录,这里以 ~/app
为例
mkdir ~/app && cd ~/app
下载运行包
wget https://dl.halo.run/release/halo-2.20.12.jar -O halo.jar
创建 工作目录
mkdir ~/.halo2 && cd ~/.halo2
创建 Halo 配置文件
vim application.yaml
将以下内容复制到 application.yaml
中,根据下面的配置说明进行配置。
server:
# 运行端口
port: 8090
spring:
# 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
r2dbc:
url: r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
username: admin
password: 123456
sql:
init:
mode: always
# 需要配合 r2dbc 的配置进行改动
platform: h2
halo:
# 工作目录位置
work-dir: ${user.home}/.halo2
# 外部访问地址
external-url: http://localhost:8090
# 附件映射配置,通常用于迁移场景
attachment:
resource-mappings:
- pathPattern: /upload/**
locations:
- migrate-from-1.x
数据库配置说明:
参数名 | 描述 |
spring.r2dbc.url | 数据库连接地址,详细可查阅下方的 配置对应关系 |
spring.r2dbc.username | 数据库用户名 |
spring.r2dbc.password | 数据库密码 |
spring.sql.init.platform | 数据库平台名称,支持 postgresql 、mysql 、mariadb 、h2 |
配置对应关系:
链接方式 | 链接地址格式 | spring.sql.init.platform |
PostgreSQL | r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE} | postgresql |
MySQL | r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE} | mysql |
MariaDB | r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE} | mariadb |
H2 Database | r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE | h2 |
测试运行 Halo
cd ~/app && java -server -Xms256m -Xmx400m -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/
初始化 halo
设置站点名,用户名,密码,邮箱
后台运行
由于 serv00 不能使用 system,防止 serv00 杀掉进程,我们使用定时任务,定时重启
登录 serv00 控制台,新增定时任务
Label | Value | Extra |
Specify time | Specify manually | |
Form type | Advanced | |
Minute | Every | 10 |
Hour | Each time | * |
Day of month | Each time | * |
Month | Each time | * |
Day of week | Each time | * |
Command 命令填写如下的内容
pkill -f halo.jar; nohup java -server -Xms256m -Xmx400m -Dfile.encoding=UTF-8 -jar $HOME/app/halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/ > /dev/null 2>&1 &
访问
使用 serv00 分配的域名加上端口即可访问
http://<username>.serv00.net:<port>
如果不想使用端口,并使用 https
推荐这个教程:使用 Vercel 部署反向代理的部署指南
在线预览
https://omni.seektao.cc/
PS:这是一个玩具,用不了多久就会被杀进程,只适合学习