利用 Hexo 搭建个人博客

〇、前言

本文将会讨论,如何将 CSDN 上的博客,拉取到本地,然后PicGo、Hexo、Github 等工具建立个人博客,环境为 Ubuntu 20.04。

一、利用 Hexo

预备工作

首先安装 Node.js、npm、git工具。

> node -v
v12.22.9
> npm -v
8.5.1
> git version
git version 2.34.1

安装 Hexo

npm install -g hexo-cli> hexo -v
INFO  Validating config
hexo: 7.3.0
hexo-cli: 4.3.2
os: linux 5.15.0-107-generic Ubuntu 22.04.4 LTS 22.04.4 LTS (Jammy Jellyfish)
node: 12.22.9
v8: 7.8.279.23-node.56
uv: 1.43.0
zlib: 1.2.11
brotli: 1.0.9
ares: 1.18.1
modules: 72
nghttp2: 1.43.0
napi: 8
llhttp: 2.1.6
http_parser: 2.9.4
openssl: 1.1.1m
cldr: 40.0
icu: 70.1
tz: 2024a
unicode: 14.0

小试牛刀

首先创建一个文件夹,比如 hexotest。这个文件的目的是,我们打算在它里面创建博客,并且它是一个博客网站项目根目录:

mkdir hexotest
cd hexotest

之后,就可以初始化这个文件夹了,初始化的目的是,它会创建一个 helloword.md 文件,然后利用 node.js 等将这个 markdown 文件渲染成一个 html 文件,然后在本地开启一个网络服务器以供前端访问:

> hexo init
INFO  Cloning hexo-starter https://github.com/hexojs/hexo-starter.git
INFO  Install dependencies
INFO  Start blogging with Hexo!

接着启动:

> hexo s
INFO  Validating config
INFO  Start processing
INFO  Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.

然后就可以在前端看到博客了:
博客

二、利用 Hexo 将博客部署在 github

这里创建 github 账户、创建博客仓库什么的就不啰嗦了,只提重点。

修改配置文件

进入文件夹 hexotest,之后修改配置文件 _config.yml:

# Deployment
## Docs: https://hexo.io/docs/one-command-deployment
deploy:type: gitrepo: git@github.com:Luyoung0001/Luyoung0001.github.io.gitbranch: main

之后,需要一个小工具将博客部署上去, 原理主要就是 push到远端仓库:

npm install hexo-deployer-git --save

需要注意的是,每一个项目根目录都需要执行一次这个命令,这个命令会在本地生成一些脚本,然后把脚本放在 node_modules 目录中。

之后执行下面的命令就可以了:

hexo c   #清除缓存文件 db.json 和已生成的静态文件 public
hexo g       #生成网站静态文件到默认设置的 public 文件夹(hexo generate 的缩写)
hexo d       #自动生成网站静态文件,并部署到设定的仓库(hexo deploy 的缩写)

访问

通过浏览器访问:https://luyoung0001.github.io 就可以了:
博客

至此,博客系统就初步搭建起来了。

更新博客

事实上,可以向 hexotest/source/_post 中放置大量的 markdown 文件,这些文件就是你想要写发布的博客。

写好了以后,继续执行:

hexo c
hexo g
hexo d

就好了。

三、从 csdn 到 github

经过寻找,终于让我在网上找到了这个项目:https://github.com/flytam/blog-sync-tool?tab=readme-ov-file

这个工具可以将博客从 csdn 等博客网站下载到本地,而且还支持图片下载,这意味着你csdn 中博客的图片都可以下载下来。

转移文章

参考 csdnsynchexo 的 文档,首先安装:

npx csdnsynchexo@latest  --help

安装好了就可以爬取了,但是别忘了需要阅读、修改等权限,谁的权限最高?当然是 csdn 作者本人了,因此这里需要你登录你自己的 csdn 账号后,获取到 csdn 的 cookie,并将其写入到配置文件。

配置文件

可以将这个配置文件 config.json 放到任何地方,但是我还是建议在 ~ 目录下 创建一个 csdn目录,然后将这配置文件放置到 csdn 中:

{"userId": "m0_73651896","type": "csdn","output": "./blogfromcsdn","cookie": ""
}

userId 就是 csdn 的 userID,output 就是将文章爬取下来后存入的目录,至于 cookie,这很重要。

获取方式:新开一个页面,F12(mac: cmd+shift+i)打开控制台,点击抓包这个请求的request headers中的cookie后面那段值。这个值很多,建议全部粘贴。

爬取

然后就可以执行了:

npx csdnsynchexo@latest --config ./config.json

执行完成后,就可以在目标文件夹看到爬取下来的文件了:

