hexo搭建及配置
Hexo 简介
Hexo是一款基于Node.js的静态博客框架,依赖少易于安装使用,可以方便的生成静态网页托管在GitHub和Coding上,是搭建博客的首选框架。大家可以进入hexo官网进行详细查看,因为Hexo的创建者是台湾人,对中文的支持很友好,可以选择中文进行查看。
安装npm
sudo apt install npm
sudo yum install npm -y
安装nodejs
sudo apt install nodejs
sudo yum install nodejs -y
安装hexo
sudo npm install hexo -g
sudo npm install hexo-cli -g
arch vs manjaro
升级降级nodejs版本
推荐方法:
# 查看当前node版本
$ node -v
# 清除npm缓存
$ npm cache clean -f
# 全局安装n
$ npm install -g n
# 升级到最新稳定版
$ n stable
# 升级到最新版
$ n latest
# 升级到定制版
$ n v14.6.0
# 切换使用版本
$ n 13.10.0 (ENTER)
# 删除制定版本
$ n rm 13.10.0
# 用制定的版本执行脚本
$ n use 13.10.0 some.js
# 升级完成查看 node版本
$ node -v
参考来源:csdn
以前的老方法,源代码覆盖法(不推荐使用)
wget https://nodejs.org/dist/v12.1.0/node-v12.1.0-linux-x64.tar.gz
sudo ln /home/liupei/hexo/node-v12.1.0-linux-x64/bin/npm npm
sudo ln /home/liupei/hexo/node-v12.1.0-linux-x64/bin/node node
常见问题
hexo d出错
错误症状
fatal: in unpopulated submodule '.deploy_git'
解决方法
删掉.deploy_git,然后重新生成和部署。
rm -rf .deploy_git
hexo g
hexo d
实在不行,重新安装相关依赖,然后重新生产和部署。
npm install hexo-deployer-git –save
rm -rf .deploy_git
hexo g
hexo d
错误症状
Deployer not found: git
解决方法
这是因为没有安装hexo-deployer-git插件,在站点目录下输入下面的命令安装插件就好了。执行下面这行命令
npm install hexo-deployer-git --save
参考来源:csdn
hexo g报错
- 原因
nodejs版本问题,针对低版本node问题,node12.0.0以上就没这个问题了 - 解决方法
- 版本12.0.0的
node.js中支持String.matchAll() - 两种解决方案
- 升级
nodejs高于12.0.0版本 config.xml中的highlight -> enable的值从true改为false,就可以避免异常了
参考文献:cscd
- 升级
- 版本12.0.0的
non-existent
(node:1656) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
(node:1656) Warning: Accessing non-existent property 'filename' of module exports inside circular dependency
(node:1656) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency
(node:1656) Warning: Accessing non-existent property 'column' of module exports inside circular dependency
找到错误信息中提到的 4 个文件的具体错误位置一个个的查看与报错相关联的内容,最终删除了 .\node_modules\nib\node_modules\stylus\lib\nodes\node.js 文件中的一段代码后解决。
修改前这段代码为:
var Node = module.exports = function Node(){
this.lineno = nodes.lineno || 1;
this.column = nodes.column || 1;
this.filename = nodes.filename;
};
修改后:
var Node = module.exports = function Node(){};
主题翻页
hexo-yilia主题,本来应该是下一页的按键 » 变成了 » ;上一页的按键 « 变成了 « 。
解决方法
在~/hexo/themes/yilia/layout/_partial目录下的archive.ejs`文件中
vim themes/yilia/layout/_partial/archive.ejs
直接将 »
修改为» ,将« 修改为 « ,修改之后就能正常显示了。
页内跳转
在B处设置
<span id="mark">被跳转处B</span>
在 A 处设置
[点击A跳转到B](#mark)
网站图标
- 下载制作 ico 32x32图标,并放在
/themes/yilia/source/img里 - 修改主题配置文件
_config.yaml,修改以下行favicon: /img/favicon.ico
图片显示
在Hexo的目录source中创建一个图片文件夹,例如pic
把你要插入的图片文件放到该目录下面,在你的文章中正常使用markdown的语法插入图片即可,如

到此你就完成了插图,并且图片在你的博客上面也会正常显示!
记住在pic前面有一个/,表示根目录的意思,因为对于hexo来说它的资源文件的根目录就是source,当然你也可以修改_config.yml改变这个配置
参考来源
hexo使用
新建
- 新建 html
hexo n name
- 新建 page
hexo n page aboutme
配置Blog源码根目录下_config.yml文件
配置Blog使用的模板目录下的_config.yml文件
配置对应页面内容
更新和同步
hexo g && hexo d
同步指定端口,修改 _config.yml 文件
repo: ssh://username@ip:port/path/to/remote/git
预览
hexo s
删除网页
$ cd hexo/source/_posts/ && rm python-project.md
$ hexo g && hexo d
分类标签
typora 免费版本
typora 0.11.18 官网下载
typora 0.11.18 百度盘下载,提取码:n9g7
部署个人服务器
安装宝塔面板
本地生成ssh秘钥备用
git config --global user.name "GitHub用户名"
git config --global user.email "GitHub的邮箱"
ssh-keygen -t rsa -C "GitHub的邮箱"
连接服务器终端
安装git
sudo apt install git
创建 Git 账户并赋予权限
adduser git
sudo vim /etc/sudoers
编辑 /etc/sudoers 文件
vim /etc/sudoers
按i键进入编辑模式,找到root ALL=(ALL) ALL,在其下方加入:
git ALL=(ALL) ALL
输入完成后按esc,再输入:wq,保存退出。
更变/etc/sudoers权限
chmod 400 /etc/sudoers
切换至 git 用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
同样i进入编辑模式,把之前本地准备的id_rsa.pub文件中的公钥复制进去,按esc后,输入:wq保存。**(注意!!! 最后一行要加回车)**
更改权限:
chmod 600 /home/git/.ssh/authorized_keys
chmod 700 /home/git/.ssh
本地测试:
ssh -v git@服务器ip地址或域名
不用输密码就成了。
创建git仓库
切换为root用户
sudo su root
创建repo作为仓库目录,并加权限
mkdir /var/repo
chown -R git:git /var/repo
chmod -R 755 /var/repo
创建 hexo 目录作为网站根目录
mkdir /var/hexo
chown -R git:git /var/hexo
chmod -R 755 /var/hexo
创建一个空白的 git 仓库
cd /var/repo
git init --bare hexo.git
编辑一个 Git 钩子
vim /var/repo/hexo.git/hooks/post-receive
按i进入编辑模式,添加下面的代码,按esc输入:wq 保存
#!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/repo/hexo.git checkout -f
更改权限
chown -R git:git /var/repo/hexo.git/hooks/post-receive
chmod +x /var/repo/hexo.git/hooks/post-receive
宝塔网站配置
创建一个网站

本地 Git deploy 设置
安装git部署插件
npm install hexo-deployer-git --save
在博客根目录配置
deploy:
type: git
repo: git@服务器ip或域名:/var/repo/hexo.git
branch: master
配置完成后,可直接hexo连到自己的服务器。简单快捷。
Reference:
备案
在以下文件中添加备案信息
hexo/themes/yilia-plus/layout/_partial/footer.ejs
SSH证书部署
腾讯云SSL证书下载
- 使用文本编辑器打开 .key 私钥文件,并复制内容至密钥(KEY)
- 使用文本编辑器打开 .crt 证书文件,并复制内容至证书(PEM 格式)
部署方法-宝塔
- 请在 SSL证书管理控制台 中选择您需要安装的证书并单击【下载】。
- 在弹出的【证书下载】窗口中,服务器类型选择Nginx,单击下载并解压缩cloud.tencent.com证书文件包到本地目录。
解压缩后,可获得相关类型的证书文件。其中包含cloud.tencent.com_nginx文件夹。 - 登录宝塔Web面板,单击【网站】,即可进入【网站管理】页面。
- 在【网站管理】页面中选择您需要配置SSL证书的域名对应的站点并单击【设置】。如下图所示:

- 在弹出的【站点修改】窗口中,依次单击 SSL > 其他证书,填写密钥以及证书文件。如下图所示:

- 单击保存并显示以下信息,即可部署成功。
- 部署成功后,即可使用https://cloud.tencent.com进行访问。
更多详情可参考文档:宝塔面板SSL证书安装部署
树莓派部署
基本框架
本地PC端:
首先要在本地PC端建立一个Git仓库,安装Hexo相关依赖,使用Hexo生成静态网页代码,然后通过Git上次传到远程仓库
Hexo 是一个基于nodejs 的静态博客网站生成器,用户可以借助该工具快速生成网页
Git是一种分布式的版本管理系统,由Linux的创造者Linus所创建,Git可以帮我们做很多事情,比如代码版本控制,分支管理等,其主要包含的几个功能有远程仓库,克隆,本地仓库,分支,提交,拉取,合并,推送等。
树莓派端:
在树莓派端需要建立一个Git远程仓库,用于接收网页数据,同时树莓派要安装Nginx,用于将本地网页映射到内网IP上去
Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,可以作为一个HTTP服务器进行网站的发布处理,以及作为反向代理进行负载均衡的实现
外网访问:
如果只映射到内网IP,那访问服务器只能在内网访问,这显然不是我们所期待的,所以后面的步骤就是将外网的IP通过端口映射,映射到内网IP,之后互联网的其他用户就可以通过外网的IP访问服务器了,但访问的浏览器还是通过地址访问,安全性比较低,因此我们在加入一个域名解析,将域名解析到外网IP同时加装SSL证书进行加密保护!
内网(局域网)和外网(广域网)的区别:
范围大小 局域网(LAN)相对于广域网(WAN)而言,主要是指在小范围内的计算机互联网络。这个“小范围”可以是一个家庭,一所学校,一家公司,或者是一个政府部门。BT中常常提到的公网、外网,即广域网(WAN);BT中常常提到私网、内网,即局域网(LAN)。
IP地址
广域网上的每一台电脑(或其他网络设备)都有一个或多个广域网IP地址(或者说公网、外网IP地址),广域网IP地址一般要到ISP处交费之后才能申请到,广域网IP地址不能重复;局域网(LAN)上的每一台电脑(或其设备)都有一个或多个局域网IP地址(或者说私网、内网IP地址),局域网IP地址是局域网内部分配的,不同局域网的IP地址可以重复,不会相互影响
SSL协议:SSL (Secure Sockets Layer 安全套接字协议)和继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议,TLS与SSL在传输层与应用层之间对网络连接进行加密,简单来说HTTPS中的S就是SSL
本地Hexo设置
本地Hexo设置就是下载Hexo开发需要的依赖,下载配置完成后使用Hexo生成一个静态网页,具体步骤如下:
安装GIT
去官网安装Git工具,然后安装,和普通软件安装方式相同,打开安装包后一路回车,直到安装完成,官网链接:Git Windows Download;
安装完成后在桌面右击就会出现GitBash控制台,代表安装成功
安装NodeJs
Hexo框架是基于nodejs编写,所以安装hexo之前需要安装nodejs,nodejs下载网页:Node.js,下载LTS版本
下载之后一路安装,不会的可以百度具体安装教程,不多说,安装完成后我们打开刚刚Git的命令行,右击桌面空白处打开GitBash,输入如下指令查看hexo和npm的版本
node -vnpm -v返回版本信息就说明安装成功.
安装Hexo
使用nodejs的npm安装包管理工具安装hexo,指令如下
npm install -g hexo-cli查看是否安装成功
hexo -v出现版本信息说明安装成功.
Hexo生成网页
两个工具就绪后我们开始生成静态网页:
我们首先创建一个文件夹,用来存放网页数据
在文件夹内右击打开gitbash,输入初始化指令
web_blog_name由用户自己定义hexo init web_blog_name输入后git会从远程拉取初始化代码下来,然后文件夹就有了Hexo的源码了.
在Git中改变当前目录的位置,进入该文件夹,代码如下
cd web_blog_name/使用hexo生成代码指令
hexo g然后开启本地端口访问
hexo server在浏览器输入如下内容,就可以本地访问Hexo生成的网页代码了:
localhost:4000到此网页的生成就完成了!
除了网页生成外,我们本地还要生成一个ssh公钥,用于后期向树莓派远程仓库提交网页源码,git指令如下
ssh-keygen -t rsa -C “邮箱地址”然后一路回车,直到出现下面的图案,代表公钥生成成功,
到此本地设置基本完成
树莓派服务器设置
有了静态网页了,我们下一步就是配置树莓派了,首先通过SSH连接树莓派
获取IP方法 ip addr
安装 git
sudo apt install git查看版本
git --version安装 nginx
sudo apt install nginx查看版本
nginx -v建立远程Git仓库
在树莓端安装Git后,我们用Git建立一个远程仓库,用来作为本地PC提交网页源码的中间站,这样如果我们要更新网页,就不用登录到树莓派然后传文件这么麻烦的步骤,具体建立步骤如下:1)创建一个文件夹;2)给分到用户组;3)改变文件夹权限
$sudo mkdir /var/repo/
$sudo chown -R $USER:$USER /var/repo/
$sudo chmod -R 755 /var/repo/
文件夹建立后,改变当前路径到建立的文件夹,输入如下指令建立Git仓库(web_blog为自定义的名字)
cd /var/repo/
git init --bare web_blog.git
Git仓库创建完成后,我们需要再创建一个文件夹,用来做Nginx的根目录
sudo mkdir -p /var/www/hexo
修改目录权限
sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo
然后再仓库 web_blog 下创建一个钩子,将静态 HTML 文件传送到树莓派服务器的根目录下,即 /var/www/hexo下面,钩子代码如下:
sudo vim /var/repo/web_blog.git/hooks/post-receive
在文件中添加如下shell脚本
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/web_blog.git checkout -f
保存退出文件后,改变文件权限,让该文件变为可执行文件。
sudo chmod +x /var/repo/web_blog.git/hooks/post-receive
上一步我们已经创建好网页根目录,并且已经做好文件传送钩子,这一步我们配置Nginx的配置文件,开启Nginx并将根目录映射到我们创建的目录下
sudo vim /etc/nginx/sites-available/default
修改root的值为我们设置的根目录文件夹
# Default server configuration
#
server{
listen 80 default_server;
...
...
# SSL configuration
...
...
root /var/www/hexo;
# deny access to .htaccess files, if Apache's document root
# ...
}
保存退出,重新启动Nginx
sudo service nginx restart
在和树莓派同一个局域网下访问树莓派的IP地址,访问如下说明目录设置成功了,Nginx配置基本完成。
添加本地公钥到远程Git仓库
添加公钥到树莓派,其实就是添加本地PC到Git的白名单中,之前我们已经在本地生成了公钥,下一步我们就是上传公钥。具体方法参考我的另一篇文章 ssh
配置本地 hexo ,上传网页代码
在上面都配置完成后,我们在配置一下本地网页的传输代码,就可以上传一开始生成的静态网页了!在网页源码位置修改_config.yml文件。首先修改一下推送地址路径和推送方式
deploy:
type: git
message: update
repo: ssh://pi@IP:13579/var/repo/web_blog
branch: master
除此之外还有修改网页的源地址,按照下图中的格式修改,添加自己的IP
# URL
url: http://192.168.2.102
#url: http://liupei.ink
root: /
hexo生成静态网页代码:
hexo g
提交远程代码
hexo d
绑定到 alias
alais hexou='hexo g && hexo d'
代码提交成功后,就会出现在Nginx的根目录下,这时我们在内网访问Nginx的端口就可以访问刚刚的网页啦
内网穿透
git clone -b mfiles ssh://username@ip:135/var/repo/web_blog blog
通过以上的步骤,我们现在已经可以通过内网访问部署在树莓派服务器上的网页了,有的朋友可能不满足于此,想要网页通过外网也能访问,下面我分享一下如何做内网穿透,通过外网访问内网服务器!
内网穿透的方法有很多种,云服务器或花生壳,这里我选择花生壳,后续出教程。
多电脑管理
基本思路,
- 在旧电脑上新建分支 mfiles,
- 每次在 master 分支更新后 再在 mfiles 分支进行合并保持同步更新,
- 将跟新推送到远程仓库
- 在新电脑把原始文件 pull 下来
旧电脑
git checkout -b mfilesgit merge mastergit push pi mfiles
新电脑
git clone -b mfile ssh://username@ip:135/var/repo/web_blog bloggit pull orign mfiles:mfiles
参考网站
hexo插件
hexo-generator-json-content 是一个为 Hexo 静态博客框架设计的插件,用于生成一个包含博客文章和页面内容的 JSON 文件。这个 JSON 文件可以用于各种微服务,如 AJAX 站点搜索、Twitter 类型提示或公共 API。该插件的主要目的是提供一个紧凑且敏捷的内容数据格式,方便开发者进行二次开发和集成。
快速安装
npm install hexo-generator-json-content --save
配置
在 Hexo 项目的 _config.yml 文件中,添加以下配置:
jsonContent:
meta: true
drafts: false
file: content.json
keywords: undefined
dateFormat: undefined
pages:
title: true
slug: true
date: true
updated: true
comments: true
path: true
link: true
permalink: true
excerpt: true
keywords: false
text: true
raw: false
content: false
author: true
posts:
title: true
slug: true
date: true
updated: true
comments: true
path: true
link: true
permalink: true
excerpt: true
keywords: false
text: true
raw: false
content: false
author: true
categories: true
tags: true
生成 JSON 文件
配置完成后,运行以下命令生成 JSON 文件:
hexo generate
生成的 JSON 文件将位于 Hexo 项目的 public 目录下,文件名为 content.json。








