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

官网:https://halo.run/
官方文档:https://docs.halo.run/getting-started/install/docker

本博客就是基于Halo博客+sakura主题部署而成。

这个博客系统我觉得它主要的特点就是:

1.博客系统程序开源
开源就意味着能有更多的主题、魔改的可能和资源,而且能保证博客的安全性与稳定。
另外Java程序可以多平台,linux、win都可以运行,只要你的服务器或者电脑支持jre环境,那就没问题的

2.轻量化,容易部署
博客系统理论上是不需要任何web服务器程序(nginx等),不过为了安全,不建议直接使用root用户运行这个博客系统监听80端口。
博客系统程序下载下来只有一个jar程序,最新的版本需要jre11环境即可。可以实现一条docker命令直接部署运行。

3.拥有API
这个功能我没有使用过,应该是可以一些API开发微信小程序和插件等等。

4.附件管理
typecho博客系统的附件文件管理机制我觉得有点糟糕的,但是halo给予了很好的后台管理附件的空间和功能。并且支持后台本地上传至阿里云、又拍云、七牛云等一些主流的对象储存。

5.评论
使用独立的评论插件,只需要在页面引用构建好了的js文件就可以与主题相结合,进行评论系统更换。

6.论坛风气良好
halo论坛很不错,有很多大佬热心交流,主题维护者更新也很勤快,给我的印象非常好。

正文

前言讲了这么多就开始吧哈哈哈。

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

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

  • 第一步安装宝塔面板这里就废话了
  • 第二步安装Docker应该都有吧(没有的话宝塔里面安装即可,傻瓜式操作)

开始部署halo:
创建工作目录(在您的服务器上面输入下面的命令)

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

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

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

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

vim application.yaml

温馨提示:因为后面选择H2数据库,这里不用配置也行,把示例配置文件下载到工作目录就算完成了,跳过这步直接进行下面拉取镜像即可!!!

拉取最新的 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 的运行端口,请按需修改。

微信图片_20220212212048.png

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

完整实例图如下:
微信图片_20220212212626.png
微信图片_20220212212632.png

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

最后,访问域名即可进行 Halo 的初始化。后台地址:你的域名/admin,主题的话可自行去halo官网找哦!!!

Q.E.D.