ls
'(1) DNS Protocol Analysis Based on Wireshark at the Application Layer.md'
'2022 Personal Summary.md'
'2023 个人总结.md'
'2024.06.16 刷题日记.md'
'2024.06.17 刷题日记.md'
'2024.06.18 刷题日记.md'
'2024.06.19 刷题日记.md'
...

将文件拷贝到博客目录

将爬取下来的文章拷贝到 hexotest/source/_post,然后继续 hexo cgd 就可以了。

四、爬取图片

这个很重要,因为这里还牵扯到将以后写的文章的图片存储到哪里的问题。

好消息是 csdnsynchexo 支持爬取图片,并将这些图片上传到图床,然后将图床中图片的链接统一地在 markdown 中置换,这简直太棒了!

支持这一功能的是 PicGo,PicGo 是一个强大的用于快速上传图片并获取图片 URL 链接的工具,PicGo 本体支持如下图床:

  • 七牛图床 v1.0
  • 腾讯云 COS v4\v5 版本 v1.1 & v1.5.0
  • 又拍云 v1.2.0
  • GitHub v1.5.0
  • SM.MS V2 v2.3.0-beta.0
  • 阿里云 OSS v1.6.0
  • Imgur v1.6.0

这里支持的很多,但是个人建议选取 github,因为未来我们要用到 CloudFlare+github 的形式来做cdn。

csdnsynchexo 中配置文件只需要这样修改以及添加:

{"userId": "m0_73651896","type": "csdn","imgConfig": "./img.json","output": "./blogfromcsdn","cookie": ""
}

然后继续添加一个图片配置文件img.json:

{"accessKey": "xxxxx","secretKey": "xxxx","bucket": "xxxxx","area": "z2","options": "","path": "./blogfromcsdn","picBed": {"uploader": "github","github": {"repo": "Luyoung0001/picBed","token": "","branch": "main"}},"picgoPlugins": {}
}

具体配置方法,参考 GitHub 图床。需要注意的是,一定要放置图床的仓库设为公开仓库,毕竟要从外面访问,要有访问权限。

之后,重新爬取、转移、生成、布置就好了!

五、写附带图片的文章

写文章很简单,就在hexotest/source/_post目录下进行创作就行了,但是插入图片怎么办呢?我们继续使用网络图片,放置自己picbed 中的图片。

问题是怎么上床呢?简单方法是直接 push 到这个仓库,然后抛链接,但是这不正规,况且文件的命名都是麻烦事。这里最好使用 PicGo。

六、配置使用 PicGo

首先下载 PicGo:
选择一个合适的发行版,然后就可以在本地操作了。

具体参考这里

总结

以上就是个人博客搭建的全过程,经过一上午的从 0 到 1,博客终于实现了,以后还得学习学习怎么添加一些feature。

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

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

相关文章

计算组的妙用!!页面权限控制

需求描述: 某些特殊的场景下,针对某页看板,需要进行数据权限卡控,但是又不能对全部的数据进行RLS处理,这种情况下可以利用计算组来解决这个需求。 实际场景 事实表包含产品维度和销售维度 两个维度属于同一公司下面的…

方向导数和梯度

方向导数和梯度 1 导数的回忆2 偏导数及其向量形式偏导数的几何意义偏导数的向量形式 3 方向导数向量形式几何意义方向导数和偏导的关系 4 梯度5 梯度下降算法 1 导数的回忆 导数的几何意义如图所示: 当 P 0 P_{0} P0​点不断接近 P P P时,导数如下定义…

Springboot学习之用EasyExcel4导入导出数据(基于MyBatisPlus)

一、POM依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><m…

Feign-未完成

Feign Java中如何实现接口调用&#xff1f;即如何发起http请求 前三种方式比较麻烦&#xff0c;在发起请求前&#xff0c;需要将Java对象进行序列化转为json格式的数据&#xff0c;才能发送&#xff0c;然后进行响应时&#xff0c;还需要把json数据进行反序列化成java对象。 …

短信验证码实现

一、设置AccessKey 创建用户并配置使用权限&#xff0c;使我们拥有调用 aliyunAPI 的权限&#xff0c;之后会生成 AccessKeyID 和 AccessKey密码&#xff0c;后面我们会使用到。需要注意的是 AccessKeyID 和 AccessKey密码生成后我们需要将他保存起来&#xff0c;否则后期无法查…

multisim中关于74ls192n和DSWPK开关仿真图分析(减法计数器)

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

如何监控和分析 PostgreSQL 中的查询执行计划?

文章目录 一、为什么监控和分析查询执行计划很重要二、PostgreSQL 中用于获取查询执行计划的方法三、理解查询执行计划的关键元素四、通过示例分析查询执行计划五、优化查询执行计划的常见策略六、使用工具辅助分析七、结合实际案例的详细分析八、总结 在 PostgreSQL 数据库中&…

