从0开始搭建halo个人博客

最近闲来无事,购置了一个VPS,搭建了一个个人博客,正好也能让我之前没忍住购买的域名有一些用武之地。经过一番考虑,我选择了halo这个平台来搭建。没想到的是,尽管官方文档十分详尽,但是仍然出了不少尴尬的情况,但是至少到最后这些都被我解决了。看到自己空荡荡的页面,我想到我可以分享我的过程,所以有感而发写了这篇文章

1.选择halo的原因

我之前也尝试过别的各种博客,比如WordPress等,然而我发现我可能不太适合。WordPress想把页面自定义配置麻烦一些(当然,我不懂php也是原因之一),虽然可以把网站做成很多种多样,但是整体使用下来对于一个个人博客使用体验并没有那么好

然后前几天就在随便搜搜的过程中发现了halo,讲真我之前确实没听说过halo搭建博客(我怀疑可能我这方面接触不多也有关系,也有可能是被微软的halo时间观的光环掩盖了),但是在我看到文档之后,我觉得这个很适合我。首先就是它新建页面是用markdown的方式,这可比写html等省事多了,文章方面也用的markdown,其次就是因为这个文档是真的全,各种方面都写全了,甚至如何安装都教的很清楚,所以最后权衡再三,我选择了用halo搭建我的博客

2.各种资源的购置

VPS购买之前的话

  • 博客由于只是个网页,所以中外的VPS都可以选择,不用担心访问速度
  • 国内网站不一定需要备案,可以通过端口访问,端口是完全不影响收录的,所以无需担心
  • 如果想要或者需要备案,最好选择大供应商,一般都有辅助备案
  • 如果选购了国外互联网平台不要搭建任何隧道服务,也不要在大供应商处进行购买,有被墙的风险
  • 系统最好选择CentOS7(我使用的就是这个,可以规避一些不必要的问题)

购买VPS

我拿阿里云举例,在阿里云首页登陆后,在产品分类中选择轻量型应用服务器就够,不需要太高的配置,然后根据自己的喜好选择地域(影响延迟,但是影响不大),在镜像那里选择CentOS7.3的镜像,然后根据时间购置不同的时长即可。(阿里云这种还是推荐学生机,不然性价比不够),如果是别的供应商也大同小异。在购买后进入控制台一般就能看到ip用户名和密码,到这里VPS的购买就基本完成了

域名购买之前的话

  • 不要选择过于便宜的域名,白嫖也不是那么好白嫖的,一般要看看续费多少钱,避免第二年没法续费而更换域名
  • 过于冷门的域名可能造成不够好记,在腾讯等平台必须要加上http或https的前缀才能蓝(当然如果你不在意就无所谓了)

这里我选择的是万网的域名,购买过程.....就是搜索想要的域名,然后下单支付就好了,操作很简单。购买之后点进控制台,在左边的选项中选择域名,然后选择你要建博客的域名用A记录解析,具体的操作在阿里云官方有说明,应该可以看明白(如果看不明白可以从下面回复我,我看到的话会进行解决的)

3.halo博客本体的搭建

首先你可以看halo的官方文档,这里不过是更详细的一点说明.

halo的安装

首先通过SSH连接,这里linux和苹果用户直接用终端连接即可,win用户可以使用XShell等软件进行连接,这里不多赘述

然后使用passwd修改密码(这不是必须的),根据提示输入两次密码即可

我们需要在开始安装halo之前安装必要的软件以及环境

yum -y install wget
yum install vim -y
sudo yum update -y
sudo yum install java-1.8.0-openjdk -y

其中wget是网络下载工具、vim是文本编辑器,第三条命令是更新软件包、而最后一个就是安装java环境

随后依据网速不同,需要等待一些时间,在安装结束后

# 用以下的命令检测是否安装成功
java -version

出现以下样式表示安装成功(版本号不同也没有关系)
成功示例
如果出现的不是这种提示,请手动安装,点击这里查看手动安装教程(无需图形界面)

首先,我们按照官网提示,添加一个低权限用户运行halo(方便管理)

# 创建 halo 用户
sudo useradd -m halo
# 直接登录该用户
sudo su halo

随后,我们跳过官方下载配置文件的环节(官方自带,我们现在无需修改,所以这里是不用下载的)直接下载我们的安装包(配置文件可以在安装后进行修改)
GitHub release

#将{{version}}替换为当前的最新版本,不加v
#如果下载不了就加个sudo,后文有提到方法
#国内用以下命令下载
wget https://dl.halo.run/release/halo-{{version}}.jar -O halo-latest.jar

#国外用以下命令下载
wget https://github.com/halo-dev/halo/releases/download/v{{version}}/halo-1.3.2.jar -O halo-latest.jar

然后使用java -jar halo-latest.jar启动测试,看到以下提示说明启动成功

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!

