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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 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,这样大家就都可以通过我们的域名访问我们的博客!

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
257 18
|
2月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
320 17
|
6月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
2437 42
|
6月前
|
物联网
如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
548 37
|
7月前
|
存储 人工智能 项目管理
2025年GitHub平台上的十大开源MCP服务器汇总分析
本文深入解析了GitHub上十个代表性MCP(Model Context Protocol)服务器项目,探讨其在连接AI与现实世界中的关键作用。这些服务器实现了AI模型与应用程序、数据库、云存储、项目管理等工具的无缝交互,扩展了AI的应用边界。文中涵盖Airbnb、Supabase、AWS-S3、Kubernetes等领域的MCP实现方案,展示了AI在旅行规划、数据处理、云存储、容器编排等场景中的深度应用。未来,MCP技术将向标准化、安全性及行业定制化方向发展,为AI系统集成提供更强大的支持。
1667 2
2025年GitHub平台上的十大开源MCP服务器汇总分析
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
330 5
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
347 6
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
365 2
|
Cloud Native Java 编译器
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
随着云计算技术的不断发展,云服务商们不断推出高性能、高可用的云服务器实例,以满足企业日益增长的计算需求。阿里云推出的倚天实例,凭借其基于ARM架构的倚天710处理器,提供了卓越的计算能力和能效比,特别适用于云原生、高性能计算等场景。然而,有的用户需要将传统基于x86平台的应用迁移到倚天实例上,本文将介绍如何将基于x86架构平台的应用迁移到阿里云倚天实例的服务器上,帮助开发者和企业用户顺利完成迁移工作,享受更高效、更经济的云服务。
298 13
将基于x86架构平台的应用迁移到阿里云倚天实例云服务器参考
|
域名解析 弹性计算 程序员
想要轻松地搭建一个即开即用的WordPress博客吗?借助宝塔面板镜像+阿里云ECS,迅速拥有自己的个人博客
拥有个人博客是每位程序员的梦想,但对服务器不熟悉的初学者而言,搭建博客颇具挑战。本文介绍利用阿里云市场的宝塔面板镜像与ECS云服务器,轻松搭建WordPress博客的方法,让您快速拥有专属博客空间。通过简单的操作步骤,即使是新手也能轻松上手,实现从零到有的博客搭建过程。
680 3

热门文章

最新文章