开源博客Halo的快速搭建教程

前言

出于记录学习的目的,想要搭建个人博客进行知识总结和分享,在逛了一圈博客搭建的相关文章之后,觉得Halo比较符合我的要求(其实是主题好看,而且社区也在不断更新主题)。
看了各种各样的搭建教程,包括官方的文档,弄了半天下来,还是挺麻烦的,配置环境很容易出错,在尝试了几种搭建方法后,分享给大家我觉得比较简便的方法。
(PS:Halo官方的腾讯云CloudBase部署教程应该是最方便的,不用配置服务器,直接部署应用就可以,但我没试过,这里提一下。)
主要的步骤如下

  • 购买服务器和域名
  • 安装宝塔和Docker
  • 安装和配置Nginx及SSL证书

如果不需要域名,某些步骤可以跳过,具体在详细步骤中会说明

购买服务器和域名

服务器和域名我都是用腾讯的,你可以选你熟悉或喜欢的厂家,服务器这块基本都一样,以下用腾讯的产品举例。
我的云服务器和域名订阅了一年,花费在百元内,当然如果访问量大了,服务器可能需要升级,不过这不在本文讨论范围内,根据需求购买即可。(云服务器链接

021.png
022.png

这里设置地域无所谓,镜像选择CentOS 7.6,其他版本配置应该也可以,但是没测试过,我第一次装的8.2版本,在安装Nginx的时候老是出问题,如果有搭建服务器的经验,按你喜欢的方式来就行。
搭建服务器主要内容就是配置程序运行的环境和依赖,经常会在这里卡住,如果一个搭建方案行不通,可以去尝试另外一种。

一般来说购买服务器的设置会比这个多,具体怎么选择本文就不讨论了,如果不知道就都默认,只要操作系统选择CentOS就行。另外,Halo不支持云虚拟主机,使用云服务器或者VPS

购买域名没有什么可以注意的事项,各家都可以买,基本都一样的,没什么可以操作的,只需要将域名解析到购买的服务器的公网IP上即可。
023.png

安装Docker和拉取Halo镜像

因为宝塔跑在端口8888下,Halo跑在端口8090下,需要对服务器的安全组进行配置,让外部网络能访问到相应的程序端口。
024.png

在服务器安全组设置入站规则,分别添加8090端口和8888端口
025.png

现在我们就可以登入到Linux系统中进行环境配置了!
026.png
可以采用SSH登录,各家应该也有自带的登录功能,具体的登陆方式可以看各家的帮助文档或者百度

在进入系统之后,先要获得root权限,假如已经是root用户跳过此步。后续操作需要root权限

#切换到root用户,需要输入密码
su - root
#如果上述方法切换不到root用户,可以执行下面的指令设置root密码
#然后再进行执行上述代码切换到root用户,此时密码为刚刚输入的密码
sudo passwd root

安装Docker

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io #安装docker  
sudo systemctl start docker #启动docker

如果安装成功,输入docker images会出现类似的内容

[root@VM-16-14-centos ~]# docker images
REPOSITORY     TAG       IMAGE ID       CREATED       SIZE

拉取官方镜像

mkdir ~/.halo && cd ~/.halo #创建工作目录
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml #下载配置文件
vim application.yaml #编辑配置文件,如果没有特殊要求,修改后台密码即可
docker pull halohub/halo:latest #拉取Halo镜像
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo #创建容器

其中配置文件如下

# username和password是后台登录的账号密码,建议修改,其他设置具体见官方文档
# vim编辑操作具体自行百度
spring:
  datasource: 
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:~/.halo/db/halo
    username: admin
    password: 123456
  h2:
    console:
      settings:
        web-allow-others: false
      path: /h2-console
      enabled: false

完成以上操作之后,Docker容器就创建完成了,可以输入docker ps -a进行测试,出现类似的内容即创建成功!

[root@VM-16-14-centos ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS        PORTS                                       NAMES
ba25c574f8ba   halohub/halo   "/bin/sh -c 'java -X…"   15 hours ago   Up 15 hours   0.0.0.0:8090->8090/tcp, :::8090->8090/tcp   halo

进行到这一步,Halo已经运行在服务器上了,此时通过http://ip:8090就可以访问到Halo的注册页面(ip替换为你购买服务器的公网ip)

接下来我们进行Nginx的搭建和配置SSL证书,如果没有域名访问的需求,通过ip:端口的形式就能满足需求,那么接下来的步骤就可以不需要了,你已经完成了个人博客的搭建!

搭建Nginx反向代理

我们要通过Nginx反向代理使域名能访问到Halo程序,我们首先要进行域名的解析
027.png
我们需要添加两条解析,其中@表示通过域名.后缀访问,如baidu.com;www表示通过www.域名.后缀访问,如www.baidu.com
其他保持默认即可,域名解析设置完成后,可以用ping命令进行测试

完成域名的解析设置之后,我们返回到服务器安装宝塔

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh #安装宝塔面板

此过程会经历一段时间,在完成后会显示宝塔的登陆地址、账号、密码,形式如下

外网面板地址:...
内网面板地址:...
username:...
password:...

在浏览器输入外网面板地址,然后输入username和password登录,第一次使用还需要绑定宝塔账号,这里正常注册就可以了。
028.png
然后我们进行Nginx的安装,在软件商店找到Nginx,点击安装,安装完成后,状态的标志应该是三角形,表示正在运行。

然后我们进行Nginx的配置,添加站点,其中在域名中输入你解析的域名,有两条,其中一条是域名.后缀另一条是www.域名.后缀,其他如图保持默认,点击提交。
029.png
0210.png
接着点击设置,进入配置文件的界面,需要对配置文件进行一些修改。

以下配置操作来自官方文档,更具体的说明可以查看官方文档
首先在server的同级节点下添加

upstream halo {
  server 127.0.0.1:8090;
}

修改 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ 节点

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
  proxy_pass http://halo;
  expires 30d;
  access_log off;
}

修改 location ~ .*\.(js|css)?$ 节点

location ~ .*\.(js|css)?$ {
  proxy_pass http://halo;
  expires 7d;
  access_log off;
}

server 节点添加如下配置

location / {
  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;
  proxy_pass http://halo;
}

到此步就可以通过域名访问我们的博客了!如果没有SSL证书的需求,则下面的步骤可以略过。

SSL证书配置

我这里使用的是腾讯免费的SSL,具体操作各家都不一样,总之最后就是下载自己申请的证书,下载Nginx版本的。
嫌麻烦也可以直接使用宝塔的SSL,我这里以我的实际情况举例。
0211.png
0212.png

在宝塔面板进入SSL页面,在其他证书中输入下载证书的密钥和证书,勾选右上方的强制HTTPS,保存之后就可以通过HTTPS访问我们的博客了!
0213.png

结语

如果按照教程完成以上步骤,个人博客就搭建好了,接下来就是进行个人博客的各种设置了。搭建个人博客主要能满足高度定制化的操作,否则其实各大博客平台也能很好的满足需求。
最后希望大家能够坚持写博客,长期进行知识积累,最后回过头一定是不会后悔的。

关于本教程的任何问题,欢迎在评论区进行讨论!

上一篇 下一篇

评论 | 0条评论