nginx的匹配及重定向

一、nginx的匹配&#xff1a; nginx中location的优先级和匹配方式&#xff1a; 1.精确匹配&#xff1a;location / 对字符串进行完全匹配&#xff0c;必须完全符合 2.正则匹配&#xff1a;location ^~ ^~ 前缀匹配&#xff0c;以什么为开头 ~区分大小写的匹配 ~* 不区分…

第十四届蓝桥杯省赛C++B组G题【子串简写】题解(AC)

题目大意 给定字符串 s s s&#xff0c;字符 a , b a, b a,b&#xff0c;问字符串 s s s 中有多少个 a a a 开头 b b b 结尾的子串。 解题思路 20pts 使用二重循环枚举左端点和右端点&#xff0c;判断是否为 a a a 开头 b b b 结尾的字符串&#xff0c;是则答案加一…

【74CH160组成60进制0-59】2021-11-22

缘由60进制计数 到达60后显示ff-嵌入式-CSDN问答 缘由《数电》用两片74160接成29进制计数器应该怎么接呢&#xff1f;-嵌入式-CSDN问答

Gitlab Fork Workflow(协作工作流)

Gitlab Fork WorkFlow&#xff08;协作工作流&#xff09; Fork WorkFlow用于团队间的协作开发。在开发过程中&#xff0c;我们都需要将最新修改的代码合并到代码库上&#xff0c;在代码合并之前&#xff0c;为了保证代码符合上传要求&#xff08;符合需求、代码规范等&#xf…

【MySQL基础篇】多表查询

1、多表关系 概述&#xff1a;项目开发中&#xff0c;在进行数据库表结构操作设计时&#xff0c;会根据业务需求及业务模板之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个表结构之间也存在着各种联系&#xff0c;基本上分为三种…

Windows如何查看端口是否占用,并结束端口进程

需求与问题&#xff1a;前后端配置了跨域操作&#xff0c;但是仍然报错&#xff0c;可以考虑端口被两个程序占用&#xff0c;找不到正确端口或者后端接口书写是否规范&#xff0c;特别是利用Python Flask书写时要保证缩进是否正确&#xff01; Windows操作系统中&#xff0c;查…

实验五 图像增强—空域滤波

一、实验目的 了解图像平滑滤波器&#xff08;均值滤波和中值滤波&#xff09;和图像锐化算子&#xff08;Sobel算子、Prewitt算子、Laplacian算子&#xff09;在工程领域中的应用&#xff1b;理解图像平滑滤波器和图像锐化算子的工程应用范围&#xff1b;掌握图像平滑滤波器和…

Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例

场景 Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类&#xff1a; Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类_winform解析json-CSDN博客 上面使用HttpClient调用post接口时使用的HttpCon…

SQL-DCL(三)

一.DCL介绍 DCL英文全称是Data Control Language(数据库控制语言),用来管理数据库 用户,控制数据库的访问权限。 二.两个方面 1.数据库可以由那些用户访问 2.可以访问那些内容 三.DCL-管理用户 1.查询用户 USE mysql SELECT * FROM user 2.创建用户 CREATE USER…

k8s 部署 springboot 项目内存持续增长问题分析解决

写在前面 工作中遇到&#xff0c;请教公司前辈解决&#xff0c;简单整理记忆博文内容涉及一次 GC 问题的分析以及解决理解不足小伙伴帮忙指正 &#x1f603;,生活加油 99%的焦虑都来自于虚度时间和没有好好做事&#xff0c;所以唯一的解决办法就是行动起来&#xff0c;认真做完…

Appium adb 获取appActivity

方法一&#xff08;最简单有效的方法&#xff09; 通过cmd命令&#xff0c;前提是先打开手机中你要获取包名的APP adb devices -l 获取连接设备详细信息 adb shell dumpsys activity | grep mFocusedActivity 有时获取到的不是真实的Activity 方法二 adb shell monkey -p …

从0-1实现一个前端脚手架

https://gitee.com/childe-jia/kfc-cli.git gitee完整地址 介绍 为什么需要脚手架&#xff1f; 脚手架本质就是一个工具&#xff0c;作用是能够让使用者专注于写代码&#xff0c;它可以让我们只用一个命令就生成一个已经配置好的项目&#xff0c;而不用我们再花时间去配置和安…

【排序算法】—— 快速排序

快速排序的原理是交换排序&#xff0c;其中qsort函数用的排序原理就是快速排序&#xff0c;它是一种效率较高的不稳定函数&#xff0c;时间复杂度为O(N*longN)&#xff0c;接下来就来学习一下快速排序。 一、快速排序思路 1.整体思路 以升序排序为例&#xff1a; (1)、首先随…