侧边栏壁纸
博主头像
爱玩屋博主等级

一个瞎折腾的爱玩UP主,我的偶像是⬇️【我不是咕咕鸽】

  • 累计撰写 15 篇文章
  • 累计创建 51 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

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

艾纨
2023-07-18 / 0 评论 / 1 点赞 / 427 阅读 / 6317 字

一、服务器

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

二、域名

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

三、宝塔面板

本文选择了宝塔linux面板,可根据需求进行选择

安装完后,有个推荐安装套餐,本文选择了LNMP+极速安装,以后有其他需要得化也可以在软件管理修改

四、安装Docker

(一)安装Docker管理

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

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

官方文档-使用 Docker 部署 Halo

创建工作目录

mkdir ~/.halo && cd ~/.halo

下载示例配置文件到【工作目录】

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考

vim application.yaml

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

创建数据库halodb

(1)方法一:采用命令创建数据库halodb

create database halodb character set utf8mb4 collate utf8mb4_bin;

(2)方法二:在宝塔面板上创建数据库halodb

至此,数据库halodb创建成功。

拉取最新的 Halo 镜像

docker pull halohub/halo:1.5.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社区

安装引导界面

http://ip:端口号,端口号默认8090,这里需要在云服务器和宝塔面板上都开放这个端口。

五、配置反向代理

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

点击左侧的【网站】菜单项,点击【添加站点】按钮。

需要填写的表单信息如下:

域名:填写您已经解析到当前服务器公网 IP 的域名。

PHP版本:纯静态

填写完成之后点击【提交】按钮即可。

设置 SSL

可选择【宝塔 SSL】或者【Let’s Encrypt】进行证书申请。

需要开启右上角的【强制 HTTPS】。

修改配置文件

(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初始化

访问网站地址,比如:blog.aiwan.ch,进行初始化。

七、服务器开机自启动Docker

systemctl enable docker

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

1

评论区