200字
萌新向,快速搭建一个博客系统
2025-10-25
2025-10-25

首次写长文章,可能会有些枯燥,想要最快部署可以选1,但是h2数据库有概率抽风,建议小白使用3部署

1.使用docker run部署(不推荐自带H2数据库不建议生产环境使用)

安装docker

curl -fsSL https://get.docker.com | bash -s docker

国内机器请使用以下命令安装(阿里云镜像)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

直接docker运行halo

docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 -e JVM_OPTS="-Xmx256m -Xms256m" registry.fit2cloud.com/halo/halo:2.21

2.使用 Docker Compose 部署(需要一定动手能力)

在系统任意位置创建一个文件夹,此文档以 ~/halo 为例。

mkdir ~/halo && cd ~/halo

创建docker-compose.yaml文件,填入以下内容

version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.21
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=o#DwN&JSa56
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/

  halodb:
    image: mysql:8.1.0
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=o#DwN&JSa56
      - MYSQL_DATABASE=halo

networks:
  halo_network:

启动halo

docker-compose up -d

docker run 部署以及docker compose部署反代教程

安装nginx

以debian系统为例

sudo apt install nginx
vi /etc/nginx/conf.d/halo.conf

填入以下内容

upstream halo {

server 127.0.0.1:8090;

}

server {

listen 80;

listen [::]:80;

server_name 此处改为你的域名;

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;

}

}

ssl证书此处不多解释,可以自行搜索

3.使用1panel部署(推荐)

安装1panel

apt update && curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && bash quick_start.sh

用你选择的端口,用户名,密码登录1panel到应用市场安装安装OpenResty和MySQL

安装halo时,数据库名、数据库用户、数据库密码改成刚刚创建的数据库,外部访问地址改成你注册的域名

解析好之后,就可以直接用你的域名访问你的博客系统了

证书同样自行检索

所有教程到此结束,可以自己慢慢探索建站的乐趣,比如可以使用CDN服务来加速网站访问等等。enjoy it!

评论