Halo博客搭建

这里使用的系统为CentOS

配置为2h2g

扩展服务器的swap交换内存

1.查看磁盘使用情况

free -h

2.添加swap(这里添加4G的交换机内存 8G的话4194304x2就行 16G同理)

dd  if=/dev/zero  of=/var/swapfile  bs=1024  count=4194304 

执行完命令后,会进行4G的读写操作,会有一些卡顿

3.对交换文件格式化 并 转换为swap分区

mkswap  /var/swapfile

4.挂在并激活分区

swapon   /var/swapfile
chmod -R 0600 /var/swapfile

5.查看新swap分区是否正常添加并激活使用

free -h

6.修改fstab配置,设置开机自动挂在该分区

echo  "/var/swapfile   swap  swap  defaults  0  0" >>  /etc/fstab

7.查看是否已经使用了交换机内存

top

安装docker、docker-compose

1.安装必要的一些系统工具

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

2.添加软件源信息(国内可以用阿里云)

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

3. 更新yum索引列表并安装Docker引擎

sudo yum makecache fast

4.安装docker

sudo yum install docker-ce

5.启动docker 并加入开机自启

systemctl start docker

systemctl enable docker

6.安装docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

7.给文件夹添加权限

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

8.查看docker-compose是否安装

docker-compose --version

使用dokcer方式部署halo网站

docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.12

  • -it:开启输入功能并连接伪终端

  • -d:后台运行容器

  • --name:为容器指定一个名称

  • -p:端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。

  • -v:工作目录映射。形式为:-v 宿主机路径:/root/.halo2,后者不能修改。

部署完成后,访问ip:8090端口可访问halo网站初始化界面

使用docker-compose部署halo网站(推荐)

1.创建站点文件夹

mkdir ~/halo && cd ~/halo

2.创建docker-compose配置文件,创建 Halo + MySQL 的实例 。文件内容如下,需修改spring.r2dbc.passwordMYSQL_ROOT_PASSWORD密码

vi ~/halo/docker-compose.yaml

version: "3"

services:
  halo:
    image: halohub/halo:2.12
    container_name: halo
    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
    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
    container_name: halodb
    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
    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:

3.启动halo服务

docker-compose up -d

与 Nginx Proxy Manager 配合使用

1.创建一个目录来存放NPM的docker-compose.yaml文件

mkdir -p ~/data/docker_data/nginxproxymanager

cd ~/data/docker_data/nginxproxymanager

mkdir -p ~/data/docker_data/nginxproxymanager
cd ~/data/docker_data/nginxproxymanager
vi docker-compose.yml


//docker-compose.yaml内容如下:

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 目录,用于存放证书,如果不存在的话,会自动创建

2.启动NPM

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

启动完成后访问http://ip:81 ,就可以访问NPM的网页端了

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

首次登录NMP网页端 会要求更改密码,建议设置复杂一点的密码

3.配置 Halo 的反向代理

点击Proxy Hosts

接着点击 Add Proxy Host ,弹出如下对话框:

以下是一个样例:

因为样例的 NPM 和 Halo 搭建在同一台 VPS 上,所以这边的 IP,图中填的是 172.17.0.1,为 Docker 容器内部的 IP 地址

可以通过下面的命令查询:

ip addr show docker0

一键申请SSL证书

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

如图所示,记得打开强制 SSL,其他四个的功能请自行研究,这边不多做讨论

不出意外,你将成功申请到 SSL 证书,证书会三个月自动续期。

再次点开配置,查看一下,将强制 SSL 打开。