项目简介

Halo 是一个优秀的开源博客发布应用,在 GitHub 上广受好评,正好最近在练习写博客,借此记录一下学习 Halo 的过程。

项目下载

从 GitHub 上拉取项目源码,Halo 从 1.4.3 开始,最低支持的 JRE 版本为 11,本人下载的是 1.4.13 版本。

前提设置

导入项目

因为 Halo 使用 Gradle 构建,所以在 idea 中导入 Gradle 项目,与 Maven 不同,Gradle 项目的依赖在 build.gradle 中添加。

Halo 中主要使用了如下依赖:

  • Spring Boot:一个用来简化 Spring 的搭建和开发过程的全新框架;
  • Spring Data JPA:持久层框架;
  • Spring Web:构建 Web 应用;
  • Undertow:高性能 Web 容器;
  • Freemarker:模板引擎;
  • H2 Database:嵌入式数据库,无需安装;
  • MySQL:关系型数据库;
  • Lombok:Java 高效开发工具;
  • Swagger:生成接口文档;
  • Hutool:开源 Java 工具类;
  • 七牛云:云存储服务器;
  • 阿里云 OSS:提供海量、安全、低成本、高可靠的云存储服务;
  • Flexmark:将 Markdown 转化为 HTML。

ieda 设置

Halo 使用的是 JDK 11,所以需要将 idea 中的 JDK 版本设置成 JDK 11。依次点击 File -> Project Structure -> Project SDK 设置 JDK。

Gradle 也需要设置为 JDK 11,依次点击 File -> Settings -> 搜索 Gradle 设置 JDK。

启动项目

注意事项

项目启动前请做好如下准备:

  1. 确保 JDK 的版本符合要求,本文使用 JDK 11;
  2. 确保所有的依赖都正常导入(本次实践未发生异常);
  3. 确保 resources/templates/themes 目录不为空,正常情况下应该有 anatole 文件夹。为空是因为使用 Git 克隆时没有克隆子模块,可以在 Halo 官网的主题仓库下载 Anatole 主题,解压后重命名为 anatole,并复制到 themes 目录下;
  4. Halo 默认使用 H2 Database,该数据库无需安装,因此可以直接启动项目。如果希望使用 MySQL,则需要在 application.yaml 文件中注释掉 H2 Database 的配置,并添加 MySQL 的相关配置(数据库名为 'halodb'):
# MySQL 配置
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: 123456

运行项目

点击运行,项目正常启动,控制台打印了如下信息:

上述信息提示我们访问 127.0.0.1:8090,首次访问该页面时,页面会重定向到初始化页面,用户需要设置博主、博客的相关信息,如用户名、密码等。

信息填写完毕后,点击安装,之后页面会跳转到登录页面,此时用户可以使用之前设置的账号和密码进行登录。登录成功后进入 'Halo Dashboard' 页面,且系统会自动创建一篇文章 'Hello Halo!'。'Halo Dashboard' 页面是博客的后台管理页面,供管理员使用,访问 127.0.0.1:8090/admin 时就会进入该页面(需登录)。

博客的主页可访问 127.0.0.1:8090,在该页面可看到博主发表的所有文章。

至此,Halo 项目在 idea 上启动成功!

Halo 开源项目学习(一):项目启动的更多相关文章

  1. Spring Boot 项目学习 (一) 项目搭建

    0 引言 本文主要记录借用Idea 开发环境下,搭建 Spring Boot 项目框架的过程. 1 系列文档目录 Spring Boot 项目学习 (一) 项目搭建 Spring Boot 项目学习 ...

  2. Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档

    0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...

  3. Spring Boot 项目学习 (三) Spring Boot + Redis 搭建

    0 引言 本文主要介绍 Spring Boot 中 Redis 的配置和基本使用. 1 配置 Redis 1. 修改pom.xml,添加Redis依赖 <!-- Spring Boot Redi ...

  4. Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置

    0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...

  5. Halo 开源项目学习(七):缓存机制

    基本介绍 我们知道,频繁操作数据库会降低服务器的系统性能,因此通常需要将频繁访问.更新的数据存入到缓存.Halo 项目也引入了缓存机制,且设置了多种实现方式,如自定义缓存.Redis.LevelDB ...

  6. 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

    20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...

  7. GitHub 上 57 款最流行的开源深度学习项目

    转载:https://www.oschina.net/news/79500/57-most-popular-deep-learning-project-at-github GitHub 上 57 款最 ...

  8. 转:从开源项目学习 C 语言基本的编码规则

    从开源项目学习 C 语言基本的编码规则 每个项目都有自己的风格指南:一组有关怎样为那个项目编码约定.一些经理选择基本的编码规则,另一些经理则更偏好非常高级的规则,对许多项目而言则没有特定的编码规则,项 ...

  9. android开源项目学习

    FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 项目地址:ht ...

随机推荐

  1. Arduino UNO开发板、Arduino CNC Shield V3.0扩展板、A4988驱动板、grbl固件使用教程

    前言 CNC Shield V3.0可用作雕刻机,3D打印机等的驱动扩展板,板上一共有4路步进电机驱动模块的插槽,可驱动4路不进电机,而每一路步进电机都只需要2个IO口,也就是说,6个IO口就可以很好 ...

  2. java面向对象思想之继承

    一.什么是继承 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为.可以联系生活进行理解,相当于父亲和儿子的关系.父亲有的属 ...

  3. 【Spring AOP】暴力打通两个切面之间的通信

    场景描述 在秒杀微服务中,笔者在需要各种校验前端传来的参数后,通过 Redis 加锁限流(切面A)并返回,最后封装订单数据推送到 RabbitMQ 消息队列(切面B)做善后工作. 问题:如何将 切面 ...

  4. 为什么要用 Dubbo?

    随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越 复杂,诞生了面向服务的架构体系(SOA), 也因此衍生出了一系列相应的技术,如对服务提供.服务调用.连接处理.通信 协议.序列化 ...

  5. Vue-Router在当前UR不刷新的Debug调试

    如果使用vue-router在当前页面刷新,则会中断此操作,没有反应,错误信息是: Error: Avoided redundant navigation to current location: & ...

  6. NULL 是什么意思 ?

    NULL 这个值表示 UNKNOWN(未知):它不表示""(空字符串).对 NULL 这 个值的任何比较都会生产一个 NULL 值.您不能把任何值与一个 NULL 值进行比 较,并 ...

  7. simulink仿真过程

    Simulink求解器 Simulink仿真过程 Simulink 模型的执行分几个阶段进行.首先进行的是初始化阶段,在此阶段,Simulink 将库块合并到模型中来,确定传送宽度.数据类型和采样时间 ...

  8. JavaScript遍历表单元素

    运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  9. box-shadow 阴影的高级用法,多个阴影叠加

    box-shadow的这些用法你知道吗? $shadowH: ''; @for $i from 1 through 12 { $shadowH: #{$shadowH}, 0 ($i * 30px) ...

  10. 解决PHP下载大文件失败,并限制下载速度

    1.问题: PHP在使用readfile函数定义下载文件时候,文件不可以过大,否则会下载失败,文件损坏且不报错: 2.原因: 这个是因为readfile读取文件的时候会把文件放入缓存,导致内存溢出: ...