在1Panel上安装部署Halo博客

作者:蜜汁云 发布时间: 2026-10-19 阅读量:2 评论数:0

前言

在上一篇《Halo 建站前的准备工作清单》里介绍了服务器、系统、面板、防火墙这些的准备工作,这样我们安装Halo才算有个靠谱的基础环境。我们的运维面板选择了 1Panel,1Panel对Halo的支持很不错,很简单就能在 1Panel 里把 Halo 装起来,今天就来详细讲一下如何在1Panel上安装部署Halo博客,以及其中的一些细节。

介绍一下我的VPS环境:2 核 2G 洛杉矶 VPS(CN2 GIA 线路)、Ubuntu 22.04、1Panel 面板。

先搞定域名,付费和免费两条路

装 Halo 之前,需要先把域名的事办了,因为后面创建网站、申请证书都绕不开它。

付费渠道,看你在意什么:

  • 国内注册商(阿里云、腾讯云):中文界面,支付宝付款,需要实名认证。缺点是转出和解析有些限制,但胜在省心;

  • 海外注册商(Namesilo、Cloudflare、Porkbun):不用实名,价格便宜。Cloudflare 按成本价卖域名,适合长期持有。

不管在哪买,主流的 .com 一年也就几十块钱。域名解析也很简单,登录域名服务商的后台,在域名管理里加一条 A 记录,指向你 VPS 的公网 IP 就行,等几分钟到半小时生效。

免费渠道也有,主要两个:

  • DigitalPlat FreeDomain:提供 us.kg、dpdns.org 这类免费二级域名,注册要用 GitHub 账号验证,每年记得手动续期;

  • eu.org:老牌免费域名,申请要排队审核,等几周甚至几个月都正常。

特别注意:练手用免费域名没问题,正式写博客就花几十块买个自己的。免费域名说没就没的风险谁也担不起,辛辛苦苦写的文章绑在一个随时可能失效的域名上,不值当。

装 Halo 之前,先装两样基础软件

登录 1Panel 后台,进应用商店。注意,1Panel 的「网站」功能是基于 OpenResty 实现的——它是个带网页管理能力的 Nginx 发行版,负责接收域名的 HTTP/HTTPS 请求再转发给后端应用。

安装顺序是:

  1. 应用商店搜 OpenResty,直接装最新版,默认端口 80 和 443 保持不变;

  2. 应用商店搜 MySQL,版本选 8.0(5.7 太老了,Halo 2.x 对 MySQL 8 支持良好),设置好 root 密码并记下来。

这两个装完,基础就打好了。

应用商店一键安装 Halo

应用商店搜 Halo,直接点击安装,版本选择上选商店提供的最新版本。1Panel 应用商店的一个好处:每个应用都自带版本切换功能,以后 Halo 出新版本,在面板里点一下升级就行,不用像 JAR 包部署那样手动换文件。

安装时有一串参数要填,逐个说:

  • 名称:随便起,默认也可以;

  • 数据库服务:下拉框里直接选刚装的 MySQL,这一步 1Panel 会自动建库、建用户、配授权,不用自己去数据库菜单手动创建,非常省事;

  • 数据库名、用户名、密码:默认自动生成,懒得改就保持默认,不过密码最好还是复杂一些,数字、字母、字符都有比较好,这些都要记好;

  • 外部访问地址:重点!如果你已经解析好了域名,这里直接填 http://你的域名,别填 IP。这个地址决定站内图片链接和评论回调,填成 IP 的话,等域名跑通后图片会莫名 404;

  • 端口:默认 8090,保持默认就行。

点确认,等状态变成已启动。

创建网站,把 Halo 绑上去

Halo 应用装好了,网站并不会自动创建,还需要手动绑一下。

流程很简单:左侧菜单进「网站」,点创建网站,类型选一键部署(已装应用),在列表里选中刚才装的 Halo,主域名填你的域名,确认。

等网站创建完成,浏览器输入域名,就能看到 Halo 的初始化页面了。这里就剩几件小事:

  • 站点标题、副标题:随便填,后台随时能改;

  • 管理员账号:用户名别用 admin,密码别用弱密码。这是后台唯一一道门,别图省事。

初始化完进后台,发篇测试文章,前台能正常看到,部署的主体工程就算完工了。

SSL 证书申请

现在地址栏还是"不安全",最后一步上 HTTPS,全程不用碰配置文件:

  1. 「网站」列表里点击证书;

  2. 选择申请证书,填域名,验证方式用 HTTP,证书来源选 Let’s Encrypt(免费,三个月一续);

  3. 申请成功后,在「网站」列表-网站-配置里启用 HTTPS,选择申请的证书,点击保存。

证书续期不用管,1Panel 会自动处理。做完之后去 Halo 后台的站点设置里,把外部访问地址的 http:// 改成 https://,和证书保持一致,然后清一下浏览器缓存重新访问,地址栏的小锁亮起,收工。

顺便说一句,整个过程里反向代理的头信息、Nginx 配置这些 1Panel 的 OpenResty 都帮你处理好了,一个配置文件都不用写,这就是当初选面板的原因。

最后的一点工作

HTTPS 跑通之后,还有两件事别忘:

  • 关掉 8090 对外访问:现在流量都走 OpenResty 的 80/443,Halo 的 8090 端口没必要再暴露在公网。1Panel 的主机防火墙和云服务商安全组两层都检查一遍,上一篇说过的;

  • 数据库端口同理:MySQL 的 3306 不需要对外开放,确认安全组里没有放行。

另外提一嘴Halo升级: Halo 有可用升级时,升级前建议去 Halo 官方的版本发布页看看更新日志,确认没有大改动再动手,可以在1Panel 的应用商店里找到 Halo 的官网和社区。

不用 1Panel 面板部署,也可以这么玩

如果你不装面板,或者想理解 1Panel 背后干了什么,Halo 官方文档提供的 Docker Compose 方式是标准路线:写一个 docker-compose.yml,把 Halo 和 MySQL 两个容器编排到一起,docker compose up -d 拉起,后面的反代和证书就用 Nginx 加 certbot 手动配。

核心流程和面板版完全一样:先起 MySQL 再起 Halo、初始化时按域名填外部访问地址、反代记得加下面的头信息:

proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme; 

尤其最后一行 X-Forwarded-Proto,不加的话配完 HTTPS 之后后台部分页面会混合内容报错。1Panel 的反代默认会带上这些头,这也是面板省心的地方。

总结

用 1Panel 部署 Halo 的完整流程串起来就是:获得域名做好域名解析 → 1Panel 应用商店安装 OpenResty 和 MySQL 8.0 → 再安装 Halo→ 通过 OpenResty 的网站功能一键部署绑定域名 → 初始化 Halo 管理员账号 → 站点设置里申请 Let’s Encrypt 证书,打开 HTTPS → 关掉端口收尾。

非常感谢你耐心阅读到结尾!

推荐阅读:

《Halo 建站前的准备工作清单》

4-VuKq.JPG

评论