前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 CentOS 安装 Halo

在 CentOS 安装 Halo

作者头像
kr
发布2022-06-15 17:52:56
7.5K0
发布2022-06-15 17:52:56
举报
文章被收录于专栏:个人教程个人教程

更新

2022-03-28

  • 缓存尽量选择内存别选硬盘,不然升级时容易遇到奇怪的问题,要手动清除硬盘的缓存(路径:~/.halo/.leveldb),本次1.4.17升1.5.0就遇到了问题,重新将缓存类型改为了内存。

简介

  • Halo是一款用Java编写的开源博客系统,在2018年发布的第一个版本,算是比较年轻的博客系统。
  • 开发人员活跃,项目一直保持更新,提issues也能很快得到回复,更重要的是由国人开发,交流无障碍。

准备工作

Java

  • Halo < 1.4.3,JRE > 1.8
  • Halo >= 1.4.3,JRE > 11

MySQL

  1. 版本:5.7 +
  2. 字符集(Character Set):utf8mb4
  3. 排序规则(Collate):utf8mb4_bin
  4. 存储引擎:InnoDB

参考命令

代码语言:javascript
复制
create database halodb character set utf8mb4 collate utf8mb4_bin;

安装

安装 Java

CentOS

代码语言:javascript
复制
sudo yum install java-11-openjdk -y

Ubuntu

代码语言:javascript
复制
sudo apt-get install openjdk-11-jre -y

调整JDK版本(如果仅有一个JDK可跳过)

  • 输入下面的命令后用上下键调整到11版本回车
代码语言:javascript
复制
update-alternatives --config java
  • 查看更改是否成功,如果开头显示openjdk version "11.x.x"即成功
代码语言:javascript
复制
java -version

配置给Halo用的系统用户(可选)

  • 创建一个名为 halo 的用户(名字可以随意)
代码语言:javascript
复制
useradd -m halo
  • 给予 sudo 权限
代码语言:javascript
复制
usermod -aG wheel halo
  • 为 halo 用户创建密码
代码语言:javascript
复制
passwd halo
  • 登录到 halo 账户
代码语言:javascript
复制
su - halo

配置并安装 Halo

  • 创建工作目录(必须放在用户家目录)
代码语言:javascript
复制
mkdir ~/.halo
  • 下载示例配置文件到工作目录
代码语言:javascript
复制
cd ~/.halo
wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml 
  • 用nano编辑配置文件application.yaml ,下面为示例:
代码语言:javascript
复制
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
    # halodb为数据库名
    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    # 用户名和密码
    username: halo
    password: PgY534iK07tGF7jht7

  # 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: level
  • 创建放 halo Jar包的目录
代码语言:javascript
复制
mkdir ~/halo
cd ~/halo
  • 下载 Halo Jar包(这里建议下载后重命名成halo.jar,方便以后更新,不然如果将Halo添加进到服务运行,每次更新后需要改halo.service文件会比较麻烦,当然如果只是用nohup运行就没有这个问题,后面使得 Halo 保持运行那节会说)
代码语言:javascript
复制
wget https://dl.halo.run/release/halo-1.4.17.jar
  • 运行测试
代码语言:javascript
复制
java -jar halo-1.4.17.jar
  • 不出意外可以看到如下显示(带登录网址的INFO)
代码语言:javascript
复制
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!

使得 Halo 保持运行

方法一:使用nohup命令在后台运行
代码语言:javascript
复制
nohup java -jar halo-1.4.17.jar &
方法二:部署成服务
  • 登录root用户
代码语言:javascript
复制
sudo su
  • 下载 Halo 官方的 halo.service 模板
代码语言:javascript
复制
wget https://dl.halo.run/config/halo.service -O /etc/systemd/system/halo.service
  • 用nano修改下载好的模板文件/etc/systemd/system/halo.service,改成如下示例(实际使用时去掉注释):
代码语言:javascript
复制
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=halo  # 这里写运行的用户,例如上面创建的halo用户,如果上面没有创建用户可以把这句删除
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar /home/halo/halo/halo-1.4.17.jar  # 这个是运行命令,/home/halo/halo/halo-1.4.17.jar是刚才下载的Halo的Jar包的绝对路径
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target
  • 重载 systemd
代码语言:javascript
复制
systemctl daemon-reload
  • 运行服务
代码语言:javascript
复制
systemctl start halo
  • 设置自启
代码语言:javascript
复制
systemctl enable halo
  • 查看服务日志检查启动状态
代码语言:javascript
复制
journalctl -n 20 -u halo

完成

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022 年 03 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 更新
  • 简介
  • 准备工作
    • Java
      • MySQL
      • 安装
        • 安装 Java
          • 调整JDK版本(如果仅有一个JDK可跳过)
            • 配置给Halo用的系统用户(可选)
              • 配置并安装 Halo
                • 使得 Halo 保持运行
                  • 方法一:使用nohup命令在后台运行
                  • 方法二:部署成服务
                • 完成
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档