hexo博客的搭建

安装 Node.js

首先需要下载 Node.js,请到 node 下载界面,选择适合您的操作系统的 nodejs 安装包,下载安装。

本文不主要讲述这些软件的安装,如果在下载安装过程中遇到问题,请自行 google or baidu 。

安装 Git

  • Windows:下载并安装 git
  • Mac:使用 Homebrew, MacPorts 或者下载 安装程序
  • Linux (Ubuntu, Debian):sudo apt-get install git-core
  • Linux (Fedora, Red Hat, CentOS):sudo yum install git-core

配置 git 开发环境

将 yourname 和 youremail 替换为你自己的用户名和邮箱。

1
2
3
4
5
# 初始化本地用户
git config --global user.name "yourname"
git config --global user.email "youremail"
# 生成 rsa 密钥
ssh-keygen -t rsa -C youremail

hexo 建站

找一个放置本地博客文件的目录,依次执行以下几条指令:

1
2
3
4
5
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

随着 hexo server 可缩写为 hexo s 指令的运行,您的浏览器会自动打开本地运行的博客网站。

如果您想对生成的文件有基本的认识,可以浏览 hexo 官网建站文档

模板文件夹

这里我们先重点介绍模板文件夹。当您新建文章或页面时,Hexo 会根据 scaffold 来创建文件。

如果您修改 scaffold/post.md 中的 Front-matter 内容,那么每次新建一篇文章时都会包含这个修改。

下面是我的推荐(复制到 post.md 后删除注释):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
----
title: {{ title }} //文章标题
date: {{ date }} //文章创建时间
abbrlink: //文章地址链接,后面调用插件自行生成
categories: //文章分类
tags: //文章标签,可多个,用,隔开
cover: //自定义的文章文章缩略图
description: //文章描述
-----

## 0x00 前言



## 0x01

## 0x02

## 0x03

## 0x04

托管服务

关于博客的托管,只介绍两种方案:

  1. Github 方案: 需购买域名(推荐),以及 Github 账号。整体成本较低,操作简单,缺点是国内用户访问速度上的限制。
  2. 云服务器方案: 需购买云服务器,域名(备案所需时间也比较长)。优点就是访问阅读体验好,缺点就是麻烦、繁琐。

Github 方案(新手推荐)🙂

登录 Github 新建仓库。

  • 仓库名: 必须是 用户名.github.io ,这是默认可访问域名。
  • Public: 必须是 Public,不能是 Private ,否则别人不能访问。

进入仓库,复制 HTTPS 链接或者 SSH (推荐) 链接。

修改 deploy

打开博客根目录下的 _config.yml 文件,在该文件的最下方进行如下设置:

1
2
3
4
deploy:
type: 'git'
repo: git@github.com:wmjim/wmjim.github.io.git
branch: main
  • repo:粘贴你刚从 Github 新建仓库的链接。
  • branch:设置为 main 。

在推送到 Github 仓库之前需要安装一个插件:

1
npm install hexo-deployer-git --save

安装完成后在终端执行以下命令:

1
hexo c && hexo g && hexo d

再打开 Github 博客仓库就可以看到文件已经上传。我们转到 Setting -> Pages 设置,点击 Visit site ,就可以看到部署的在线博客页面了。

云服务器方案(高手推荐)🫡

云服务和域名选购

国内能选择的主流云服务厂商也就三家:阿里云腾讯云华为云。自己看哪家优惠力度最大选择哪一家,值得注意的是:域名和云服务器最好选择同一家购买,避免域名备案麻烦。(备案本身就很麻烦,吐槽😒)

在创建服务器实例后,完成修改密码和打开 80 端口的操作,参考阿里云服务器80端口开通教程

创建 git 用户并配置 sudo 权限

至于怎么远程 ssh 服务器我就不讲了,我默认你会🤝。

  • 创建 git 用户。
1
sudo useradd git
  • 添加 sudo 权限
1
sudo usermod -G sudo git
  • 添加 root 权限
1
sudo vim /etc/sudoers

修改文件内容如下:

1
2
3
4
# 找到 root ALL=(ALL) ALL
root ALL=(ALL) ALL
# 在其后面添加以下内容并保存退出
git ALL=(ALL) ALL
  • 修改 git 用户密码

新建用户默认无密码,需要自己修改创建。

1
sudo passwd git

git用户登录免密操作

