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

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主题,本来应该是下一页的按键 » 变成了 &raquo ;上一页的按键 « 变成了 &laquo

解决方法

~/hexo/themes/yilia/layout/_partial目录下的archive.ejs`文件中

vim themes/yilia/layout/_partial/archive.ejs

直接将 &raquo

修改为» ,将&laquo 修改为 « ,修改之后就能正常显示了。

页内跳转

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的语法插入图片即可,如

![img](/pic/test.png)

到此你就完成了插图,并且图片在你的博客上面也会正常显示!

记住在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

REF

预览

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:

1.hexo部署至云服务的宝塔面板

2.从零开始搭建Hexo博客并部署到远程平台

备案

在以下文件中添加备案信息

hexo/themes/yilia-plus/layout/_partial/footer.ejs

SSH证书部署

腾讯云SSL证书下载

  • 使用文本编辑器打开 .key 私钥文件,并复制内容至密钥(KEY)
  • 使用文本编辑器打开 .crt 证书文件,并复制内容至证书(PEM 格式)
    部署方法-宝塔
  1. 请在 SSL证书管理控制台 中选择您需要安装的证书并单击【下载】。
  2. 在弹出的【证书下载】窗口中,服务器类型选择Nginx,单击下载并解压缩cloud.tencent.com证书文件包到本地目录。
    解压缩后,可获得相关类型的证书文件。其中包含cloud.tencent.com_nginx文件夹。
  3. 登录宝塔Web面板,单击【网站】,即可进入【网站管理】页面。
  4. 在【网站管理】页面中选择您需要配置SSL证书的域名对应的站点并单击【设置】。如下图所示:
    img
  5. 在弹出的【站点修改】窗口中,依次单击 SSL > 其他证书,填写密钥以及证书文件。如下图所示:
  6. 单击保存并显示以下信息,即可部署成功。
  7. 部署成功后,即可使用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生成一个静态网页,具体步骤如下:

  1. 安装GIT

    去官网安装Git工具,然后安装,和普通软件安装方式相同,打开安装包后一路回车,直到安装完成,官网链接:Git Windows Download;

    安装完成后在桌面右击就会出现GitBash控制台,代表安装成功

  2. 安装NodeJs

    Hexo框架是基于nodejs编写,所以安装hexo之前需要安装nodejs,nodejs下载网页:Node.js,下载LTS版本

    下载之后一路安装,不会的可以百度具体安装教程,不多说,安装完成后我们打开刚刚Git的命令行,右击桌面空白处打开GitBash,输入如下指令查看hexo和npm的版本
    node -v

    npm -v

    返回版本信息就说明安装成功.

  3. 安装Hexo

    使用nodejs的npm安装包管理工具安装hexo,指令如下

    npm install -g hexo-cli

    查看是否安装成功

    hexo -v

    出现版本信息说明安装成功.

  4. 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

  1. 安装 git

    sudo apt install git

    查看版本

    git --version

  2. 安装 nginx

    sudo apt install nginx

    查看版本

    nginx -v

  3. 建立远程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配置基本完成。

  1. 添加本地公钥到远程Git仓库

    添加公钥到树莓派,其实就是添加本地PC到Git的白名单中,之前我们已经在本地生成了公钥,下一步我们就是上传公钥。具体方法参考我的另一篇文章 ssh

  2. 配置本地 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 下来

旧电脑

  1. git checkout -b mfiles
  2. git merge master
  3. git push pi mfiles

新电脑

  1. git clone -b mfile ssh://username@ip:135/var/repo/web_blog blog
  2. git 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

参考网站
- csdn
- 44UoDoV519ycTE3aV35BzyLcGwqE2T6HQHAYnX37tPvBg2kh2fwiSmfNATYqAgjZkAKbsBT8HsdWq5LBiBJ8ErRvPFcw3tk