利用 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: git
  repo: git@github.com:Luyoung0001/Luyoung0001.github.io.git
  branch: 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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

复现YOLO_ORB_SLAM3_with_pointcloud_map项目记录

文章目录 1.环境问题2.遇到的问题2.1编译问题1 monotonic_clock2.2 associate.py2.3 associate.py问题 3.运行问题 1.环境问题 首先环境大家就按照github上的指定环境安装即可 环境怎么安装网上大把的资源,自己去找。 2.遇到的问题 2.1编译问题1 monotonic_cloc…

DDR3(三)

目录 1 预取1.1 什么是预取1.2 预取有哪些好处1.3 结构框图1.4 总结 2 突发2.1 什么是突发2.2 突发与预取 本文讲解DDR中常见的两个术语:预取和突发,对这两个概念理解的关键在于地址线的低位是否参与译码,具体内容请继续往下看。 1 预取 1.1…

印尼网络安全治理能力观察

在全国国际机场的移民服务完全瘫痪 100 多个小时后,印尼政府承认其新成立的国家数据中心 (PDN) 遭受了网络攻击。 恶意 Lockbit 3.0 勒索软件加密了存储在中心的重要数据,其背后的黑客组织要求支付 800 万美元的赎金。 不幸的是,大多数数据…

使用Source Insight 4.0

一、使用书签 二、添加文件 三、Search 3.1 替换所有变量 四、右键查询 4.1 查看被调用的地方

【算法笔记自学】第 6 章 C++标准模板库(STL)介绍

6.1vector常见用法详解 #include <cstdio> #include <vector> using namespace std;int main() {int n, x;scanf("%d", &n);vector<int> v;for (int i 0; i < n; i) {scanf("%d", &x);v.push_back(x);}for (int i 0; i <…

[数据结构] 基于插入的排序 插入排序希尔排序

标题&#xff1a;[数据结构] 排序#插入排序&希尔排序 水墨不写bug 目录 &#xff08;一&#xff09;插入排序 实现思路&#xff1a; 插入排序实现&#xff1a; &#xff08;二&#xff09;希尔排序 希尔排序的基本思想&#xff1a; 希尔排序的实现&#xff1a; 正…

Linux 进程间的信号

1.信号的初认识 信号是进程之间事件异步通知的一种方式&#xff0c;属于软中断。通俗来说信号就是让用户或进程给其他用户和进程发生异步信息的一种方式。对于信号我们可以根据实际生活&#xff0c;对他有以下几点认识&#xff1a;1.在没有产生信号时我们就知道产生信号要怎么处…

Win11 Python3.10 安装pytorch3d

0&#xff0c;背景 Python3.10、cuda 11.7、pytorch 2.0.1 阅读【深度学习】【三维重建】windows10环境配置PyTorch3d详细教程-CSDN博客 1&#xff0c;解决方法 本来想尝试&#xff0c;结果发现CUB安装配置对照表里没有cuda 11.7对应的版本&#xff0c;不敢轻举妄动&#x…

求 自然对数 ln(x)

np.log()函数是用来计算数组中每个元素的自然对数的。自然对数是以数学常数e&#xff08;约等于2.71828&#xff09;为底的对数。NumPy作为一个强大的数值计算库&#xff0c;提供了很多用于数组操作的函数&#xff0c;np.log()就是其中之一。 • 下面是一个简单的例子&#xff…

24西安电子科技大学经济与管理学院—考研录取情况

24西安电子科技大学—经理与管理学院—考研录取统计 01、经理与管理学院各个方向 02、24经济与管理近三年复试分数线对比 1、经管院24年院线相对于23年院线普遍下降2-15分&#xff0c;个别专业上涨4-10分。 2、经管院应用经济学2024年院线350分&#xff1b;管理科学与工程院线…

进程控制-exec函数

