基于ECS使用Halo实现博客平台

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 基于ECS使用Halo实现博客平台,快速的搭建一个可用的动态博客平台

基于ECS使用Halo实现博客平台

官方介绍

Halo [ˈheɪloʊ]
好用又强大的开源建站工具。

Halo是一个动态开源博客框架,后端基于Spring Boot,数据库使用嵌入式数据库R2DBC(基于需求在1.x版本可以扩展MySQL,在2.0版本可以使用PostgreSQL),前端使用Tymeleaf引擎。除此之外使用webflux reactive响应式编程的方案,Apache Lucene作为搜索库...很多独特的技术来搭建框架。

简介

Halo作为一个博客框架,能具有很好的开箱即用的便捷性,而且具有丰富的管理和扩展能力,一定数量的Theme扩展(1.x版本的扩展丰富一些,2.0的扩展较少),有诸如评论,App端...的周边生态,并且作为动态博客框架,能方便博客撰写者在线编辑预览效果。Halo也在不断更新,在如今2022.12月最新更新的2.0.0的release,社区活跃,能够帮助解决我们很多问题。所以如今我们使用Halo在阿里云ECS服务器上完成一次完成的Halo博客平台的搭建,包含下面的内容:

前置提醒

本次选择的Halo版本为1.6,并没有选择最新的2.0,2.0本身架构上与1.x并不兼容,并且1.x已经不再积极更新和维护,如果升级2.0则需要完全重新部署,但是1.x系列有着更好的主题库(官方提供),2.0不能兼容一些官方主题仓库的主题,所以最后选择了1.6,==请根据需要选择==文档

本次使用的操作系统为Alibaba Cloud Linux 3.2104 LTS 64位,使用rpm进行包管理,配置2核2G 40G云盘(Halo的硬件需求不高,只要求1G上的RAM即可)

公网使用

打开云服务器对应控制台,选择安全组>进入当前服务器的安全组>配置规则>
手动添加8090端口(这是halo默认的端口号)的入规则:
image.png


Docker部署

安装

参照官网的Docker Engine安装教程
这里我们选择Docker Server下的Centos版本(和Alibaba Cloud Linux兼容)
image.png
需要其他版本的可以自己在官网查看,我们会到达这个界面
因为是新的服务器,我们直接按照教程安装:(PS:为了速度更快可以选择阿里官方的方案,下面会列出)
建立储存库

sudo yum install -y yum-utils # yum工具集
sudo yum-config-manager \ # yum配置docker官方源
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装Docker最新版本配套工具集

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin #

启动Docker

sudo systemctl start docker

验证Docker是否成功运行

sudo docker run hello-world # 启动hello-world的容器服务,出现Hello from Docker!的系列文字即为成功

==注意:== 尽量安装最新的Docker,如果已经安装了旧版的Docker,可以使用官方的升级方案:重复安装步骤,但是用yum -y upgrade替代 yum -y install即可
升级的原因是因为不升级Docker版本低,启用Java会报错。
阿里云Docker安装方案:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

sudo yum makecache fast

sudo yum -y install docker-ce

sudo service docker start

具体信息参看阿里云文档

镜像安装部署

  1. 创建 工作目录
    mkdir ~/.halo && cd ~/.halo # 自己随意选择目录来存放halo产生的文件
    
  2. 下载示例配置文件到 工作目录

    wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
    
  3. 编辑配置文件,配置数据库或者端口等,如需配置请参考配置参考,这里我们沿用默认配置

    vim application.yaml
    
  4. 拉取最新的 Halo 镜像

    docker pull halohub/halo:1.6.0 # 这里记得用1.6版本镜像,最新的可能是2.0
    
  5. 创建容器,使用docker容器的8090端口映射到宿主机8090,这个端口自己选择;restart官方 建议设置为 unless-stopped,在 Docker 启动的时候自动启动 Halo 容器。

    docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.6.0
    

    创建成功后我们可以在浏览器中访问啦,访问http://公网ip:8090/

    image.png
    ==!!!管理端为http://公网ip:8090/admin,这是对于1.x版本而言,对于2.0版本管理端为http://公网ip:8090/console==
    image.png
    我们可以在这里进行后端的管理

