快速搭建
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_64,yum 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搭建
此处使用宝塔环境,比较方便
先在宝塔的软件商店里搜索安装【docker管理器】
可参考:https://cloud.tencent.com/developer/article/1774959
打开【docker管理器】,获取镜像,官方镜像填写:halohub/halo
注:
ruibaby/halo:latest 是老仓库,已经不再更新,拉取到的版本是1.4.11
halohub/halo 拉取到的才是最新的
参考配置如下:/tmp:/root/halo-tmp,方便在宿主机终端对备份文件的管理
随后新建网站,纯静态,添加域名,其他都不勾选:
最后对网站设置反向代理:
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/