【实操】基于 GitHub Pages + Hexo 搭建个人博客

《开发工具系列》

请添加图片描述

【实操】基于 GitHub Pages + Hexo 搭建个人博客

  • 一、引言
  • 二、接入 Node.js
    • 2.1 下载并安装 Node.js
    • 2.2 环境变量配置
  • 三、接入 Git
    • 3.1 下载并安装 Git
    • 3.2 环境变量配置
  • 四、接入 Hexo
    • 4.1 安装 Hexo
    • 4.2 建站
    • 4.3 本地启动服务器
  • 五、接入 GitHub Pages
    • 5.1 初识 GitHub Pages
    • 5.2 在 GitHub Pages 上部署 Hexo
  • 六、总结
  • 七、参考

一、引言

相信很多学习技术的读者朋友们,都梦想能创建一个属于自己的个人博客。现在,这将不是梦想,下面跟着 Huazie 一起利用 GitHub Pages + Hexo 搭建一个属于自己的个人博客吧。

二、接入 Node.js

2.1 下载并安装 Node.js

Node.js 官方下载地址

注意:Hexo 官方建议使用 Node.js 12.0 及以上版本

笔者本地下载的是 20.11.0 LTS,这对大多数用户来说已经足够了

在这里插入图片描述

笔者的 Windows 系统,下载完了是如下的 msi 安装包【其他系统自行去官网下载即可】:
在这里插入图片描述
这里直接双击安装即可,安装完了就可以去配置相关的环境变量了。

2.2 环境变量配置

现在,Huazie 以 windows 11 系统为例,介绍下配置环境变量,如下:

右击 Window 图标,打开下图并选择 系统:

在这里插入图片描述

点击 高级系统设置,打开系统属性页面,点击 环境变量 :

在这里插入图片描述

找到 Path 系统环境变量,配置上面你的 Node.js 的安装目录进去:

在这里插入图片描述

环境变量配置好之后,我们就可以通过 CMD 命令行,检查:

  • npm -v :查看当前安装的 npm 的版本号
    在这里插入图片描述
  • node -v : 查看当前安装的 Node.js 的版本号
    在这里插入图片描述

三、接入 Git

3.1 下载并安装 Git

Windows 下载地址,其他可参考 【Hexo 官方文档里的安装 Git】

笔者本地下载的版本如下【大家从上述地址下载的版本比我本地的高些】:
在这里插入图片描述

这里也是一样直接双击安装即可,安装完了就可以去配置相关的环境变量了。

3.2 环境变量配置

我们先来看看 Git 的安装目录:

在这里插入图片描述
在上述的 bin 和 cmd 目录,我们都可以看到 git.exe,按需配置,我本地环境配置的是 cmd 目录。

参考上面 Node.js 环境变量配置,配置好之后,我们就可以在命令行输入如下命令查看:

在这里插入图片描述

四、接入 Hexo

4.1 安装 Hexo

接入 Node.js 和 Git 之后,我们就可以使用 npm 安装 Hexo。

npm install -g hexo-cli

在这里插入图片描述

上述安装成功后,提示我 npm 有新的小版本更新,于是我进行了更新:

在这里插入图片描述

  • npm install -g npm :更新到最新版本
  • npm install -g npm@<version> :更新到特定的版本

这时我再查看当前安装的 npm 的版本号:

在这里插入图片描述

注意:上述更新不强制,大家按需更新即可

当然,对于熟悉 npm 的进阶用户,可以仅局部安装 hexo 包。

npm install hexo

安装 Hexo 以后,可以使用以下两种方式执行 Hexo:

  • npx hexo <command>

  • Linux 用户可以将 Hexo 所在的目录下的 node_modules 添加到环境变量之中即可直接使用 hexo <command>:

    echo 'PATH="$PATH:./node_modules/.bin"' >> ~/.profile
    

4.2 建站

# 没有设置 folder 参数,Hexo 默认在当前文件夹下创建网站
hexo init <folder>

我们需要选个本地文件夹,然后输入上述命令,用于在指定文件夹下初始化一个本地网站。

下图即为 Huazie 本地在 E:\fleaworkspace\blog 目录开始初始化一个博客网站:
在这里插入图片描述

因为要从 GitHub 克隆项目,这一步可能需要花点事件,请慢慢等待,不要关闭窗口

等待一会,如果如下图显示,就表示 hexo 初始化网站成功了。

在这里插入图片描述

接着我们切换到上述初始化的网站目录,当然如果按笔者上述操作,当前目录就是我们的网站根目录。

接着我们输入 npm install 命令,用来下载我们网站必要的依赖包。

在这里插入图片描述

