侧边栏壁纸
博主头像
千异博主等级

学无止境,学以致用,志存高远!

  • 累计撰写 28 篇文章
  • 累计创建 26 个标签
  • 累计收到 0 条评论

docker部署halo

千异
2022-04-22 / 0 评论 / 0 点赞 / 3,690 阅读 / 3,310 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-04-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

创建 工作目录

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运行时,作为服务运行:

  1. 下载官方模板
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
  1. 修改 halo.service
vim /etc/systemd/system/halo.service
  1. 修改配置
    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
  1. 运行服务
systemctl start halo
  1. 在系统启动时启动服务
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 #每次更新只需要修改下载的版本号即可
0
博主关闭了所有页面的评论