一款基于SpringBoot的优秀开源博客系统:Halo

传送门:Halo 官网html

我是小白,今年大一,刚刚脱离了数理化苦海的我,发现对学习计算机有着浓厚的兴趣,学的过程当中发现了不少有意思的东西,好比刚刚接触的开源操做系统 Linux,对于从小接触 Windows 的我,觉得操做系统等于 Windows,Windows 就是惟一的操做系统java

同时解锁了另外一个属性就是“折腾”,喜欢去找开源的好用的软件来替代正在使用的软件,固然这个过程当中也让我发现了很多很是实用的工具,好比作笔记用的 Typora,加密小电影用的 VeraCryptlinux

随着整理的笔记愈来愈多,记录的资料愈来愈多,就想找个地方与其余人分享,需求是搭建属于本身的博客系统nginx

固然如今优秀的开源博客系统有不少,选择也不少,如 HexoVuePress 等,最后选择了基于 SpringBoot 开发的 Halo,它的源码也不是很复杂,可是代码很是的规范,对于 Java 开发者,特别是 Java 初学者,有不少值得学习的地方docker

image-20210601175058401


做为一个 SpringBoot 应用,Halo 的部署有多简单呢,让它运行起来只须要两行命令:shell

这种方式运行的前提是机器配置好了 JDK 等必要环境vim

$ wget https://dl.halo.run/release/halo-1.4.8.jar
$ java -jar halo-1.4.8.jar
复制代码

固然最方便的部署方式仍是 Dockercentos

$ docker pull halohub/halo:latest
$ docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo halohub/halo:latest
复制代码

使用 halo 还有一个很是方便的地方,它的全部用户自定义的配置、主题等东西都放在 ~/.halo 目录里,当你要迁移博客,只须要备份这个文件夹,从新运行上述命令,你的一切配置、附件、主题等都回来了,因此说迁移能力是很高的,后台管理系统也提供了备份与恢复的功能,原理是同样的浏览器


一些图效果:bash

image-20210602203700229

image-20210603091646157


如何部署

推荐使用 Docker 的方式进行部署,简单操做,方便快捷

除此以外Halo 还支持一键部署到 腾讯云 CloudBase | Halo Documents,不过这个我没有尝试过,不作推荐,感兴趣的同窗能够本身尝试用这种方式部署

Halo 做为一个基于 SpringBoot 的动态博客系统,没有服务器资源是无法跑起来的,像 Hexo、VuePress 这类静态页面型的博客系统,是能够部署到 GitPage,GiteePage 等托管服务上的,不只没有服务器的支出,也没有运维的时间成本,因此具体怎么选择仍是要看我的


步骤

1. 服务器租赁

部署博客系统,首先须要一台有外网 IP 的服务器,这样别人才能访问到你的博客

固然也有其余选择,好比部署在本机,而后打开内网穿透,再购买域名进行反向代理,别人也是能够访问到的,可是你的机器一关机就莫得了

能够选择的服务器有不少,华为云、腾讯云、阿里云都是能够的,如何租赁和购买域名这里就不赘述了

假设你已经有一台云服务器了,IP 是 1.2.3.4,而且经过 SSH 工具连上去了,顺便推荐一款 Windows 上的 SSH 工具:Termius,若是你是 Mac/Linux,直接使用终端更方便


2. Docker 环境配置

不一样的 Linux 发行系列的操做命令不太同样,假设你购买的服务器运行的是 Centos7

必定要记得开放服务器的防火墙端口,Halo 默认运行在 8090,若是使用域名访问,记得开放80,若是你要配置 Https 记得开发 443

若是在虚拟机上运行,开放端口与 SeLinux 的处理也是必不可少的,这二者都会致使服务启动后没法访问页面


添加软件源并安装 Docker

$ curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
$ yum install docker-ce
复制代码

执行这两条命令后就能够正式部署了

$ docker pull halohub/halo:latest
$ docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo halohub/halo:latest
复制代码

等待一段时间,等服务正式启动完成就能够访问了

前面假设这台服务器的外网 IP 是 1.2.3.4,那么打开浏览器,输入 1.2.3.4:8090 就能够打开初始化页面了,根据提示进行初始化后就能够愉快的使用了


3. 配置自定义域名

假设购买的域名是 www.abc.com,此时要作的重要一步是域名解析,这一步是在 DNS 服务器里面注册你域名和 IP 的映射关系,当用户使用浏览器访问域名地址时,DNS 服务器会解析到实际的 IP 地址

教程传送门 -> 域名解析设置


4. 设置反向代理

反向代理能够选择 NginxCaddy,这里选择使用 Nginx

安装 && 启动

$ yum install nginx
$ systemctl enable nginx
$ systemctl start nginx
复制代码

添加自定义配置 vim /etc/nginx/conf.d/halo.conf

只须要修改注释掉的两行便可

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.abc.com;         # 本身购买的域名
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;    # 这个halo 就是上面 upstream 的值,其实是 http://127.0.0.1:8090
    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;
  }
}
复制代码

也能够把这一段直接加到 /etc/nginx/nginx.conf

image-20210603114317754


重启 Nginx

$ systemctl restart nginx
复制代码

访问 www.abc.com 便可正常访问 Halo


若是本文对你有帮助,或者对本文有疑惑、建议等,欢迎留言评论

相关文章
相关标签/搜索