npm install 命令的作用包括:

  1. 从 npm 注册表下载包:npm install 会从 npm 注册表(一个在线仓库)中查找并下载指定的包。你可以指定包的名称和版本号,以获取正确的包版本。
  2. 解析依赖:npm install 会解析项目中的 package.json 文件,读取其中的 dependencies 和 devDependencies 字段,确定需要安装的依赖项及其版本。它会下载并安装所有必要的依赖项,以确保项目的正常运行。
  3. 安装本地缓存:npm install 会将下载的包和依赖项安装到项目的本地缓存中,这样其他开发者也可以共享相同的依赖项版本,确保项目的可移植性和一致性。
  4. 生成 node_modules 目录:在安装完成后,npm install 会生成一个 node_modules 目录,其中包含所有安装的包和依赖项

上述操作完成之后,可以查看我们初始化的网站目录,如下所示:

在这里插入图片描述
有关上述文件,我们这里简单介绍下:

  • _config.yml :网站的配置信息。
  • package.json :应用程序的信息。
  • scaffolds :模版文件夹。当您新建文章时,Hexo 会根据 scaffold 来创建文件。Hexo 的模板是指在新建的文章文件中默认填充的内容。例如,如果您修改 scaffold/post.md 中的 Front-matter 内容,那么每次新建一篇文章时都会包含这个修改。
  • source :资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
  • themes :主题文件夹。Hexo 会根据主题来生成静态页面。

4.3 本地启动服务器

我们可以在本地启动服务器。如下所示:
在这里插入图片描述

执行完之后,不要关闭命令窗口,直接在浏览器打开 http://localhost:4000/,如下图所示:

在这里插入图片描述

当然还有很多其他的命令,感兴趣的小伙伴,请查看 官方指令文档。

五、接入 GitHub Pages

5.1 初识 GitHub Pages

GitHub Pages 是一项静态站点托管服务,它直接从 GitHub 上的仓库获取 HTML、CSS 和 JavaScript 文件,(可选)通过构建过程运行文件,然后发布网站。 可以在 GitHub Pages 示例集合 中看到 GitHub Pages 站点的示例。

你可以在 GitHub 的 github.io 域或自己的自定义域上托管站点。 有关详细信息,请参阅“配置 GitHub Pages 站点的自定义域”。

GitHub Pages 站点的类型,有三种:

  • 项目 :项目站点连接到 GitHub 上托管的特定项目,例如 JavaScript 库或配方集合
  • 用户 :用户站点连接到 github.com 上的特定帐户。若要发布用户站点,必须创建名为 <username>.github.io 的个人帐户拥有的存储库。
  • 组织 :组织站点连接到 github.com 上的特定帐户。若要发布组织站点,必须创建名为 <organization>.github.io 的组织帐户拥有的存储库。

除非使用的是自定义域,否则用户和组织站点在 http(s)://<username>.github.io 或 http(s)://<organization>.github.io 中可用。

GitHub Pages 使用限制:
2016 年 6 月 15 日后创建并使用 github.io 域的 GitHub Pages 站点通过 HTTPS 提供服务。 如果您在 2016 年 6 月 15 日之前创建站点,您可以为站点的流量启用 HTTPS 支持。 有关详细信息,请参阅“使用 HTTPS 保护 GitHub Pages 站点”。

可以在将更改推送到特定分支时发布站点,也可以编写 GitHub Actions 工作流来发布站点。对于在 GitHub Pages 上部署 Hexo,请查看 《官方文档》,它就是使用 GitHub Actions 部署至 GitHub Pages。

5.2 在 GitHub Pages 上部署 Hexo

下面 Huazie 来简单总结下:

  1. 在你的 GitHub 上建立名为 <你的 GitHub 用户名>.github.io 的仓库。这里参考 《GitHub Pages 快速入门》 即可。

  2. 使用 GitHub 客户端 克隆上述新建的仓库,并将 4.2 中初始化的目录内容 全部复制到新克隆的仓库中,或者 像官方那样自己推送到远端【参考《在 GitHub Pages 上部署 Hexo》】。

  3. 在上面新克隆的仓库目录下,新建立 .github/workflows/pages.yml 【目录如果没有自己新建即可】
    在这里插入图片描述
    pages.yml 中填入以下内容 (注意下面的 Node.js 的版本,我这里是 20,大家以自己本地安装的版本为准):

    name: Pageson:push:branches:- main # default branchjobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3with:token: ${{ secrets.GITHUB_TOKEN }}# If your repository depends on submodule, please see: https://github.com/actions/checkoutsubmodules: recursive- name: Use Node.js 20.xuses: actions/setup-node@v2with:node-version: '20'- name: Cache NPM dependenciesuses: actions/cache@v2with:path: node_moduleskey: ${{ runner.OS }}-npm-cacherestore-keys: |${{ runner.OS }}-npm-cache- name: Install Dependenciesrun: npm install- name: Buildrun: npm run build- name: Upload Pages artifactuses: actions/upload-pages-artifact@v2with:path: ./publicdeploy:needs: buildpermissions:pages: writeid-token: writeenvironment:name: github-pagesurl: ${{ steps.deployment.outputs.page_url }}runs-on: ubuntu-lateststeps:- name: Deploy to GitHub Pagesid: deploymentuses: actions/deploy-pages@v2
    
  4. 使用 GitHub 客户端将上述仓库新增的文件推送到远端。
    在这里插入图片描述

  5. 前往 GitHub 仓库,按下图顺序 Settings > Pages > Source ,并将 Source 改为 GitHub Actions。
    在这里插入图片描述

  6. 接着等待 GitHub 自动部署,然后就可以通过 https://你的GitHub用户名.github.io/ 访问了
    在这里插入图片描述

