当前位置: 首页 > news >正文

从零开始搭建Halo个人博客

前言

老话说得好,好记性不如烂笔头。对于程序员来说,学无止境,需要学习的东西很多,而如果不记录下来可能过不了多久就忘记了,而记录下来这一步也能很好地贯彻费曼学习法。
在这里插入图片描述

其实网上有很多博客平台,但是自己搭一个博客,在自己的平台上分享自己的学习生活,感觉也是一种独有的浪漫,人生在世,总得给世界留点东西哈哈哈。

我为什么重新搭一个博客

之前我也搭建了Hexo+GitHub的静态博客,后面觉得静态博客更新起来太麻烦了,想搞个高级点的动态博客,也能把吃灰的云服务器利用起来。

于是,经过调研了解,选了个人觉得不错的开源博客平台Halo,代码开源,博客简洁强大且社区氛围好,这挺适合个人学习和分享。

Halo部署在自己购买的腾讯云服务器上,在搭载过程中遇到了很多坑,也花了点时间,因此这里记录下来希望能帮到大家。

前期准备

以下条件基于部署在Linux云服务器前提下,其他情况可参考Halo官网。

  1. 云服务器。如果需要建议搞活动期间入手国内云厂商,这样会实惠很多。
  2. 域名(可选)。为了便于访问可以考虑购买一个域名。
  3. Shell客户端连接工具,推荐WindTerm和免费版的Xshell。

环境要求

官方推荐配置如下:

  1. CPU:无特别要求。目前我们的 Docker 镜像 也已经支持多平台。
  2. 内存:为了获得更好的体验,我们建议至少配置 1G 的 RAM。
  3. 磁盘:无特别要求,容量要求不高。
  4. 软件:目前我使用了Docker+宝塔面板安装,容器技术是不错的趋势,顺便学习下。
  5. 数据库: 暂时选择了Halo自带的H2,后续将转成MySQL。

搭建步骤

1. 第一步:安装宝塔面板

为了提高搭建效率,我选择了宝塔面板辅助,宝塔面板是不错的服务器管理软件,可以帮助我们快速搭建网站。
在这里插入图片描述

如上图,安装方式可以参考官网,由于我的是OpenCloud,所以选择了第一个命令:

url=https://download.bt.cn/install/install_lts.sh;if [ -f /usr/bin/curl ];then curl -sSO $url;else wget -O install_lts.sh $url;fi;bash install_lts.sh ed8484bec

运行以上命令后,等待安装完成。安装完成后,会显示宝塔面板的登录信息,包括面板地址、用户名和密码。请务必保存这些信息,以便后续登录使用。

输入命令 bt default 也可查看登录信息。

在这里插入图片描述

完成以上几步后,按照上图信息登录对应网址,正确输入账号密码后就可以跳转到宝塔面板页面了。

如下图,在软件商店中安装以下必备软件。

在这里插入图片描述

2. 第二步:安装Docker

Docker官方安装文档:CentOS安装docker (推荐安装最新官方文档安装)

根据Docker官方文档,以下是在CentOS上安装Docker的步骤:

2.1 卸载旧版本

首先,卸载任何旧版本的Docker:

sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

2.2 设置仓库

安装所需的包:

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2.3 安装Docker引擎

安装最新版本的Docker Engine和containerd:

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

2.4 启动Docker

启动Docker服务:

sudo systemctl start docker

2.5 验证安装

通过运行hello-world镜像验证Docker是否正确安装:

sudo docker run hello-world

如果一切正常,你应该看到一条欢迎消息,表明Docker已成功安装并运行。

在这里插入图片描述

2.6 配置Docker开机自启(可选)

如果你希望Docker在系统启动时自动启动,可以执行以下命令:

sudo systemctl enable docker

按照以上步骤,你应该能够在CentOS系统上成功安装Docker。如果在安装过程中遇到任何问题,请参考Docker官方文档或寻求进一步的帮助。

3. 第三步:Docker镜像安装Halo 2.10

Halo官方安装文档:使用 Docker 部署 | Halo 文档

3.1 配置镜像加速源

为了加快下载速度,建议配置镜像加速源,以下以腾讯云加速源为例:

  • 首先执行以下命令:打开 /etc/docker/daemon.json 配置文件。
vim /etc/docker/daemon.json
  • i 切换至编辑模式,添加以下内容,并保存。
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
  • 执行以下命令,重启 Docker 即可。示例命令以 CentOS 7 为例。
sudo systemctl restart docker
  • 重启 Docker 后,并运行以下命令来查看当前 Docker 的配置。如镜像源配置成功,则输出的内容中会包含下图所示的部分。
sudo docker info

