传送门:Halo 官网html
我是小白,今年大一,刚刚脱离了数理化苦海的我,发现对学习计算机有着浓厚的兴趣,学的过程当中发现了不少有意思的东西,好比刚刚接触的开源操做系统 Linux,对于从小接触 Windows 的我,觉得操做系统等于 Windows,Windows 就是惟一的操做系统java
同时解锁了另外一个属性就是“折腾”,喜欢去找开源的好用的软件来替代正在使用的软件,固然这个过程当中也让我发现了很多很是实用的工具,好比作笔记用的 Typora,加密小电影用的 VeraCryptlinux
随着整理的笔记愈来愈多,记录的资料愈来愈多,就想找个地方与其余人分享,需求是搭建属于本身的博客系统nginx
固然如今优秀的开源博客系统有不少,选择也不少,如 Hexo、VuePress 等,最后选择了基于 SpringBoot 开发的 Halo,它的源码也不是很复杂,可是代码很是的规范,对于 Java 开发者,特别是 Java 初学者,有不少值得学习的地方docker
做为一个 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
推荐使用 Docker
的方式进行部署,简单操做,方便快捷
除此以外Halo 还支持一键部署到 腾讯云 CloudBase | Halo Documents,不过这个我没有尝试过,不作推荐,感兴趣的同窗能够本身尝试用这种方式部署
Halo 做为一个基于 SpringBoot
的动态博客系统,没有服务器资源是无法跑起来的,像 Hexo、VuePress 这类静态页面型的博客系统,是能够部署到 GitPage,GiteePage 等托管服务上的,不只没有服务器的支出,也没有运维的时间成本,因此具体怎么选择仍是要看我的
部署博客系统,首先须要一台有外网 IP 的服务器,这样别人才能访问到你的博客
固然也有其余选择,好比部署在本机,而后打开内网穿透,再购买域名进行反向代理,别人也是能够访问到的,可是你的机器一关机就莫得了
能够选择的服务器有不少,华为云、腾讯云、阿里云都是能够的,如何租赁和购买域名这里就不赘述了
假设你已经有一台云服务器了,IP 是 1.2.3.4,而且经过 SSH 工具连上去了,顺便推荐一款 Windows 上的 SSH 工具:Termius,若是你是 Mac/Linux,直接使用终端更方便
不一样的 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 就能够打开初始化页面了,根据提示进行初始化后就能够愉快的使用了
假设购买的域名是 www.abc.com,此时要作的重要一步是域名解析,这一步是在 DNS 服务器里面注册你域名和 IP 的映射关系,当用户使用浏览器访问域名地址时,DNS 服务器会解析到实际的 IP 地址
教程传送门 -> 域名解析设置
反向代理能够选择 Nginx 或 Caddy,这里选择使用 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
中
重启 Nginx
$ systemctl restart nginx
复制代码
访问 www.abc.com 便可正常访问 Halo
若是本文对你有帮助,或者对本文有疑惑、建议等,欢迎留言评论