安装Docker(由于我已安装,就不做演示)

首先我们需要准备一台linux系统
这里以centos7.9为基础

首先安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2

sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置阿里云的docker镜像源(加快安装速度)

 sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装最新版本的docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

如果有提示,输入y
等待结束,到此docker安装完毕
设置docker开机自启并立即启动

  systemctl enable docker --now

设置docker镜像源(也可使用自己的)

cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://tesemv0a.mirror.aliyuncs.com"]
}
EOF

重启docker

systemctl restart docker

安装和部署halo(使用默认h2数据库--建议只做测试使用)

根据自己个人情况修改以下的参数
halo.external-url 为访问地址 (由于我们会使用nginx进行反向代理,故可默认)
superadminusername 为用户名
superadminpassword 为密码

docker run \
  -it -d \
  --name halo \
  -p 8090:8090 \
  -v ~/.halo2:/root/.halo2 \
  halohub/halo:2.5 \
  --halo.external-url=http://localhost:8090/ \
  --halo.security.initializer.superadminusername=admin \
  --halo.security.initializer.superadminpassword=P@88w0rd

通过命令docker ps查看运行状态
微信图片_20230518145456.png

安装和部署halo(使用mysql等数据库)

我们首先需要用到docker-compose工具进行安装
首先安装docker-compose(这里使用ghproxy.com进行代理,以解决国内访问不了github的问题)

  curl -L "https://ghproxy.com/github.com/docker/compose/releases/download/v2.18.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

将可执行权限应用于二进制文件:

sudo chmod +x /usr/local/bin/docker-compose 

创建软链:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功:

docker-compose version

首先创建一个文件夹保存yaml文件

cd /opt && mkdir ~/halo && cd ~/halo

vim docker-compose.yaml

微信截图_20230518150647.png

此时输入冒号并回车:set paste(需要英文的冒号)
微信截图_20230518150802.png
再按i看到左下角微信截图_20230518151336.png
再将下述两个docker-compose.yaml的其中一个粘贴 按ESC按钮后输入:wq 保存
根据实际情况修改以下yaml文件
docker-compose.yaml(此yaml文件会启动一个mysql docker应用)

version: "3"

services:
  halo:
    image: halohub/halo:2.5
    container_name: halo
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./:/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
    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/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd

  halodb:
    image: mysql:8.0.31
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    ports:
      - "3306:3306"
    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:

docker-compose.yaml(需使用自用mysql需要修改mysql的ip 用户名密码)

version: "3"

services:
  halo:
    image: halohub/halo:2.5
    container_name: halo
    restart: on-failure:3
    network_mode: "host"
    volumes:
      - ./:/root/.halo2
    command:
      # 修改为自己已有的 MySQL 配置
      - --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
      - --spring.r2dbc.username=root
      - --spring.r2dbc.password=
      - --spring.sql.init.platform=mysql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd
      # 端口号 默认8090
      - --server.port=8090

我这里使用第二个作为演示:
创建mysql数据库
微信截图_20230518151545.png
修改docker-compose.yaml中的mysql ip 用户名和密码
微信图片_20230518151830.png

修改完按ESC后输入:wq保存

参数详解:
参数名 描述
spring.r2dbc.url 数据库连接地址,详细可查阅下方的 数据库配置
spring.r2dbc.username 数据库用户名
spring.r2dbc.password 数据库密码
spring.sql.init.platform 数据库平台名称,支持 postgresql、mysql、h2
halo.external-url 外部访问链接,如果需要在公网访问,需要配置为实际访问地址
halo.security.initializer.superadminusername 初始超级管理员用户名
halo.security.initializer.superadminpassword 初始超级管理员密码

启动服务

docker-compose up -d

微信截图_20230518152634.png

到此安装完毕

NGINX的配置(我们这里使用宝塔)
微信截图_20230518151545.png

参照图片设置反向代理即可
微信截图_20230518152925.png
配置完成则可输入域名进行访问
微信截图_20230518153242.png
若不使用宝塔 则需手动配置conf文件 最后reload即可

server {
       listen       80;
       server_name halo.lcy.pub;   ####域名
        include  ./extra.d/nginx_vts_exporter.conf;
      location / {
            proxy_pass http://127.0.0.1:8090;  ##ip:端口
            proxy_set_header   Host    $host;
            proxy_set_header   X-Real-IP   $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
最后修改:2023 年 05 月 18 日
如果觉得我的文章对你有用,请随意赞赏