前言
出于记录学习的目的,想要搭建个人博客进行知识总结和分享,在逛了一圈博客搭建的相关文章之后,觉得Halo比较符合我的要求(其实是主题好看,而且社区也在不断更新主题)。
看了各种各样的搭建教程,包括官方的文档,弄了半天下来,还是挺麻烦的,配置环境很容易出错,在尝试了几种搭建方法后,分享给大家我觉得比较简便的方法。
(PS:Halo官方的腾讯云CloudBase部署教程应该是最方便的,不用配置服务器,直接部署应用就可以,但我没试过,这里提一下。)
主要的步骤如下:
- 购买服务器和域名
- 安装宝塔和Docker
- 安装和配置Nginx及SSL证书
如果不需要域名,某些步骤可以跳过,具体在详细步骤中会说明
购买服务器和域名
服务器和域名我都是用腾讯的,你可以选你熟悉或喜欢的厂家,服务器这块基本都一样,以下用腾讯的产品举例。
我的云服务器和域名订阅了一年,花费在百元内,当然如果访问量大了,服务器可能需要升级,不过这不在本文讨论范围内,根据需求购买即可。(云服务器链接)
这里设置地域无所谓,镜像选择CentOS 7.6,其他版本配置应该也可以,但是没测试过,我第一次装的8.2版本,在安装Nginx的时候老是出问题,如果有搭建服务器的经验,按你喜欢的方式来就行。
搭建服务器主要内容就是配置程序运行的环境和依赖,经常会在这里卡住,如果一个搭建方案行不通,可以去尝试另外一种。
一般来说购买服务器的设置会比这个多,具体怎么选择本文就不讨论了,如果不知道就都默认,只要操作系统选择CentOS就行。另外,Halo不支持云虚拟主机,使用云服务器或者VPS
购买域名没有什么可以注意的事项,各家都可以买,基本都一样的,没什么可以操作的,只需要将域名解析到购买的服务器的公网IP上即可。
安装Docker和拉取Halo镜像
因为宝塔跑在端口8888下,Halo跑在端口8090下,需要对服务器的安全组进行配置,让外部网络能访问到相应的程序端口。
在服务器安全组设置入站规则,分别添加8090端口和8888端口
现在我们就可以登入到Linux系统中进行环境配置了!
可以采用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程序,我们首先要进行域名的解析
我们需要添加两条解析,其中@表示通过域名.后缀
访问,如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登录,第一次使用还需要绑定宝塔账号,这里正常注册就可以了。
然后我们进行Nginx的安装,在软件商店找到Nginx,点击安装,安装完成后,状态的标志应该是三角形,表示正在运行。
然后我们进行Nginx的配置,添加站点,其中在域名中输入你解析的域名,有两条,其中一条是域名.后缀
另一条是www.域名.后缀
,其他如图保持默认,点击提交。
接着点击设置,进入配置文件的界面,需要对配置文件进行一些修改。
以下配置操作来自官方文档,更具体的说明可以查看官方文档
首先在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,我这里以我的实际情况举例。
在宝塔面板进入SSL页面,在其他证书中输入下载证书的密钥和证书,勾选右上方的强制HTTPS,保存之后就可以通过HTTPS访问我们的博客了!
结语
如果按照教程完成以上步骤,个人博客就搭建好了,接下来就是进行个人博客的各种设置了。搭建个人博客主要能满足高度定制化的操作,否则其实各大博客平台也能很好的满足需求。
最后希望大家能够坚持写博客,长期进行知识积累,最后回过头一定是不会后悔的。
关于本教程的任何问题,欢迎在评论区进行讨论!