linux搭建halo博客

jar包搭建(远古时代的部署教程了,要考古的可以看看,推荐看下面的docker搭建halo)

快速搭建

linux安装halo官方文档:https://docs.halo.run/install/linux
先去官网下载:https://dl.halo.run/release/
官方主题仓库:https://halo.run/themes.html
也可以使用wget下载到服务器: wget https://dl.halo.run/release/halo-1.4.8.jar
安装java环境:yum install java-11-openjdk -y
启动halo:java -jar halo-1.4.8.jar
访问默认的http://ip:8090即可进入安装引导界面,如果无法访问检测以下防火墙是否开启,如果开启了是否允许该端口被访问(比如阿里云就需要去控制台添加相应访问规则)

注:如果启动时报错,那可能jdk版本不兼容,比如你用jdk1.8去启动halo-1.4.8.jar就会报错,我之前是之前yum安装的java-1.8.0-openjdk,就报错了,当时便有了以下思路,一用低一点版本的halo,如halo-1.4.6.jar去适配jdk1.8,二可以选择卸载原有jdk,安装更高版本的jdk,三使用docker搭建halo,与宿主机分离,不改变宿主机环境
此处我选择了第二个方法,原因是软件用新不用旧,旧版本虽然稳定,但是存在漏洞的概率也更高(或者有的软件旧版本本就存在着一些漏洞),对于有的软件我们是“能用就行,绝不升级”的原则,但这个halo我们还是尽量用新版。直接yum remove java-1.8.0-openjdk,然后yum install java-11-openjdk -y,但是使用java -version还是显示1.8的,于是rpm -qa|grep jdk,找到1.8的jdk的包名使用rpm -e 完整包名进行卸载(也可以用yum remove 完整包名卸载,如:yum remove java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64yum remove java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64),此时再用java -version发现jdk版本是11了,也能正常启动halo了

更高的安全性

以下教程来自官方文档
创建新用户和工作目录(如果你是以root身份运行halo服务那么跳过此步骤,如果想要服务器安全性更高可以按照以下步骤操作):

useradd -m halo  //创建halo用户,-m在创建用户时创建其家目录
usermod -aG wheel halo  //添加sudo权限,关于wheel用户组请自行百度
passwd halo  //设置密码
su halo  //切换到用户halo

创建运行包的目录,这里以~/app为例:

mkdir ~/app && cd ~/app

下载halo的运行包

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

创建工作目录:

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

下载示例配置文件到工作目录(该文件需要放在~/.halo文件夹中):

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

运行halo:

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

我们还可以把后台路径改掉,在配置文件application.yaml中修改即可:

作为服务运行

如果是halo,执行exit退出到root用户
依次执行:

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

修改配置

  • YOUR_JAR_PATH:Halo 运行包的绝对路径,例如 /home/halo/app/halo.jar,注意:此路径不支持 ~ 符号。
  • USER:运行 Halo 的系统用户,如果有按照上方教程创建新的用户来运行 Halo,修改为你创建的用户名称即可。反之请删除 User=USER
[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

重新加载systemd:

systemctl daemon-reload

运行服务:

systemctl start halo

本节最后编辑于2021.12.22,因为之前少写了一步创建工作目录,请见谅

docker搭建halo

注意,如果你只是新安装halo2.8,可以按照以下教程,如果你是要将1.X的halo数据迁移到2.X,那么一定要先看这篇文章:
https://www.cnblogs.com/sillage/p/17602654.html

用宝塔的docker可视化安装

截至23.8.2,halo官方也是更新到了2.8,只支持docker安装方式

此处使用宝塔环境,比较方便
先在宝塔的软件商店里搜索安装【docker管理器】

可参考:https://cloud.tencent.com/developer/article/1774959

打开【docker管理器】,获取镜像,官方镜像填写:halohub/halo

注:
ruibaby/halo:latest 是老仓库,已经不再更新,拉取到的版本是1.4.11
halohub/halo 拉取到的才是最新的

参考配置如下:
image
/tmp:/root/halo-tmp,方便在宿主机终端对备份文件的管理

随后新建网站,纯静态,添加域名,其他都不勾选:
image

最后对网站设置反向代理:
image

docker命令安装

由halo官方提供:

docker run \
  -it -d \
  --name halo \
  -p 8090:8090 \
  -v ~/.halo2:/root/.halo2 \
  halohub/halo:2.8 \
  --halo.external-url=http://localhost:8090/ \
  --halo.security.initializer.superadminusername=admin \
  --halo.security.initializer.superadminpassword=P@88w0rd  

踩坑

其实官方的安装方式写的很详细,甚至docker创建容器时的各个参数的作用都写出来了。
但是有的小伙伴在执行官方的docker拉取命令会报错,如:Unable to find image 'halohub/halo:2.8' locally
这是因为你没有更好docker源,bing搜索一下更换docker源就可以了:

vim /etc/docker/daemon.json

添加:

{
    "registry-mirrors": [
        "https://registry.hub.docker.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}

如果更换了源还是不行,那么很有可能是docker版本问题,比如你是直接yum install docker安装的docker,那么docker版本比较老。
安装docker新版本有一种简单快速的方式,就是通过宝塔安装,在宝塔的软件商城搜索docker,安装3.9.1的稳定版就可以了。

安装好后,可以在宝塔管理docker,也可以在终端用命令管理docker

然后再拉取halo2.8镜像就没有问题

如果你还有问题,你可以添加我的qq联系我。有偿帮助。

参考:
https://github.com/halo-dev/halo/issues/4142
https://github.com/halo-dev/halo/issues/4058
https://github.com/halo-dev/halo/issues/3809

本节最后更新于2023.8.3

halo全站恢复

简单测试

此次实验将阿里云centos7的整站备份传到VMware的centos7中,
解压将.halo文件夹覆盖,启动halo服务,完美移植,爽
实验环境:
centos7
halo版本1.4.8
java环境jdk11

踩坑日志

当使用halo用户运行服务时,是无权使用80端口的,所以修改application.yaml里面为80端口是无效的
可以参考:https://github.com/halo-dev/halo/issues/1268

本节最后编辑于2022-1-25

最后

来看看本人Sakura主题的halo博客效果吧:https://sillage.wang/
有什么问题多看官方文档,写得比较详细,此处就不搬运了:https://docs.halo.run/

posted @ 2021-06-18 21:43  nihinumbra  阅读(856)  评论(0编辑  收藏  举报