banner
NEWS LETTER

从0开始搭建自己的halo博客

Scroll down

从0开始搭建自己的halo博客

[toc]


0.前言

​ 这篇教程主要是写给一些新手,对搭建个人博客有兴趣的同学看的,第一次写教程有写的不好的地方还请见谅。有些地方写的比较啰嗦,有一定基础的同学可以自行操作不用严格按照我写的步骤操作,推荐参考halo官方文档进行安装部署!


1.准备内容

  • 云服务器

  • SSH工具

  • ftp工具

  • 域名


2.云服务器的选购与配置

​ 市面上有很多云服务器可以购买,比如腾讯云、阿里云、华为云可以自己去选购,在这里我就只给出我使用的微软azure云相关的配置。选购的时候可以看一下相关的优惠活动比如新用户或者学生特惠之类,我这里用的就是微软的免费云服务器(大概一年左右),halo官网对于配置的推荐要求并不高所以并不需要性能很强的云服务器。

​ 来看一下halo官方的推荐配置:

硬件配置

提示:

如果您要使用服务器进行部署 Halo,您需要注意的是,Halo 目前不支持市面上的云虚拟主机,请使用云服务器或者 VPS。

CPU

无特别要求。目前我们的 Docker 镜像 也已经支持多平台。

内存

为了获得更好的体验,我们建议至少配置 1G 的 RAM。

磁盘

无特别要求,理论上如果不大量在服务器上传附件,Halo 对磁盘的容量要求并不是很高。但我们推荐最好使用 SSD 硬盘的服务器,能更快的运行 Halo。

网络

Halo 目前必须在外网畅通的情况下使用,否则会导致页面异常。


现在开始看一下azure云是如何白嫖一年的,具体可以参考 这篇文章

2.1 申请一个微软azure学生账号

​ 申请地址在 这里 ,这里不需要信用卡,只需要有一个微软账号以及教育邮箱,教育邮箱大部分学校应该都是有的,可以自己去找老师同学问一下相关内容。具体的注册内容根据页面提示操作就ok。

md1pic1


2.2 查看相关信息

​ 注册申请完成后可以进入azure的 主页 点击订阅可以看到“Azure for student”就说明学生订阅成功。

md1pic2
md1pic3

​ 也可以后续查询订阅的余额,通过 这里

md1pic4


2.3 创建虚拟机

​ 搜索虚拟机选中

md1pic5

​ 选择创建azure虚拟机

md1pic6

​ 进行配置选择的时候需要注意区域尽量选择距离自己位置近的,映像选择ubuntu(熟悉centos也可以),vm体系结构选择x64

​ 重点是大小要选择B1s

md1pic7

​ 上面提到的引用的文章作者也有提到原因:

据网上博客说香港实际延迟最低,其次新加坡日本啥的。然后在大小里面选择B1S(据网上看到的一些博客说微软学生包实际包含两台免费的B1S,所以B1S是不会扣额度的,而更便宜的B1ls会扣额度,但我没在官网看到,所以这点存疑待验证,但是B1S仍然是比较好的选择,)

​ 然后是关于用户和入站规则,这里我用的是密码(自己要记好这个用户名密码),因为不太习惯用ssh公钥,入站规则默认就好。

md1pic8

后续的配置全部默认,一直到创建虚拟机,等待一会就创建完成,但是需要修改一些内容。


2.4 更改磁盘大小

​ 微软学生包会有两个免费的64G SSD,但是前面我们创建虚拟机分配的默认磁盘并不是64G的,所以我们需要更改使用免费磁盘。来到我们创建的虚拟机控制台点击停止。

md1pic9

然后可能会弹出保存公共IP的信息,这里保存的话就是静态IP,这个服务是收费的,不保存的话每次停机启动就会重新变IP,不过在shell里面通过reboot这个命令重启是不会变的,只有在主页里面停机启动才会变,所以一般没必要开。

​ 然后选择磁盘,点击os磁盘下边的第一个选项

md1pic10

​ 进去以后选择大小和性能,然后选择P6的这个64g磁盘

md1pic11

​ 到这里就全部配置完毕了,去虚拟机的控制台启动机器就好了。


3.连接虚拟机安装halo

3.1 使用ssh工具连接azure主机

​ 这里就需要用到ssh工具,这里我以我用的xshell演示。

​ 打开xshell选择新建,主机填写你的azure虚拟机的公网ip地址(可以在虚拟机控制台复制),第三步选择用户身份验证填入创建虚拟机时设置的账号密码。

md1p2pic1


3.2 依赖检查

​ 这里开始可以按照halo官方文档操作

如果部分命令执行后有permission denied提示可以在命令前加上sudo(如下第一步)。


​ 1.安装jre(halo官网推荐jdk11版本)

1
sudo apt-get install openjdk-11-jre -y

​ 2.检查安装版本

1
java -version

​ 如果输出以下类似的内容即代表成功

1
2
3
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.20.04, mixed mode)

3.3 安装halo

官方推荐是创建新用户进行操作,嫌麻烦可以不创建。

1.创建存放 运行包 的目录,这里以 ~/app 为例

1
mkdir ~/app && cd ~/app

2.下载运行包

