侧边栏壁纸
博主头像
whzie - 坐拥星河博主等级

天行健,君子以自强不息

  • 累计撰写 6 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

利用宝塔面板、MySQL和Docker搭建Halo博客

whzie
2022-05-09 / 0 评论 / 0 点赞 / 1183 阅读 / 13903 字

一、服务器

本文是选择腾讯云,可根据需求进行选择

二、域名

在腾讯云上购买,域名购买好还要备案,备案过程会有几天审核,具体这里就不细说

三、宝塔面板

本文选择了宝塔linux面板,可根据需求进行选择
image-1652440895659
安装完后,有个推荐安装套餐,本文选择了LNMP+极速安装,以后有其他需要得化也可以在软件管理修改

四、安装Docker

(一)安装Docker管理器

image-1652440922570
在宝塔界面安装docker,安装后就可以安装halo了

(二)安装官方文档步骤,使用远程工具和Docker部署Halo

官方文档-使用 Docker 部署 Halo

  1. 创建工作目录
    mkdir ~/.halo && cd ~/.halo
  2. 下载示例配置文件到【工作目录】
    wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
  3. 编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考
    vim application.yaml
  4. Halo默认是H2数据库,但是主机安装过MySQL,所以使用MySQL数据库。
    【application.yaml】中注释掉H2数据库配置:
#spring:
 # datasource: 
 #  driver-class-name: org.h2.Driver
 #  url: jdbc:h2:file:~/.halo/db/halo
 #   username: admin
 #  password: 123456
 # h2:
 #   console:
 #     settings:
 #       web-allow-others: false
 #    path: /h2-console
 #     enabled: false

并且取消掉Mysql相关注释:

spring:
  datasource: 
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root            #需要更改为MySQL用户名
    password: 123456          #需要更改为MySQL密码

Halo的MySQL数据库要求:

  • 版本:5.7 +
  • 字符集(Character Set):utf8mb4
  • 排序规则(Collate):utf8mb4_bin
  • 存储引擎:InnoDB
  1. 创建数据库halodb
    (1)方法一:采用命令创建数据库halodb
    create database halodb character set utf8mb4 collate utf8mb4_bin;
    (2)方法二:在宝塔面板上创建数据库halodb
    image-1652440999793
    image-1652441024935
    image-1652441048521
    至此,数据库halodb创建成功。
  1. 拉取最新的 Halo 镜像
    docker pull halohub/halo:1.5.2
  2. 创建容器
  • 如果使用H2数据库,则按照官方文档步骤
    因为使用MySQL数据库,需要更改容器的网络配置:从零部署halo博客
    docker run -it -d --net host --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.5.2
    -it: 开启输入功能并连接伪终端
    -d: 后台运行容器
    -net,指定容器的网络配置:
  • –net=bridge 这个是默认值,连接到默认的网桥。
  • –net=host 容器使用本地主机的网络,它拥有完全的本地主机接口访问权限
  • –net=container:NAME_or_ID 让 Docker 使用其他容器的网路,共享IP和PORT等网络资源,两者进程可以直接通过 lo 环回接口通信
  • –net=none 容器使用自己的网络,但是不进行网络配置,之后用户可以自行配置
    –name: 为容器指定一个名称
    -p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
    -v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
    –restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。
    官方论坛上更多关于MySQL的问题:Halo社区
  1. 安装引导界面
    http://ip:端口号,端口号默认8090,这里需要在云服务器和宝塔面板上都开放这个端口。

五、配置反向代理

官方文档:与宝塔面板配合使用

  1. 点击左侧的【网站】菜单项,点击【添加站点】按钮。
    需要填写的表单信息如下:
  • 域名:填写您已经解析到当前服务器公网 IP 的域名。
  • PHP版本:纯静态
    image-1652441096500
    填写完成之后点击【提交】按钮即可。
  1. 设置 SSL
  • 可选择【宝塔 SSL】或者【Let’s Encrypt】进行证书申请。
  • 需要开启右上角的【强制 HTTPS】。
  1. 修改配置文件
    (1)在根节点添加:
upstream halo {
    server 127.0.0.1:8090;
}

其中的 8090 为 Halo 的运行端口,请按需修改。

(2)在 server 节点添加:

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;
}

(3)修改 server 节点中的 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$节点:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    proxy_pass http://halo;
    expires      30d;
    error_log /dev/null;
    access_log off;
}

(4)修改 server 节点中的 location ~ .*\.(js|css)?$节点:

location ~ .*\.(js|css)?$
{
    proxy_pass http://halo;
    expires      12h;
    error_log /dev/null;
    access_log off; 
}

(5)完整配置文件示例(仅包含关键部分):

upstream halo {
    server 127.0.0.1:8090;
}
server
{
    ...
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        proxy_pass http://halo;
        expires      30d;
        error_log /dev/null;
        access_log off;
    }
    
    location ~ .*\.(js|css)?$
    {
        proxy_pass http://halo;
        expires      12h;
        error_log /dev/null;
        access_log off; 
    }
    
    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;
    }

    ...
}

六、Halo初始化

访问网站地址,比如:www.whzie.top,进行初始化。

七、服务器开机自启动Docker

systemctl enable docker
至此,Halo博客简单搭建完成了。

0

评论区