如果报错,可以尝试尝试使用管理员权限运行,点击这里查看更改权限的方法,在修改后在命令前加sudo再次进行尝试(如果还是不行的话建议点击这里加入官方的交流群进行求助)

halo的后续配置

上面我们已经完成了 Halo 的整个配置和安装过程,接下来我们对其进行更完善的配置,比如:需要开机自启?更简单的启动方式?

实现以上功能我们只需要新增一个配置文件即可,也就是使用 Systemd 来完成这些工作。

断开SSH连接,用admin账户重新连接服务器

# 下载 Halo 官方的 halo.service 模板
sudo curl -o /etc/systemd/system/halo.service --create-dirs https://dl.halo.run/config/halo.service

下载完成之后,我们还需要对其进行修改。

# 修改 halo.service
sudo vim /etc/systemd/system/halo.service

打开后我们可以看到

Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

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

StandError=inherit

[Install]
WantedBy=multi-user.target
~                                                                                                                                                                                                                                                
~                                        

参数:

  • -Xms256m:为 JVM 启动时分配的内存,请按照服务器的内存做适当调整,512 M 内存的服务器推荐设置为 128,1G 内存的服务器推荐设置为 256,默认为 256。
  • -Xmx256m:为 JVM 运行过程中分配的最大内存,配置同上。
  • YOUR_JAR_PATH:Halo 安装包的绝对路径,完全按照我的教程的话这里应该填/root/halo-latest.jar

修改后刷新Systemd

sudo systemctl daemon-reload

设置开机自启(当然你不打算关机的话我也不会说什么)

sudo systemctl enable halo

然后启动halo

sudo service halo start

最后我们用

sudo service halo status

如果出现下图的提示,就说明启动成功了
服务启动成功图

网站上线

这里我们用的是宝塔面板(主要是维护方便),当然其他面板也可以(但是我出不了教程,见谅)

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

如果是小服务商,不提供全部的端口,就输入下面的命令

#这里8881只是举例子,大家可以修改为自己想要的端口
echo '8881' > /www/server/panel/data/port.pl && /etc/init.d/bt restart
firewall-cmd --permanent --zone=public --add-port=8881/tcp
firewall-cmd --reload

然后从宝塔安装完毕后的提供的安全入口登入面板(网址是http://ip/安全入口),账号密码在安装那里就已经提供的,直接登入对于账号密码进行修改

随后仅安装nginx(这就够了),进入网站页面。点击添加站点,然后输入你的域名和端口(如果不用80端口的话),点击提交

随后点击右边的设置,点开配置文件,就可以看到这个网页的配置文件,找到下面这段并删除(先访问网站试一下是不是成功加载(记得在改好博客地址的情况下),如果没问题下面这步可以跳过)

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
    error_log off;
    access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
    expires      12h;
    error_log off;
    access_log /dev/null; 
}

这样就能避免博客加载不出CSS和JS图片等

在原来删除的位置添加下面的内容(让外部可以访问你的网站)

location / {
    proxy_pass http://127.0.0.1:8090;    
	}

点击保存来保存配置

点左边的SSL选项来进入SSL管理,如果你有宝塔账号并实名制可以直接使用宝塔的SSL(但是我没有配置成功,所以没有教程)

Let's Encrypt选项进入SSL证书配置,由于我用的阿里云,所以我就教一下阿里云如何配置(其他的也大同小异,不多赘述)。

选择DNS验证,在DNS接口那里选择阿里云DNS,点击左边的设置可以进入设置页面

根据宝塔官方的提示我们可以找到我们的AccessKey和SecretKey,点击保存,再次选择阿里云DNS,选中自动组合泛域名并选中下面的域名点击申请,然后就可以了

如果没有443接口,则点回配置文件,此时宝塔应该已经在上面添加了一行

listen 443 ssl http2;

把这个443改为你要的端口,保存即可

  • 注意事项
  • 不要勾选强制SSL
  • 如果80和443都没有,建议删除上面listen的那条配置,只保留SSL的配置,达到强制SSL的效果
  • 如果你是国内并使用了443或80端口,应当前往全国互联网安全管理服务平台进行备案(如果是一些提供备案服务的也可以走他们的渠道)

最后,登入https://域名:端口/ 进行初始化设置,halo的布置就完成了
(需要注意的是,地址尾部不需要 /,这里不要设置错了,不然页面显示会出问题,分清httphttps!!!!)

4.后台相关设置

这里可以参考一下官方给出的文档

需要说明的是SMTP服务那里目前我只有qq邮箱设置成功了(别的没成可能是因为我比较菜)

尾声

大体来说就这些了,如果有不懂的可以进群去问,博主很穷,有经济实力的话打赏点呗(被拍飞)

Q.E.D.


兴趣使然,随便写写,摸鱼最快乐了