创建 工作目录
mkdir ~/.halo && cd ~/.halo
下载示例配置文件到 工作目录,Halo 的配置文件名为 application.yaml,其必须位于工作目录 ~/.halo 下。 Halo 会读取该目录下的配置文件进行加载。
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考
vim application.yaml
官方模板配置如下:application-template.yaml
server:
port: 8090
# Response data gzip.
compression:
enabled: false
spring:
datasource:
# H2 database configuration.
driver-class-name: org.h2.Driver
url: jdbc:h2:file:~/.halo/db/halo
username: admin
password: 123456
# H2 database console configuration.
h2:
console:
settings:
web-allow-others: false
path: /h2-console
enabled: false
halo:
# Your admin client path is https://your-domain/{admin-path}
admin-path: admin
# memory or level
cache: memory
注意,H2 无需手动创建数据库,MySQL 需要。
create database halodb character set utf8mb4 collate utf8mb4_bin;
修改后的配置文件如下:
server:
port: 8090
# Response data gzip.
compression:
enabled: false
spring:
datasource:
# H2 database configuration.
# driver-class-name: org.h2.Driver
# url: jdbc:h2:file:~/.halo/db/halo
# username: admin
# password: 123456
# MySQL database configuration.
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: suixin
# H2 database console configuration.
# h2:
# console:
# settings:
# web-allow-others: false
# path: /h2-console
# enabled: false
halo:
# Your admin client path is https://your-domain/{admin-path}
admin-path: admin
# memory or level
cache: memory
拉取最新的 Halo 镜像
docker pull halohub/halo
INFO
查看最新版本镜像:https://hub.docker.com/r/halohub/halo ,我们推荐使用具体版本号的镜像,但也提供了 latest 标签的镜像,它始终是最新的。
创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo
INFO
注意:此命令默认使用自带的 H2 Database 数据库。如需使用 MySQL,请参考:使用 Docker 部署 Halo 和 MySQL
-it: 开启输入功能并连接伪终端
-d: 后台运行容器
--name: 为容器指定一个名称
-p: 端口映射,格式为 主机(宿主)端口:容器端口 ,可在 application.yaml 配置。
-v: 工作目录映射。形式为:-v 宿主机路径:/root/.halo,后者不能修改。
--restart: 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。
打开 http://ip:端口号 即可看到安装引导界面。
TIP
如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。如果通过 http://ip:端口号 的形式无法访问,请到服务器厂商后台将运行的端口号添加到安全组,如果服务器使用了 Linux 面板,请检查此 Linux 面板是否有还有安全组配置,需要同样将端口号添加到安全组。
不使用docker运行时,作为服务运行:
- 下载官方模板
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
- 修改 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
User=suixin
#ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/suixin/app/halo.jar
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog
StandError=inherit
[Install]
WantedBy=multi-user.target
TIP
请确保 /usr/bin/java 是正确无误的。建议将 ExecStart 中的命令复制出来运行一下,保证命令有效。
4. 重新加载 systemd
systemctl daemon-reload
- 运行服务
systemctl start halo
- 在系统启动时启动服务
systemctl enable halo
您可以查看服务日志检查启动状态
journalctl -n 20 -u halo
备份脚本
#!/bin/bash
service halo stop
nowTime=`date -d today +%Y%m%d_%H%M%S`
cp -r ~/.halo ~/.halo$nowTime.archive && mv ~/app/halo.jar ~/app/halo$nowTime.jar.archive && rm -rf ~/.halo/.leveldb #备份之前的文件和数据
cd ~/app && wget https://dl.halo.run/release/halo-1.5.1.jar -O halo.jar && service halo start #每次更新只需要修改下载的版本号即可