命令行部署

  1. java环境安装
    halo使用的java为11,安装openjdk11即可:
    ```bash
    sudo yum install java-11-openjdk -y

java --version # 检查安装结果

这里我们图省事没有按照官方非root的安装办法:

2. 创建存放 运行包 的目录,这里以 ~/app 为例
``` bash
mkdir ~/app && cd ~/app
  1. 下载运行包

    wget https://dl.halo.run/release/halo-1.6.0.jar -O halo.jar
    

    如果下载速度不理想,可以尝试
    wget https://github.com/halo-dev/halo/releases/download/v1.6.0/halo-1.6.0.jar -O halo.jarwget https://halo.cary.tech/release/halo-1.6.0.jar -O halo.jar

  2. 创建工作目录

    mkdir ~/.halo && cd ~/.halo
    
  3. 下载示例配置文件到工作目录

    wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
    
  4. 编辑配置文件,配置数据库或者端口等,如需配置请参考 配置参考

    vim application.yaml
    

    这是我的配置文件:
    ```json
    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: 123321

可配置的MySQL数据源

# 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: 123456

H2数据库配置

h2:
console:
settings:
web-allow-others: false # 允许数据库web访问
path: /h2-console # h2数据库管理页面
enabled: false

halo:

Your admin client path is https://your-domain/{admin-path}

admin-path: admin # 管理界面路径!!区别于2.0

缓存

cache: memory

7. 测试运行 Halo
``` bash
cd ~/app && java -jar halo.jar

如看到类似以下日志输出,则代表启动成功。

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!

在这一个流程配置下来,达到了和之前docker一样的部署效果,但是不同于docker的是这个服务不会自动启动,自动启动可以使用service版本进行安装,参考官网作为服务运行
效果展示见上

主题更换

在主题界面选择安装:
image.png
我们需要甄别1.6.0版本可用的,我们选择任意,进入它的github界面,复制它的git地址,例如我下面的这个:
https://github.com/PedroNull/halo-theme-hingle.git
或者release中的zip地址:
https://github.com/Pedro-null/halo-theme-hingle/archive/refs/tags/v1.0.0.zip
==注:有些下载的可能很慢,我们可以在gitee上搜索有无对应源==
也可以自己下载然后拖动zip包到框中即可完整主题安装。
image.png

安装成功后就可以随意更换自己喜欢的主题啦!!

域名解析

这里可以使用aliyun的域名服务我们的ip,这样大家就都可以通过我们的域名访问我们的博客!

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
113 5
|
2月前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
61 6
|
2月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
33 2
|
4月前
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
110 13
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
3月前
|
固态存储 开发者
阿里云服务器选购之国际版和国内版的平台对比及建议
阿里云服务器选购之国际版和国内版的平台对比及建议
|
8月前
|
弹性计算 安全 定位技术
幻兽帕鲁服务器搭建攻略:【阿里云平台快速上手指南】
2024年,火爆畅销的《幻兽帕鲁》游戏让无数玩家着迷不已!那么,您是否急切想要拥有一个能与伙伴们一起畅快玩耍的游戏服务器呢?现在就跟随若城的脚步,一起动手搭建一个属于自己的《幻兽帕鲁》服务器吧!让这个新年有心意
132 4
|
8月前
|
弹性计算 Linux 数据安全/隐私保护
幻兽帕鲁服务器搭建攻略:阿里云平台快速上手指南
2024年,火爆畅销的《幻兽帕鲁》游戏让无数玩家着迷不已!那么,您是否急切想要拥有一个能与伙伴们一起畅快玩耍的游戏服务器呢?现在就跟随若城的脚步,一起动手搭建一个属于自己的《幻兽帕鲁》服务器吧!让这个新年有心意, 让这个寒假更有趣
75182 10
|
6月前
|
弹性计算 运维 监控
可观测性体系问题之实现告警的自愈如何解决
可观测性体系问题之实现告警的自愈如何解决
53 1
|
7月前
|
机器学习/深度学习 人工智能 数据处理
人工智能平台PAI产品使用合集之PAI-DSW实例服务器ping不通google.com,该如何排查
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
6月前
|
机器学习/深度学习 SQL 人工智能
人工智能平台PAI使用问题之如何在阿里云服务器上搭建自己的人工智能
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。