让父子进程来执行不相干的操作 能够替换进程地址空间的代码.text段 执行另外的程序&#xff0c;不需要创建额外的的地址空间 当前程序中调用另外一个应用程序 指定执行目录下的程序 int execl(const char *path, const char *arg&#xff0c;/* (char *) NULL */); /* pat…

如何配置 PostgreSQL 以实现高可用性和故障转移?

文章目录 一、高可用性和故障转移的概念&#xff08;一&#xff09;数据复制&#xff08;二&#xff09;监控和检测&#xff08;三&#xff09;快速切换 二、实现高可用性和故障转移的技术方案&#xff08;一&#xff09;流复制&#xff08;Streaming Replication&#xff09;&…

一文了解常见DNS结构

很多企业忽略DNS这个关键的组件&#xff0c;而当DNS出现问题是&#xff0c;就会导致网站无法访问、电子邮件无法发送和接收&#xff0c;从而影响到企业的正常运行。而网络团队成员如果想要处理DNS问题就必须对所在网络的DNS架构有一定的理解。 主DNS服务器&#xff1a; 主DNS服…

Pycharm python解释器 unsupported python 3.1 解决

Pycharm 环境 unsupported python 3.1解决 1. 问题重现2. 原因分析3. 解决方法 1. 问题重现 之前使用Pycharm 2024.1.1的时候&#xff0c;环境配置的Python 3.11.9&#xff0c;现在改成使用Pycharm 2020.2.2&#xff0c;结果Python解释器显示“unsupported python 3.1”&#…

一.1.(3)半导体二极管基本电路的分析方法及常见应用电路

1.二极管基本电路的分析方法 先标正负极&#xff0c;再看是否理想二极管 将二极管视为断路&#xff0c;求两端电压 两端电压均大于导通电压&#xff0c;压差大的先导通&#xff08;由于电源不是完全的阶跃&#xff0c;而是有一个电压爬升的过程&#xff09; 2.常见应用电路 1.求…

STL—容器—string类【对其结构和使用的了解】【对oj相关练习的训练】

STL—容器—string类 其实string类准确来说并不是容器&#xff0c;因为他出现的时间比STL要早&#xff0c;但是也可以说是容器吧。 1.为什么要学习string类&#xff1f; 1.1C语言当中的字符串 C语言中&#xff0c;字符串是以’\0’结尾的一些字符的集合&#xff0c;为了操作…

【技术支持】vscode代码格式化空格数量问题

问题 使用AltShiftF代码格式化时&#xff0c;发现有些文件格式化后缩进为2格个空格&#xff0c;有些文件正常4个空格 刨析 发现vue创建的文件使用的是两个空格&#xff0c;而且换行符表示方式也不一样 LF 是 Unix 和 Unix-like 系统&#xff08;如 Linux 和 macOS&#xff0…

springcloud分布式架构网上商城 LW +PPT+源码+讲解

3系统分析 3.1可行性分析 在开发系统之前要进行系统可行性分析&#xff0c;目的是在用最简单的方法去解决最大的问题&#xff0c;程序一旦开发出来满足了用户的需要&#xff0c;所带来的利益也很多。下面我们将从技术、操作、经济等方面来选择这个系统最终是否开发。 3.1.1技术…

网络漏洞挖掘实测报告

关于作者&#xff1a;个人主页 网络漏洞挖掘实测报告 一、前言 网络漏洞挖掘是信息安全领域中至关重要的一环。通过挖掘和修复漏洞&#xff0c;可以有效地保护系统免受潜在的攻击和破坏。本报告旨在记录一次完整的网络漏洞挖掘实测过程&#xff0c;包括实施方法、过程、结果以…

欢迎加入国家智能网联汽车创新中心OS开发训练营大家庭

欢迎加入国家智能网联汽车创新中心OS开发训练营大家庭。&#x1f680; 导学阶段启动 在正式开营之前&#xff0c;我们特别设置了导学阶段&#xff0c;旨在帮助大家更好地迎接颇具挑战性的项目实战。导学阶段包括一系列精心准备的视频课程和配套习题。github链接&#xff1a;htt…