在这里插入图片描述

完成以上步骤后,你的Docker就会使用腾讯云的镜像加速服务,这将显著提高镜像的下载速度。

3.2 拉取Halo镜像

docker pull halohub/halo:2.10

下载速度大幅提升…

在这里插入图片描述

3.3 创建容器

docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.10

使用上述命令运行 Halo 容器。这个命令会将容器的 8090 端口映射到主机的 8090 端口,并将 ~/.halo2 目录挂载到容器内的 /root/.halo2 目录。

4. 第四步:浏览器访问并初始化系统

浏览器输入 http://服务器IP:8090/console进入下图管理页面,首次登录会进入下图初始化页面,可以按照自己喜好进行相关配置即可。

由于Halo默认端口是8090,记得将8090端口设为安全组。

在这里插入图片描述

初始化页面:

在这里插入图片描述

我的博客:

在这里插入图片描述


到这里已经可以通过网址:http://服务器IP:8090 访问我们的博客了。如果想要通过域名访问博客,则需要以下步骤。

5. 第五步:实现域名访问

前提有一个属于自己的域名,如果没有可以在各大云平台购买。另外国内的域名需要备案。

5.1 域名解析

推荐在自己购买的域名商出进行解析,例如我在阿里云购买了域名,所以以阿里云域名解析为例:

进入控制台,搜索云解析DNS并点击进入,【公网DNS解析】→【权威域名解析】→找到要解析的域名,点击添加记录,主机记录和记录类型参考截图以下两行。

在这里插入图片描述

5.2 配置反向代理

首先,借助宝塔面板快速添加我们的站点信息。

在这里插入图片描述

紧接着配置免费的SSL证书。
在这里插入图片描述

在这里插入图片描述

最后配置Nginx反向代理:

在这里插入图片描述

用#注释一部分内容,从而添加新的Nginx配置:

location / {proxy_pass http://127.0.0.1:8090/;       # halo博客-ip访问的端口,我这里是8090rewrite ^/(.*)$ /$1 break;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Upgrade-Insecure-Requests 1;proxy_set_header X-Forwarded-Proto https;
}

到这里已经可以公告域名来访问我们的博客了,例如我的博客:https://aicim.tech。

域名后接 /console 即可进入Halo管理页面。

坚持到这里了,给自己一个大大的点赞!👍👍👍

6. 总结

搭建博客过程中由于不熟悉也经历了一些波折,但是当看到输入网址博客页面出来那一刻还是挺开心的,而且在这过程中也学到了很多东西,开阔了视野,所以大家如果感兴趣或者有需求建议自己动手折腾起来。

另外,博客还是以内容为主,以后会多加分享学习总结等到博客上,后续也会慢慢优化博客,包括脚本同步备份,切换数据库为MySQL,完善博客等等。

在这里插入图片描述

相关文章:

从零开始搭建Halo个人博客

前言 老话说得好,好记性不如烂笔头。对于程序员来说,学无止境,需要学习的东西很多,而如果不记录下来可能过不了多久就忘记了,而记录下来这一步也能很好地贯彻费曼学习法。 其实网上有很多博客平台,但是自…...

AMD显卡低负载看视频掉驱动(chrome edge浏览器) 高负载玩游戏却稳定 解决方法——关闭MPO

2024.11.9更新 开关mpo ulps 感觉有用但是还是掉驱动,现在确定是window顶驱动问题 按网上的改注册表和组策略会让自己也打不上驱动 目前感觉最好的办法就是,重置此电脑,然后你就摆着电脑挂个十分钟半小时别动,一开始他是不显示…...

数据结构——二叉树(续集)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨个人…...

ElasticSearch学习篇16_《检索技术核心20讲》进阶篇之空间检索

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243,文档形式记录笔记。 相关问题: 查询范围固定的需求 直接计算两点之间距离区域二进制编码GeoHash编码 查询范围不固定的需求 GeoHash编码索引结构设计 基于…...

uni-app跨域set-cookie

set-cookie的值是作为一个权限控制的 首先,无论什么接口都会返回一个set-cookie,但未登录时,set-cookie是没有任何权限的 其次,登录接口请求时会修改set-cookie,并且在后续其他接口发起请求时,会在请求头…...

移动应用开发:简易登录页

文章目录 简介一,创建新活动二,设计UI布局三,编写活动代码四,运行应用程序注意 简介 使用Android Studio编写的简单Android 登录应用程序,该应用程序包含一个登录界面,具有账号和密码两个文本框&#xff0…...

C++_ C++11的override和final