1
wget https://dl.halo.run/release/halo-1.6.0.jar -O halo.jar

3.创建 工作目录

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

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

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

5.(可选操作,如果是0基础小白建议不修改)编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考

1
vim application.yaml

如果是第一次接触linux的同学,使用vim命令后不会编辑可以看一下这里。

vim执行进入后按键盘i键进入编辑,键盘上下左右控制位置,编辑(尽量不要使用小键盘输入数字,键盘使用英文模式)后按esc键,按 shift 加 ;键后输入wq(退出并保存)完成编辑。如果保存失败可以输入q! (强制退出),然后重新执行上述命令改为sudo vim applica.yaml

6.测试运行 Halo

1
cd ~/app && java -jar halo.jar

如看到类似以下日志输出,则代表启动成功。

1
2
3
run.halo.app.listener.StartedListener    : Halo started at         http://127.0.0.1:8090
run.halo.app.listener.StartedListener : Halo admin started at http://127.0.0.1:8090/admin
run.halo.app.listener.StartedListener : Halo has started successfully!

7.浏览器地址栏输入 http://ip:端口号 即可看到安装引导界面。(ip是azure的公网地址,端口号默认8090)

​ 这一步如果无法访问记得去azure控制台修改网络安全组。

​ 打开网络安全组,选择第一个。

md1p2pic2

​ 入站和出站安全规则都配置一下,方法是一样的。

​ 点击入站(出站)安全规则,选择添加。

md1p2pic3

​ 修改端口为8090(如果自己修改了application.yaml中的端口号,就自己改成对应的端口)。

md1p2pic4

​ 后续如果绑定了域名需要开启http或者https对应的80和443端口,方法也是一样的。

如测试启动正常,请继续看作为服务运行部分,第 8 步仅仅作为测试。当你关闭 ssh 连接之后,服务会停止。你可使用 CTRL+C 停止运行测试进程。

提示

如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 http://ip: 端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。

简单来说就是第7步成功后先别急着开始使用,使用CTRL+C 停止服务。


3.4 作为服务启动

1.退出 halo 账户,登录到 root 账户

如果当前就是 root 账户,请略过此步骤(没有创建新用户的情况跳过)。

1
exit

2.下载 Halo 官方的 halo.service 模板

1
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service

3.修改 halo.service

1
vim /etc/systemd/system/halo.service

4.修改配置

  • YOUR_JAR_PATH:Halo 运行包的绝对路径(你的halo.jar下载位置),例如 /home/halo/app/halo.jar,其中/halo改为你创建的用户名,如/home/yahoo/app/halo.jar(没创建新用户的情况下可以这样改),注意:此路径不支持 ~ 符号。
  • USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。若没有创建新用户请删除 User=USER
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=USER
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target

5.重新加载 systemd

1
systemctl daemon-reload

6.运行服务

1
systemctl start halo

7.在系统启动时启动服务

1
systemctl enable halo

您可以查看服务日志检查启动状态

1
journalctl -n 20 -u halo

4.反向代理

4.1 安装nginx

​ 这一步可以去网上看类似教程(ubuntu安装nginx),这里只简单带过命令了。

1
2
sudo apt update
sudo apt install nginx

​ 中途会询问是否安装选择 Y 来开始安装。

​ 安装完成可以通过一下两个命令查看nginx版本,启动nginx。

1
2
nginx -v
service nginx start

4.2配置nginx.conf文件

可以通过cd命令进入文件夹,ls列出文件列表后可以看到nginx.conf,使用vim命令进行编辑。

1
2
3
cd /etc/nginx
ls
vim nginx.conf

如果觉得vim编辑不方便可以使用xftp工具(xshell整和)进入相关目录进行编辑

md1p2pic5

若编辑保存后发现文件内容没变,可以执行如下命令

1
sudo chmod 666 nginx.conf

Nginx 配置文件内容,其中server_name改为自己的域名(目前还是不能通过域名访问的,后续去进行配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
upstream halo {
server 127.0.0.1:8090;
}
server {
listen 80;
listen [::]:80;
server_name www.yourdomain.com;
client_max_body_size 1024m;
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;
}
}

注意:Nginx 默认的 client_max_body_size 配置大小为 1m,可能会导致你在 Halo 后台上传文件被 Nginx 限制,所以此示例配置文件加上了 client_max_body_size 1024m; 这行配置。当然,1024m 可根据你的需要自行修改。

​ 配置完成后可以执行以下命令测试配置文件是否通过测试。

1
sudo nginx -t

​ 通过测试后重新载入配置文件

1
sudo nginx -s reload

​ 记得在网络安全组开放80端口。

5.绑定域名

​ 域名的话可以去随便买一个,新用户都会有优惠比如一元一年的那种,根据商家要求进行购买和一些认证就行。

​ 购买以后可以根据相关教程进行dns解析设置等,这里就给出腾讯云的示例,可以自己根据其中内容完成配置,没有太多难度。

腾讯云官方教程

​ 完成以后就可以通过域名访问你的halo博客啦!关于一些博客的基本设置可以自己通过 域名/admin 进入后台进行操作,最好参考halo的官方文档!

其他文章
cover
JUC面试题
  • 22/11/16
  • 13:02
  • java资料