六、总结

本篇 Huazie 带大家利用 GitHub Pages + Hexo 搭建了能访问的个人博客。一步步实操下来,相信大家都能见到实际的效果。当然要想做好个人博客,可不止这么一点点,Huazie 这里也只是抛砖引玉,后续的深入使用,需要发挥各位的主观能动性了。

七、参考

  1. 《Hexo 官方文档》
  2. 《GitHub Actions 文档》
  3. 《GitHub Pages 快速入门》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/637429.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java--类继承

文章目录 主要内容一.学生类1.源代码代码如下&#xff08;示例&#xff09;: 2.结果 二.交通工具类1.源代码代码如下&#xff08;示例&#xff09;: 2.结果 三.圆类1.源代码代码如下&#xff08;示例&#xff09;: 2.结果 总结 主要内容 学生类交通工具类圆类 一.学生类 具有…

C 练习实例33 - 质数(素数)判断

题目&#xff1a;判断一个数字是否为质数。 程序分析&#xff1a;质数&#xff08;prime number&#xff09;又称素数&#xff0c;有无限个。一个大于1的自然数&#xff0c;除了1和它本身外&#xff0c;不能被其他自然数整除。 这题做过很多遍了&#xff0c;懂得都懂。 代码…

Raft算法详解(一):介绍

简单介绍 Raft是一种一致性算法&#xff0c;它包含了几个部分分别是领导者选举、日志复制、日志压缩和安全性。 角色 在Raft算法执行时存在着三种角色&#xff0c;分别是领导者&#xff08;Leader&#xff09;、追随者&#xff08;Follower&#xff09;以及竞选者&#xff0…

ChatGLM vs ChatGPT

所有的NLP大模型 都是transformer结构 1.Mask attention 的策略不同 2.训练任务目标不同 国内大模型nb公司&#xff1a;百度、清华智谱 一、主流大模型 粉色&#xff1a;Encoder-only。 绿色&#xff1a;Encoder-Decoder&#xff0c;尽头智谱ChatGLM。 蓝色&#xff1a;…

【MongoDB】下载安装、指令操作

目录 1.下载安装 2.指令 2.1.基础操作指令 2.2.增加 2.3.查询 2.4.修改 2.5.删除 前言&#xff1a; 关于MongoDB的核心概念请移步&#xff1a; 【文档数据库】ES和MongoDB的对比-CSDN博客 1.下载安装 本文以安装Windows版本的mongodb为例&#xff0c;Linux版本的其实…

三、arcgispro二次开发创建第一个工程

忙了几天&#xff0c;总算可以创建第一工程了。 步骤一&#xff1a; 步骤二&#xff1a; 工具介绍&#xff1a; 项目创建成功&#xff1a;项目目录在解决方案资源管理器中&#xff0c;整个工具都是动态可调整的&#xff0c;如下图&#xff1a; 想把窗口放哪里就把鼠标移到红…

Linux重定向:深入理解与实践

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;晴る—ヨルシカ 0:20━━━━━━️&#x1f49f;──────── 4:30 &#x1f504; ◀️ ⏸ ▶️ ☰ &…

DFA有穷自动机敏感词过滤算法

1.EndType package com.example.utils.wordfilter;/*** 结束类型定义*/ public enum EndType {/*** 有下一个,结束*/HAS_NEXT, IS_END } 2.WordType package com.example.utils.wordfilter;/*** 词汇类型*/ public enum WordType {/*** 黑名单/白名单*/BLACK, WHITE } 3.F…

RHEL - 更新升级软件或系统