关于远程 ssh 的免密操作,可以看我这篇文章 【工具指南】VSCode配置远程ssh免密登录,也可以跟着我下面的操作。

在服务器的 git 用户下重新执行配置 git 开发环境

然后将本地生成的 id_rsaid_rsa.pub 内容复制替换服务器生成的 id_rsaid_rsa.pub 的内容,这一步自己操作。

个人使用,我推荐所有机器使用同一份公钥私钥。

之后执行以下操作即可完成免密登录:

1
2
3
cat id_rsa.pub >> authorized_keys
sudo chmod 600 authorized_keys
service sshd restart

测试从本地机器是否可以通过 git 用户免密登录服务器。

1
ssh git@<yourhost>

创建网站根目录

首先使用 git 用户登录服务器,之后执行:

1
2
3
cd ~
mkdir -p hexo/web/blog
sudo chown git:git -R hexo/web/blog

说明: 此为网站根目录对应的 Web 端的网站发布目录,具体放在哪里可以自行设计。

初始化 Git 裸仓库并配置自动化部署

1
2
3
4
5
cd ~
mkdir -p hexo/git
cd hexo/git
git init --bare blog.git # 需加上 --bare 参数
sudo chown git:git -R blog.git

执行完以上操作后,在 Git 仓库目录(~/hexo/git/blog.git)下,会有一个自动生成的 hooks 目录。在 hooks 目录下创建一个新的钩子 post-receive,用于自动化部署。

1
vim /home/git/hexo/git/blog.git/hooks/post-receive

在文件中添加以下内容,其中工作树目录和 Git 仓库目录要按照实际创建位置修改:

1
2
3
#!/bin/bash
# git --work-tree=<work-tree-dir> --git-dir=<git-dir> checkout -f
git --work-tree=/home/git/hexo/web/blog --git-dir=/home/git/hexo/git/blog.git checkout -f

为文件修改所属和增加可执行权限。

1
2
chown git:git /home/git/hexo/git/blog.git/hooks/post-receive
chmod +x /home/git/hexo/git/blog.git/hooks/post-receive

安装并配置 nginx

安装 nginx

1
sudo apt-get install nginx

修改 Nginx 的 default 文件使得 root 指向刚刚创建的 /var/www/hexo 目录:

1
sudo vim /etc/nginx/sites-available/default

修改 Nginx 的 nginx.conf 文件,将 user 用户改为 root 以使得 nginx 具有访问权限。

1
sudo vim /etc/nginx/nginx.conf

最后重启 nginx 服务。

1
service nginx restart

使用 git 部署本地 hexo 到服务器

打开博客根目录下的 _config.yml 文件,在该文件的最下方进行如下设置:

1
2
3
4
deploy:
- type: 'git'
repo: git@yourhost:/home/git/hexo/git/blog.git
branch: master

其中 yourhost 是你的服务器地址。

在推送到 Github 仓库之前需要安装一个插件:

1
npm install hexo-deployer-git --save

接着执行生成渲染文件并推送到服务器的操作:

1
hexo c && hexo g && hexo d

然后在您的浏览器使用 IP 进行访问。

配置域名

Github 方案配置域名

在你所购买的云服务器网站的域名解析填写主机记录记录类型记录值

  • A 记录类型

A 记录类型的主机记录是 @

A 记录类型的记录值可通过以下操作获取:

1
ping githubname.github.io # 简单点就是你之前访问的 Github 方案的默认域名

把获取的这个 IP 地址记录到 A记录类型的记录值里。

  • CNAME 记录类型

CNAME 记录类型的主机记录是 www

CNAME 记录类型的记录值是:

1
githubname.github.io # 如我的就是 wmjim.github.io

在本地的 hexo 文件中找到 source 目录(博客根目录下),并在其中添加一个没有后缀的文件 CNAME,在文件中添加域名。

在终端执行如下命令,重新生成文件并上传。

1
hexo c && hexo g && hexo d

之后在 github 的博客项目仓库的 Setting -> Pages -> Custom domain 填入你的域名。

云服务方案配置域名

云服务器方案配置域名就简单一些,只需要配置一个 A 类型,并把主机记录修改为 www 和记录值设置为你的服务器地址即可。

按照以上操作就完成了服务器的域名解析,但是云服务的方案国内是需要备案才能使用的。

TODO

域名备案操作