serv00部署halo,你的现代化博客系统

## 简介

Serv00 是一个提供免费虚拟主机的平台,支持的服务众多,可选择 php 版本,有多款数据库,MySQL,postgresql,mongdodb,支持 ssh 连接,没有广告,3G 空间。

Halo 是一款开源的建站工具,专注于博客,同时也适合构建个人网站。它以其简洁、易用和强大的自定义能力而著称。

## 部署

### 准备

登录 serv00 控制台,开启可执行权限和开放一个端口

新建一个 MySQL 数据库,记录数据库信息

数据库字符集选择 `Collation: utf8mb4_bin`

halo 环境

  • 1. Java 环境,目前 Halo 最低需要 JRE 17 的环境。
  • 2. 数据库(任一)
  • - [MySQL 5.7+](https://www.mysql.com)
  • - [MariaDB](https://mariadb.org)
  • - [PostgreSQL](https://www.postgresql.org)
  • serv00 官方已经支持 jdk17

    ssh 连接 serv00

    shell</s><i> </i>export JAVA_VERSION="17" java --version<i> </i><e>

    写入到环境变量

    shell</s><i> </i>echo 'export JAVA_VERSION="17"' &gt;&gt; $HOME/.profile source $HOME/.profile<i> </i><e>

    ### 安装 halo

    创建存放运行包的目录,这里以 `~/app` 为例

    shell</s><i> </i>mkdir ~/app &amp;&amp; cd ~/app<i> </i><e>

    下载运行包

    shell</s><i> </i>wget https://dl.halo.run/release/halo-2.20.12.jar -O halo.jar<i> </i><e>

    创建 工作目录

    shell</s><i> </i>mkdir ~/.halo2 &amp;&amp; cd ~/.halo2<i> </i><e>

    创建 Halo 配置文件

    shell</s><i> </i>vim application.yaml<i> </i><e>

    将以下内容复制到 `application.yaml` 中,根据下面的配置说明进行配置。

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

    shell</s><i> </i>cd ~/app &amp;&amp; java -server -Xms256m -Xmx400m -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/<i> </i><e>

    ### 初始化 halo

    设置站点名,用户名,密码,邮箱

    ### 后台运行

    由于 serv00 不能使用 system,防止 serv00 杀掉进程,我们使用定时任务,定时重启

    登录 serv00 控制台,新增定时任务

    | | | | | ------------ | ---------------- | ----- || | | || | | || | | || | | || | | || | | || | | |
    LabelValueExtra
    Specify timeSpecify manually
    Form typeAdvanced
    MinuteEvery10
    HourEach time\*
    Day of monthEach time\*
    MonthEach time\*
    Day of weekEach time\*

    Command 命令填写如下的内容

    shell</s><i> </i>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/ &gt; /dev/null 2&gt;&amp;1 &amp;<i> </i><e>

    ### 访问

    使用 serv00 分配的域名加上端口即可访问

    shell</s><i> </i>http://&lt;username&gt;.serv00.net:&lt;port&gt;<i> </i><e>

    如果不想使用端口,并使用 https

    推荐这个教程:[使用 Vercel 部署反向代理的部署指南](https://linux.do/t/topic/15608)

    ## 在线预览

    https://omni.seektao.cc/

    PS:这是一个玩具,用不了多久就会被杀进程,只适合学习

    何苦为难serv00

    放过自己吧

    Image description</s>Image description<e>

    出错了哦

    @“老徳”#p296330 被杀进程了,定时任务10分钟自动重启

    感谢分享部署步骤

    服务挂掉了

    @“bazinga”#p296599 好像是定时任务无法生效,懒得重启了

    基本上不能用

    放过serv00吧,

    要搞halo还不如用claw cloud免费容器。

    @“Mr.Yun”#p296637 随便试试水,看看halo发展怎么样了