文章目录 1. override 关键字2. final 关键字在虚函数上使用 final在类上使用 final 1. override 关键字 用于明确表示派生类中的某个虚函数是用来重写基类中的虚函数的,这样编译器会检查基类,看看是否确实存在同样的虚函数,如果没有匹配&am…...

【MyBatis源码】SQL 语句构建器AbstractSQL

文章目录 介绍org.apache.ibatis.jdbc.SQLSQL类使用示例SelectProvider搭配动态SQLAbstractSQL类源码分析 介绍 当我们需要使用Statement对象执行SQL时,SQL语句会嵌入Java代码中。SQL语句比较复杂时,我们可能会在代码中对SQL语句进行拼接,查…...

C++OJ_二叉树的层序遍历

✨✨ 欢迎大家来到小伞的大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C_OJ 小伞的主页:xiaosan_blog 二叉树的层序遍历 102. 二叉树的层序遍历 - 力扣(LeetCode&#xff0…...

什么是直方图算法

什么是直方图算法? 直方图算法是一种优化决策树分裂点搜索效率的算法,被广泛应用于像 LightGBM 和 XGBoost 这样的梯度提升决策树框架中。其核心思想是通过将连续特征的取值范围离散化为有限的区间(称为 bins),在这些…...

pg_dump -Fc 导出的自定义格式数据库文件 相关操作

实例 将 test.dmp 文件转换为普通SQL内容, 并打印到屏幕 pg_restore -U postgres -Fc -f - test.dump将 test.dmp 文件转换为普通SQL内容, 并输出到 test.sql 文件中 pg_restore -U postgres -Fc -f test.sql -v test.dump备份得到自定义格式的数据库文件(dmp) pg_dump -U…...

Oh My Posh安装

nullSet up your terminalhttps://ohmyposh.dev/docs/installation/windows Git ee oh-my-posh: Windows上的oh-my-zsh,源地址 https://github.com/JanDeDobbeleer/oh-my-posh.git (gitee.com)https://gitee.com/efluent/oh-my-posh...

Node.js——fs模块-文件夹操作

1、借助Node.js的能力,我们可以对文件夹进行创建、读取、删除等操作 2、方法 方法 说明 mkdir/mkdirSync 创建文件夹 readdir/readdirSync 读取文件夹 rmdir/rmdirSync 删除文件夹 3、语法 其余的方法语法类似 本文的分享到此结束,欢迎大家评论区…...

15分钟学 Go 实战项目三 : 实时聊天室(学习WebSocket并发处理)

实时聊天室:学习WebSocket并发处理 目标概述 在本项目中,我们将创建一个实时聊天室,使用Go语言和WebSocket来处理并发消息交流。这将帮助你深入理解WebSocket协议的工作原理以及如何在Go中实现并发处理。 1. 项目需求 功能需求 用户可以…...

架构评估的方法

三种评估方法※ 第一是基于问卷(检查表)的方式,通过问卷调查对系统比较熟悉的相关人员,这种方式主观性很强。 专家问卷评估、用户问卷评估、内部团队问卷评估 第二是基于度量的方式,对系统指标完全量化,基于量化指标评价系统,这种方式需要评估者对系统非常熟悉。 软件质…...

羲和数据集收集器1.0

为了提升问答对的提取能力并完善GUI,我们从以下几个方面进行改进: 增强文本清理和解析能力:确保能够更准确地识别问答对。 支持更多文件格式:除了现有的 .txt, .docx, 和 .pdf,可以考虑支持其他常见格式如 .xlsx 等。 优化GUI设计:提供更友好的用户界面,包括进度条、日…...

ENSP OSPF和BGP引入

路由协议分为:内部网关协议和外部网关协议。内部网关协议用于自治系统内部的路由,包括:RIP和OSPF。外部网关协议用于自治系统之间的路由,包括BGP。内部网关协议和外部网关协议配合来共同完成网络的路由。 BGP:边界网关路由协议(b…...

软件工程 软考

开发大型软件系统适用螺旋模型或者RUP模型 螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的管理信息系统的开发。喷泉模型是一种以用户需求为动力,以对象为为驱动的模型,主要用于描述面向对象的软件开发过程。该模型的各个阶段没有…...

证书学习(六)TSA 时间戳服务器原理 + 7 个免费时间戳服务器地址

目录 一、简介1.1 什么是时间戳服务器1.2 名词扩展1.3 用时间戳标记顺序1.4 7 个免费TSA时间戳服务器地址(亲测可用)1.5 RFC 3161 标准二、时间戳原理2.1 时间戳服务工作流程2.2 验证工作流程2.3 举个例子2.4 时间戳原理总结三、代码实现3.1 curl 命令请求时间戳3.2 java 代码…...

NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL

在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、…...

day52 ResNet18 CBAM

在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...