《OpenShift / RHEL / DevSecOps 汇总目录》 文章目录 小版本软件更新yum update 和 yum upgrade 的区别升级软件和升级系统检查软件包是否可升级指定升级软件使用的发行版本方法1方法2方法3方法4 查看软件升级类型更新升级指定的 RHSA/RHBA/RHEA更新升级指定的 CVE更新升级指定…

L1-069 胎压监测(Java)

小轿车中有一个系统随时监测四个车轮的胎压&#xff0c;如果四轮胎压不是很平衡&#xff0c;则可能对行车造成严重的影响。 让我们把四个车轮 —— 左前轮、右前轮、右后轮、左后轮 —— 顺次编号为 1、2、3、4。本题就请你编写一个监测程序&#xff0c;随时监测四轮的胎压&…

Java中的包、类、接口说明

写在开头 包、类、接口、方法、变量、参数、代码块,这些都是构成Java程序的核心部分,即便最简单的一段代码里都至少要包含里面的三四个内容,这两天花点时间梳理了一下,理解又深刻了几分。 Java中的包 Java 定义了一种名字空间,称之为包:package。一个类总是属于某个包…

Servlet系列:两种创建方式(xml,注解)

一、使用web.xml的方式配置&#xff08;Servlet2.5之前使用&#xff09; 在早期版本的Java EE中&#xff0c;可以使用XML配置文件来定义Servlet。在web.xml文件中&#xff0c;可以定义Servlet的名称、类名、初始化参数等。然后&#xff0c;在Java代码中实现Servlet接口&#x…

数据结构---数组

一、基本概念 1. 存放一组相同数据类型的集合 2.在内存中,分配连续的空间,数组创建时要指定大小 3. 定义 数据类型 [] 数组名 // 1.定义一个数组,里面的元素包含10, 20, 24, 17, 35, 58, 45, 74 int arr[] {10, 20, 24, 17, 35, 58, 45, 74}; 4. 获取数组的长度 int lengt…

wayland(xdg_wm_base) + egl + opengles 最简实例

文章目录 前言一、ubuntu 下相关环境准备1. 获取 xdg_wm_base 依赖的相关文件2. 查看 ubuntu 上安装的opengles 版本3. 查看 weston 所支持的 窗口shell 接口种类二、xdg_wm_base 介绍三、egl_wayland_demo1.egl_wayland_demo2_0.c2.egl_wayland_demo3_0.c3. xdg-shell-protoco…

Chatopera 云服务支持大语言模型对话(LLM),定制您的聊天机器人

2024 年&#xff0c;Chatopera 云服务继续不断完善&#xff0c;为开发者提供最好的定制聊天机器人的工具。在过去的一年&#xff0c;用户们反映最多的建议是 Chatopera 云服务内置大语言模型的对话&#xff0c;今天 Chatopera 云服务完成了产品升级&#xff0c;满足了这个诉求。…

HCIP-BGP选路实验

一.实验拓扑图 二.详细配置 R1 interface GigabitEthernet0/0/0 ip address 12.1.1.1 255.255.255.0interface LoopBack0 ip address 1.1.1.1 255.255.255.0interface LoopBack1 ip address 10.1.1.1 255.255.255.0bgp 1 router-id 1.1.1.1 peer 12.1.1.2 as-number 2ipv4-fa…

Python MySQL 数据库查询:选择数据、使用筛选条件、防止 SQL 注入

从表格中选择数据 要从MySQL中的表格中选择数据&#xff0c;请使用"SELECT"语句&#xff1a; 示例选择"customers"表格中的所有记录&#xff0c;并显示结果&#xff1a; import mysql.connectormydb mysql.connector.connect(host"localhost"…

模型服务网格:云原生下的模型服务管理

作者&#xff1a;王夕宁 模型服务网格&#xff08;Model Service Mesh&#xff09;是一种架构模式&#xff0c;用于在分布式环境中部署和管理机器学习模型服务。它提供了一个可扩展的、高性能的基础架构&#xff0c;用于将多个模型服务进行管理、部署和调度&#xff0c;以此更…

0基础开发EtherNet/IP:协议格式,JAVA、C#、C++处理

经过一阵倒腾&#xff0c;把CIP、Ethernet/ip协议搞到手 协议的概念和理论就不提及了&#xff0c;上网随便一搜索EtherNet/IP遍地都是。 直接将协议关键点列举出来吧。 更多协议资料 www.jngbus.com 通讯软件群 30806722 这里讲解的是TCP和UDP协议的格式&#xff0c;EtherN…

vue.config.js中打包相关配置

1.原始篇 let path require(path); const webpack require(webpack); const ThemeColorReplacer require(webpack-theme-color-replacer); const { getThemeColors, modifyVars } require(./src/utils/themeUtil); const { resolveCss } require(./src/utils/theme-color…