Halo博客部署

核心过程

使用Docker Compose部署,创建docker-compose.yaml文件,编辑好halo的基本配置。使用docker-compose up -d 执行,部署成功。访问 服务器ip地址:8090/console​

用到的工具

  • 腾讯云服务器:服务器管理
  • 腾讯域名管理:域名DNS解析、域名备案
  • Xshell:操作Linux
  • Xfp:上传文件
  • Docker、Docker Compose:halo和Nginx Proxy Manager部署
  • Nginx Proxy Manager:反向代理

安装Docker

# 1.卸载旧的版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
 
# 如有需要,可以安装gcc
yum -y install gcc
 
# 以及gcc-c++
yum -y install gcc-c++
 
              
# 2.需要的安装包
sudo yum install -y yum-utils
 
# 3.设置镜像仓库 建议使用阿里云的镜像,十分快
 sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
# 更新yum软件包索引(安装前的工作,非必须)
yum makecache fast
# yum makecache: error: argument timer: invalid choice: 'fast' (choose from 'timer')
# 安装报错了,yum makecache fast是centOS7的命令, 不使用8,可以直接使用
yum makecache # 或者
dnf makecache
 
 
# 4.安装docker docker-ce:社区版的,docker-ee:企业版的
sudo yum install docker-ce docker-ce-cli containerd.io

安装Docker Compos

更新包索引,并安装最新版本的 Docker Compose:

sudo yum update
  $ sudo yum install docker-compose-plugin

验证是否正确安装

docker compose version

出现Docker Compose version vN.N.N。

使用Docker Compos部署Halo

我使用的是Halo+PostgreSQL

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

    mkdir ~/halo && cd ~/halo
    
  2. 创建 docker-compose.yaml

    version: "3"
    
    services:
      halo:
        image: halohub/halo:2.7
        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:postgresql://halodb/halo
          - --spring.r2dbc.username=halo
          # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
          - --spring.r2dbc.password=openpostgresql
          - --spring.sql.init.platform=postgresql
          # 外部访问地址,请根据实际需要修改
          - --halo.external-url=http://localhost:8090/
          # 初始化的超级管理员用户名
          - --halo.security.initializer.superadminusername=admin
          # 初始化的超级管理员密码
          - --halo.security.initializer.superadminpassword=P@88w0rd
      halodb:
        image: postgres:latest
        container_name: halodb
        restart: on-failure:3
        networks:
          halo_network:
        volumes:
          - ./db:/var/lib/postgresql/data
        ports:
          - "5432:5432"
        healthcheck:
          test: [ "CMD", "pg_isready" ]
          interval: 10s
          timeout: 5s
          retries: 5
        environment:
          - POSTGRES_PASSWORD=openpostgresql
          - POSTGRES_USER=halo
          - POSTGRES_DB=halo
          - PGUSER=halo
    
    networks:
      halo_network:
    
  3. 启动Halo服务,要在~/halo目录下执行

    docker-compose up -d
    
  4. 服务器控制台开放8090端口
    image.png
    image.png

  5. 用浏览器 访问服务器ip地址:8090/console​​ 即可进入 Halo 管理页面,用户名和密码为在 docker-compose.yaml​​ 文件中设置的 superadminusername​​ 和 superadminpassword​​。

version: "3"

services:
  halo:
    image: halohub/halo:2.7
    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:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
      # 初始化的超级管理员用户名
      - --halo.security.initializer.superadminusername=admin
      # 初始化的超级管理员密码
      - --halo.security.initializer.superadminpassword=P@88w0rd
  halodb:
    image: postgres:latest
    container_name: halodb
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

域名注册

域名注册实际上是通过付费获得域名一年或几年的使用权的过程。我在腾讯云购买的域名

腾讯云官方文档:域名注册 单个域名注册-注册新域名-文档中心-腾讯云 (tencent.com)

域名备案

腾讯云官方文档:网站备案 首次备案-备案资料填写流程-文档中心-腾讯云 (tencent.com)

我的申请四天通过

公安备案

全国公安机关互联网站安全管理服务平台。进行官方备案。

腾讯云官方文档:网站备案 公安备案流程-备案后续流程-文档中心-腾讯云 (tencent.com)

我的申请一天通过备案

Nginx Proxy Manager反向代理

顾名思义,Nginx Proxy Manager 就是一个 Nginx 的代理管理器,它最大的特点是简单方便。

即使是没有 Nginx 基础的小伙伴,也能轻松地用它来完成反向代理的操作,而且因为自带面板,操作极其简单,非常适合配合 docker 搭建的应用使用。

Nginx Proxy Manager 后台还可以一键申请 SSL 证书,并且会自动续期,方便省心。

下面我们就来介绍如何用 Nginx Proxy Manger 来配合 Halo,实现反向代理和 HTTPS 访问

安装Nginx Proxy Manager

首先,我们创建一个文件夹来存放 NPM 的 docker-compose.yml​​ 文件:

mkdir -p ~/data/docker_data/nginxproxymanager   # 创建一个 npm 的文件夹

cd ~/data/docker_data/nginxproxymanager    # 进入该文件夹

vi docker-compose.yml # 进入文档

在英文状态的输入法下,按下 i​​,左下角出现 --INSERT–​​ 后,粘贴填入下面的内容:

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'              # 不建议修改端口
      - '81:81'              # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
      - '443:443'            # 不建议修改端口
    volumes:
      - ./data:/data         # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
      - ./letsencrypt:/etc/letsencrypt  # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建

同样在英文输入法下,按一下 esc​​,然后 :wq​​ 保存退出。

启动 NPM:

docker-compose up -d     # -d 表示后台运行

docker compose up -d     # 如果你用的是 docker-compose-plugin 的话,用这条命令

使用 http://127.0.0.1:81​​ 就可以访问 NPM 的网页端了。(注意把 127.0.0.1​​ 替换成你实际服务器的 IP)

默认登陆的用户名:admin@example.com​​ 密码:changeme​​

配置Halo的反向代理

首先我们登陆网页端之后,会弹出修改用户名和密码的对话框,我们根据自己的实际来修改自己的用户名和邮箱。
image.png
存之后,会让我们修改密码(建议用一个复杂的密码)。
image.png
接着我们就可以来给 Halo 来添加一个反向代理了。
点击 Proxy Hosts​​,
image.png
接着点击 Add Proxy Host​​,弹出如下对话框:
​​​​
image.png
以下是一个样列:

image.png

一键申请 SSL 证书

接着我们来申请一张 SSL 证书,让我们的网站支持 https​​ 访问。
image.png
image.png

  1. 申请证书需要你提前将域名解析到 NPM 所在的服务器的 IP 上;
  2. 证书会三个月自动续期。

总结

其实很简单,官方网站都有详细教程。我相当于就是整合了一下。感谢大家看到这里。

最后

不卑不亢不怂,长成自己想要的样子

参考资料:

使用 Docker Compose 部署 | Halo 文档

Linux系统安装Docker_linux安装docker_北冥牧之的博客-CSDN博客

安装撰写插件 |码头工人文档 (docker.com)

Nginx Proxy Manager

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值