• nodejs:用来安装 hexo
  • hexo:用来写博客
  • git:用来推送博客到 github 或者云服务器上

首先安装 nodejs

去 NodeJs 官网下载最新的 LST 版本:https://nodejs.org/en/,下载解压之后,把 nodejs 的 bin 目录添加到环境变量,这样就可以使用 npm 命令了。

# 设置npm镜像源为淘宝源,保证下载速度
npm config set registry https://registry.npmmirror.com

# 安装hexo
npm install hexo-cli -g

安装完成之后,就可以使用 hexo 来写博客了

开始写博客

  • 初始化博客
# 新建一个文件夹blog,作为博客目录
mkdir blog
# 进入blog文件夹
cd blog
# 使用init命令之后,就会在blog目录下自动生成一堆配置文件
hexo init blog
  • 新建一篇文章

source/_posts目录下,新建一个 markdown 文件,就是一篇博客,也可以用命令来新建 markdown 文件,这样会自动生成一些配置,不然自己写也无所谓。

hexo new "My New Post"
  • 预览博客效果
# 1.生成静态网页
hexo g

# 2.开启本地服务
hexo s

# 访问http://localhost:4000

更换博客主题

刚才生成的博客是默认的主题,你可以修改成自己觉得好看的主题。

  1. 可以在hexo官网查看自己喜欢的主题
  2. 通过git clone URL 将主题克隆到本地,把主题文件放到themes文件夹下。
  3. 修改 blog/_config.yml 中的theme:xxx ,xxx 改成 themes 文件夹下的主题名字

4.发布博客到云服务器

服务器端的操作

1.安装 git、nginx

sudo apt install nginx git -y

2.添加一个 git 用户

useradd git
passwd git

# 给git用户配置sudo权限
chmod 740 /etc/sudoers
vim /etc/sudoers
# 找到root ALL=(ALL) ALL,在它下方加入一行
git ALL=(ALL) ALL
chmod 400 /etc/sudoers

3.在服务器上创建 git 仓库,并使用 git-hooks 实现自动部署

# 新建git仓库保存的目录
sudo mkdir -p /var/repo

# 初始化一个git仓库
cd /var/repo
sudo git init --bare blog.git #创建一个名叫blog的仓库,其实就是一个远程仓库

# 新建网站数据存放的目录
sudo mkdir pp /var/www/hexo
  • 修改 post-update 文件
sudo vim /var/repo/blog.git/hooks/post-update

修改内容如下:

#!/bin/bash

# --work-tree=这里指定网站的根目录
# --git-dit=这里指定git仓库目录
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

这样修改之后,只要你用 git 推送到blog.git远程仓库,就会触发 post-update,执行的动作就是把这个仓库的内容复制到网站的根目录的,从而达到自动更新的目。

在使用命令hexo deploy时,其实是把 public 文件夹推送到blog.git这个远程仓库。

配置 nginx

cd /etc/nginx/conf.d/
vim blog.conf

blog.conf内容修改如下

server {
    listen    80 default_server;
    listen    [::] default_server;
    server_name    你的域名;
    root    网站根目录的绝对路径
}

检查 Nginx 语法并重载 nginx:

# 检查
nginx -t
# 重载
nginx -s reload

客户端的操作

a.安装 git 推送插件

不安装插件,会推送不出去。

npm install hexo-deployer-git --save

b.配置 Hexo

即设置你要推送到的远端地址。
修改blog/_config.yml

deploy:
  type: git # git方式推送
  repo: git@github.com:xxx/xxx.github.io.git # 格式: 用户名@服务器地址(或者域名):git仓库的绝对路径
  branch: master # 默认是master分支

c.配置 ssh 免密登录(可选,推荐)

给客户端配置免密登录,是为了推送的时候不用每次都输入密码。如果不嫌麻烦,可以跳过这一步,推送的时候手动输入密码就行

# 一下步骤在,在客户端上操作,先生成公钥
ssh-keygen -t rsa

# 把公钥复制到服务器上
ssh-copy-id -i ~/.ssh/id_rsa.pub  用户名@服务器地址

# 验证,用ssh连接,如果不需要输入密码说明配置免密登录成功

d.推送服务器

hexo d # 输入这个命令,就可以把当前生成的博客文件推送到远程仓库了,主要是把public目录推送出去

其它

域名绑定

source文件夹下新建名字叫CNAME的文件,无任何后缀,在里面写上你购买的域名,即可。

常用命令

hexo g && hexo d # 生成博客页面,然后推送到远程仓库
hexo clean && hexo g && hexo s # 清理之前生成的文件,重新生成新文件,开启本地预览服务
hexo clean && hexo g && hexo d # 清理之前生成的文件,重新生成新文件,推送到远程服务器