使用 Docker + 宝塔面板部署 Halo 博客

Halo ,一个优秀的开源博客发布应用。

Halo官方文档给出了2种安装方法,个人更推荐Docker部署
对于小白来说宝塔是一个很好的服务器面板,它可以帮助你省下很多麻烦

演示站点

本文章并非零基础教程,如果你对服务器购买以及域名解析有疑问,可以看看halo 博客从零部署指南,在步骤“配置halo博客服务”后,再看此教程。

首先ssh工具链接服务器 废话


第一步安装宝塔面板这里就废话了

第二步安装Docker应该都有吧


开始部署halo

创建工作目录

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

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

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

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

vim application.yaml

拉取最新的 Halo 镜像

docker pull halohub/halo:latest

创建容器

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:latest
代码释义
-it: 开启输入功能并连接伪终端
-d: 后台运行容器
--name: 为容器指定一个名称
-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
--restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动
Halo 容器。

打开 http://ip:端口号 即可看到安装引导界面(需要用域名的不要做!!!)。

在官方文档中,这一步下有如下 TIP ,即如果你需要使用域名以及 反向代理,请不要进行这个步骤。而且因为你正在使用宝塔面板,默认情况下不会开放这个端口的,你也访问不了这个网址。如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 http://ip:端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。

宝塔面板所需软件包下载​

需要在宝塔面板的软件商店安装的软件包有:Nginx

添加站点并配置 Nginx​

点击左侧的 网站 菜单项,点击 添加站点 按钮。
  需要填写的表单信息如下:

域名:填写您已经解析到当前服务器公网 IP 的域名。
PHP版本:纯静态。
FTP 和 数据库均不创建,因为 Halo 自带了一个 H2 数据库,除非你想用其他数据库,如 MySQL 代替。不推荐代替,因为当你备份博客时,如果你使用其他数据库,需要自己备份数据库部分。
根目录保持原样即可。
填写完成之后点击 提交 按钮即可。

设置 SSL

在配置反向代理之前,我们推荐先设置好 SSL 证书。 

点击左侧的 网站 菜单项,点击 你添加站点时填写的网站名。
点击左侧的 SSL 菜单项。
可选择 宝塔 SSL 或者 Let's Encrypt 进行证书申请。 
需要开启右上角的 强制 HTTPS

修改配置文件

注意:不要修改教程中未提及部分。
“完整配置文件示例”中有省略号,省略的就是未提及部分,请不要直接复制然后替换配置文件。

配置文件位置

在根节点添加

upstream halo {
    server 127.0.0.1:8090;
}
 

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

如图

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

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

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

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

完整配置文件示例(仅包含关键部分请勿直接复制粘贴

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

完整示例图如下

随后点击保存即可。如果配置不生效,请重载 Nginx 或者 重启 Nginx。

最后,访问域名即可进行 Halo 的初始化。

后台地址

你的域名/admin

欢迎大家访问我的小破站https://jddgz.top/

-> 加入科技玩家交流群组:点击加入 <-
注意:
1.文中二维码和链接可能带有邀请性质,请各位玩家自行抉择。
2.请勿通过链接填写qq号与密码、银行卡号与密码等个人隐私信息。
3.禁止纯拉人头,拉app注册等信息,发现必小黑屋。
4.同一种信息仅发一次,多发会被删除。
5.文章中源码或APP等,无法保证其绝对安全,需自行辨别。
6.文章关联方不想展示也可以微信站长“socutesheep”删除。
本文由 @Nubulit 发布。如若转载,请注明出处: 科技玩家 » 使用 Docker + 宝塔面板部署 Halo 博客

给TA买糖
共{{data.count}}人
人已买糖
教程玩家投稿

Windows下部署阿东

2022-1-18 22:09:53

教程玩家投稿

解决NVJDC 无法接收验证码+可接收但报错的问题

2022-1-19 15:08:49

46 条回复 A文章作者 M管理员
贴心提醒
请认真对待作者付出,勿发表无意义言论,触发过滤规则的评论将无法提交,包含敏感词的评论会自动变成待审核状态哦。
  1.  未

    感谢分享,内容不错,学习了!!有空弄一个

  2. seatom

    继续加油哦,争取发表更多优秀帖子

  3. LAzySleep

    又学习到了,写的非常好😁

  4. LAzySleep

    感谢分享,谢谢楼主,赞

  5. OlyBoy

    宝塔用着还是很舒服的,功能强大操作简单!

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索