前言

既然我想要更新博客,那么就要更新成我想要的样子。
绝对不能随随意意,要不然怎么还是我的博客呢~

我为什么要更新博客

① 旧主题

  • 旧主题还是蛮喜欢的,但是旧主题的限制,有很多不方便我编辑的操作
  • 其次,旧主题换过一次主题后,对我来讲新换的主题,我并不太喜欢。
  • 毕竟我比较喜欢简约的风格,而且功能强大的,虽然Sakura那一款的确很好,很多我用的到的,不过主题风格我真不太喜欢。

② 邮局系统

  • 这个其实不好讲,我最先以为阿里云封了我SMTP相关东西。

    其实以前阿里云封过,之前也说过2019年我搭建过博客。然后各种奇葩原因把我IMAP和SMTP相关东西封了

    后面查询在阿里云发工单查询的时候发现是正常的。那么我的视角就转移到博客上面了。
    期间后面我又换了很多个邮件服务商(包括自建邮件服务)都发现不管用,不管用了SSL以及正常。
    后面我就觉得应该是博客系统的wp-mail可能有问题了,但是我对PHP可不是特别了解嘛。
    正好赶上换主题了,所以算了吧,换一个博客系统尝试一下。

③ 新主题

  • 这个嘛,前几天我一直在找主题,发现好看的主题都在Typecho和Hexo里面,而Wordpress大部分都是商业主题和企业主题(可能我认识的人不够多)
  • 后面我已经很尽力了,Google、百度、Bing、搜狗,甚至Google海外的搜索都搜遍了,符合我品味的都在Typecho和Hexo。
  • 后面我就决定换博客系统了。

④ 系统

  • Typecho
    我以前是用过的,后面觉得不好用然后我就博客又再迁移到了Wordpress(重新回到Wordpress的怀抱)
    而且Wordpress转Typecho都挺麻烦的,因为数据库不同的原因,导入后需要各项参数的修改才能正常运行,而且设置好像要搞一大堆。

  • Hexo
    所以我就转向投入Hexo,而且Hexo我几乎没用过,也就是说我是现学现用。
    而且Hexo采用的是Node.js进行驱动的,跟我开服用的后台 MCSManager 是一样的。
    所以对Node还是有一定的了解的。
    还有通过Node渲染,Hexo采用解析MarkDown文章生成静态网页,对于动态的PHP来讲,和我网站服务器在香港的人来说,无疑特别舒服。
    毕竟网页访问可快了不少。
    嘛,当然还有Git相关(这个下面说,因为我搭建被这个搞懵了会)

前期准备

讲真,当时我害怕的要死,因为我2019年搭建的博客好歹运营了有一年多一点
然后就是因为数据没有备份到,更新某项东西吧Centos系统弄坏了(抄宝塔家去)
然后搞得我现在每次操作什么事情之前,快照走起

一定要做好备份在进行下一步操作,以防不测

Windows准备

前言我就不说了,像那些Hexo作者是台湾人啊,对中文支持很友好之类的啊,其他Google或者百度一下就出来了。

  • Windows下安装Git
  • 安装Node.js
  • 安装Hexo
  • 对于个人仓库会在下面分别说明,分别搭建个人仓库或者Github存储以及Gitee
  1. Windows下访问GitDownload下载页面(已下载可跳过)
    由于下载速度可能过慢,这里给网盘下载

    这里网盘版本均为2020-08-13下载版本,如版本过旧请官方下载,如无法下载可联系我(版本2.28.0-64)

    当你安装完毕以后,右击鼠标会出现一个Git Bash

    如果没有,重启一次电脑喵,然后就安装好了
    下面安装操作都需要这个git使用,因为原来的CMD可能有点难用。

  2. 安装Node.js
    下载Node的长期支持版(LTS)版本即可 Node官方网站
    然后随意右击打开git bash查询

    1
    2
    3
    # 分别输入
    node -v
    npm -v

    由于npm在国内比较慢,所以我们安装淘宝的cnmp镜像提高速度

    1
    2
    3
    4
    5
    # 安装指令
    npm install -g cnpm --registry=https://registry.npm.taobao.org

    # 安装完毕后查询安装是否成功
    cnpm -v

    然后我们就可以安装hexo了~

    后面搭建过程中指令与Linux相同

  3. 安装Hexo
    安装Hexo就很简单了,因为就几条代码可以搞定的事情

    先做区分,在这里讲的是后台搭建,在我这里成为后端(毕竟概念东西我也不是很清楚,反正我这里先称为后端)

    由于我们已经安装了cnpm,所以我们下面的操作npm可以替换成cnmp执行,虽然操作时候可能跟npm显示不一样
    但是基本原理相同。

    请找你存储的地方然后右键Git Bash,不要随便乱点一个文件夹Git Bash,以免后期找不到文件夹。
    好比我的在G盘目录下,右键Git Bash生成myblog文件夹

    1
    2
    3
    4
    5
    # 安装Hexo
    cnpm install -g hexo-cli

    # 查看Hexo是否安装成功
    hexo -v

    上面操作完后,那么hexo就是安装成功了,这个成功不是另一种意义上的成功
    然后我们安装Hexo(博客)

    1
    2
    3
    4
    5
    6
    7
    8
    # 初始化Hexo,也就是下载Hexo必要程序
    hexo init myblog

    # 进入文件夹(也就是你hexo init后面的一部分)
    cd myblog

    # 执行安装
    npm install

    这样在你的文件夹下基本博客系统已经安装成功了。
    启动博客

    1
    2
    hexo g
    hexo server

    然后看见下方出现 http://localhost:4000 代表可以访问了

    然后试试访问你的博客吧~

Linux准备

前言我就不说了,像那些Hexo作者是台湾人啊,对中文支持很友好之类的啊,其他Google或者百度一下就出来了。

  • Linux下安装Git
  • 安装Node.js
  • 安装Hexo
  • 对于个人仓库会在下面分别说明,分别搭建个人仓库或者Github存储以及Gitee
  1. Linux下载Git

    Linux安装git就特别简单了~因为以前的git就是在Linux上面编写的┗|`O′|┛ 嗷~~

    1
    2
    3
    4
    5
    6
    7
    8
    # Ubuntu安装方法
    sudo apt-get install git

    # Centos安装方法
    yum -y install git

    # 查询安装
    git --version

    然后查询安装是否成功

  2. 安装Node.js

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ##### Ubuntu安装方法
    sudo apt-get install nodejs
    sudo apt-get install npm
    # 测试是否安装正常,显示 v12.16.1 则为正常
    node -v

    ##### Centos安装方法(保险)
    sudo -y install wget
    # 安装 Node 版本控制工具(若没有 wget,请安装它)
    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

    # 请关闭终端重新打开或重新连接终端 再依次执行以下命令(十分重要,不然不能继续操作)

    # 重新打开后执行
    nvm install 12.16.1
    # 使用安装的版本
    nvm use 12.16.1
    # 测试是否安装正常,显示 v12.16.1 则为正常
    node -v

    安装国内镜像源cnpm

    由于npm在国内比较慢,所以我们安装淘宝的cnmp镜像提高速度

    1
    2
    3
    4
    5
    # 安装指令
    npm install -g cnpm --registry=https://registry.npm.taobao.org

    # 安装完毕后查询安装是否成功
    cnpm -v
  3. 安装Hexo
    安装Hexo就很简单了,因为就几条代码可以搞定的事情

    先做区分,在这里讲的是后台搭建,在我这里成为后端(毕竟概念东西我也不是很清楚,反正我这里先称为后端)

    由于我们已经安装了cnpm,所以我们下面的操作npm可以替换成cnpm执行,虽然操作时候可能跟npm显示不一样
    但是基本原理相同。

    请找你存储的地方,可以mkdir创建指定路经文件夹后cd进入。或者Ftps进行创建文件夹操作

    1
    2
    3
    4
    5
    # 安装Hexo
    cnpm install -g hexo-cli

    # 查看Hexo是否安装成功
    hexo -v

    上面操作完后,那么hexo就是安装成功了,这个成功不是另一种意义上的成功
    然后我们安装Hexo(博客)

    1
    2
    3
    4
    5
    6
    7
    8
    # 初始化Hexo,也就是下载Hexo必要程序
    hexo init myblog

    # 进入文件夹(也就是你hexo init后面的一部分)
    cd myblog

    # 执行安装
    npm install

    这样在你的文件夹下基本博客系统已经安装成功了。
    启动博客

    1
    2
    hexo g
    hexo server

    然后看见下方出现 http://localhost:4000 代表可以访问了

    然后试试访问你的博客吧~

现在使用 Ctrl+C 关闭博客吧
那么上面搭建完毕后基本准备已经完成了,可以正式开始写博客和上传的操作了

搭建个人仓库

然后我们需要搭建个人仓库,用来存放用户访问的数据,也就是你的Hexo文件夹下输入 hexo g 生成的 public 文件夹
这里面就像你搭建静态网页一样,我们用Hexo编写md文件编译后就会输出public的静态网页文件。
我们就要依赖git来自动部署
除非你能做到每次更新后手动上传public,那我没话说

搭建时候看清楚,不要打错字了,对于仓库信息要仔细核对

我搭建时候是本地仓库,因为我不喜欢部署在公开代码的仓库

Github仓库

基本过程

  • Github创建个人仓库
  • 生成SSH添加到Github
  • 将hexo的public目录下部署在Github
  1. 新建仓库
    登录Github后,看到New,添加新的仓库

    之后创建一个与你用户名相同的仓库,例如下图所示

    然后将 Initialize this repository with a README 打上勾,如果你不想先上传一个README.md
    最后创建即可

  2. 生成SSH添加到Github

    1
    2
    git config --global user.name "yourname"
    git config --global user.email "youremail"

    这里的yourname输入你的GitHub用户名,youremail输入你GitHub的邮箱。这样GitHub才能知道你是不是对应它的账户。
    可以用以下两条,检查一下你有没有输对

    1
    2
    git config user.name
    git config user.email

    确认无误后就可以创建SSH了,一路回车按下去就好了(不用设置什么密码)

    1
    ssh-keygen -t rsa -C "youremail"

    然后SSH密钥就生成成功了,然后可以根据提示来找到.ssh生成的路径(你要找到它哦)

    ssh,简单来讲,就是一个秘钥,其中,id_rsa是你这台电脑的私人秘钥,不能给别人看的,id_rsa.pub是公共秘钥,可以随便给别人看。把这个公钥放在GitHub上,这样当你链接GitHub自己的账户时,它就会根据公钥匹配你的私钥,当能够相互匹配时,才能够顺利的通过git上传你的文件到GitHub上。
    而后在GitHub的setting中,找到SSH keys的设置选项,点击New SSH key
    把你的id_rsa.pub里面的信息复制进去。

    采自:zjufangzh的CSDN博文

    1
    2
    # 查询是否成功
    ssh -T git@github.com
  3. 将hexo的public目录下部署在Github
    打开Hexo目录下创建的myblog找到文件_config.yml拉到最下面修改下列信息

    1
    2
    3
    4
    deploy:
    type: git
    repo: https://github.com/Name/Name.github.io.git
    branch: master

    例如:下图所示

    然后需要配置deploy-git,不然没有办法部署到github或者gitee上面,以及个人仓库

    1
    2
    3
    4
    npm install hexo-deployer-git --save

    # 然后更新
    hexo clean && hexo g && hexo d

    注意deploy(hexo d)时可能要你输入username和password。
    就会同步到Github,然后打开你的Github就能看到对应的内容

    然后稍微过一会,就可以在http://name.github.io网站看到你的博客了~

Gitee仓库

要不你看Github搭建吧,反正是一样的。同样的东西我就不写两遍了哈

本地仓库

搭建在本地仓库

由于我是在Linux上面搭建,所以这篇教程适用Linux(Centos),Windows用户请酌情尝试,请做好对应备份操作。

  • 创建仓库
  • 将hexo的public目录下部署在仓库内
  1. 创建仓库
    安装git

    1
    yum -y install git

    创建一个git的用户

    1
    adduser git

    添加证书登录(为了防止每次push都需要输入密码这个操作)
    把在在本地创建或者已经拥有的公钥,也就是 ~/.ssh/id_rsa.pub 文件里的内容添加到服务器的 /home/git/.ssh/authorized_keys 文件中,如上所说,添加公钥之后可以防止每次 push 都输入密码。

    初始化 Git 仓库
    可以将git仓库放到自定义位置,本次操作是在 /var/repos/myblog.git 目录下的

    1
    2
    3
    sudo mkdir /var/repos
    cd /var/repos
    sudo git init --bare myblog.git

    使用 —bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

    配置 git hooks

    我们这里要使用的是 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行,关于 hooks
    的详情内容可以参考这里

    在 blog.git/hooks 目录下新建一个 post-receive 文件

    1
    vim /var/repos/myblog.git/hooks/post-receive

    在 post-receive 文件中写入如下内容

    1
    2
    3
    #!/bin/sh

    git --work-tree=/home/www/myblog --git-dir=/var/repos/myblog.git checkout -f

    /home/www/myblog 要换成你自己的部署目录,我的配置目录是 /home/www/myblog/var/repos/myblog.git 是git仓库的位置。
    上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到 自动部署 的目的了。

    书写后按下Esc+输入:wq保存文件
    设置这个文件的可执行权限

    1
    chmod +x /var/repos/myblog.git/hooks/post-receive

    改变 myblog.git 目录的拥有者为 git 用户

    1
    sudo chown -R git:git myblog.git

    然后我们需要创建/home/www/myblog目录下文件,不然上传时候不会自动创建文件

    1
    mkdir /home/www/myblog

    禁用 git 用户的 shell 登录权限

    出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现

    1
    vim /etc/passwd
    1
    2
    3
    4
    5
    # 找到此项
    git:x:1001:1001:,,,:/home/git:/bin/bash

    # 修改为
    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

    这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 shell。
    至此,服务器环境的搭建已经基本结束。

  2. 将hexo的public目录下部署在仓库内

    修改 hexo 目录下的 _config.yml 找到 deploy

    1
    2
    3
    4
    deploy:
    type: git
    repo: git@check.xiaolfeng.xyz:/var/repos/myblog.git
    branch: master

    repo 的地址为你自己的地址以及 git 仓库目录

    最后~我们的 hexo 自动部署已经全部配置好了

  3. 开始使用
    新建文章来测试

    1
    hexo new "post name"

    生成 & 部署

    1
    hexo clean && hexo g && hexo d

    然后就部署完毕了~

绑定个人域名

Github绑定

Github绑定也很简单,下面是Github的IP,需要在域名DNS服务商那里修改A记录改成下面的IP

1
2
3
# Github的地址
192.30.252.153
192.30.252.154

注意,解析线路选择默认

登录GitHub,进入之前创建的仓库,点击settings,设置Custom domain,输入你的域名 XXXXXX.XXX

然后在你的博客文件source中创建一个名为CNAME文件,不要后缀。写上你的域名(跟上图一样)。

最后,在git bash中,输入

1
hexo clean && hexo g && hexo d

过不了多久,再打开你的浏览器,输入你自己的域名,就可以看到搭建的网站啦!
对于网站不安全之类的东西,请百度解决,这里不做详细解释,因为我不是用Github来搭建这个博客的。

私有仓库绑定

如果你使用我的方法来搭建私有仓库的话,那么会十分简单,而且操作不用那么复杂

本项目搭建于Centos(Linux),Windows用户请酌情复制,建议备份后按需执行

还是一样需要绑定DNS记录,这个绑定到你的私有仓库的服务器就好了
然后在这里建议小白安装宝塔之类的,一键操作不香嘛。
宝塔安装 宝塔官网
首先在在服务器输入下面指令开始安装宝塔

1
2
3
4
5
# Centos安装指令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

# Ubuntu安装指令
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh

后面等说是否继续安装按下 y 然后执行安装。
然后我们去泡一杯咖啡等待一下吧,如果是大型服务商(或者配置好的服务器主机)那么,应该会特别快,大概一分钟就好了

部分服务商可能默认没有开放防火墙,注意看需要的端口开放哦

输入密码后进去,就会选择叫你安装一个LAMP等安装,随意选择哪一个都可以,然后一键安装
稍后就是漫长(看服务器配置)的等待了。

安装完毕后,点击网站→添加站点[绿色标识]→输入你之前DNS服务商解析的域名,然后修改根目录

根目录请修改成,你自己的部署目录
详情见上搭建私有仓库(Danger危险符号)标识

然后创建即可,不需要创建FTP和数据库,hexo不需要用到数据库。
然后输入域名尽情访问吧~

博客更新了有几个不可逆

这是我搭建博客时候也注意到了,但是没办法我想换就必须换。
就是你的 阅读量评论 在进行博客迁移的时候不会过来。

怎么说呢,就是Hexo不自带评论,评论是依赖外部引擎。
所以嘛,博客的所有评论就会消失不见。

然后就是阅读量,阅读量在导出Wordpress的xml文件不带,而且导入不支持数据库导入,所以根本没有办法导入阅读量
唯一的办法,自己刷你要是有时间的话,反正我是没有,还不如等你们重新慢慢看一遍,哈哈哈屮。

其中还有百度自动收录,Google自动收录我还没玩明白,暂时没有添加进去。
也就是说百度和Google能搜到的,还没有下架处理的网站都是404,找不到网页。
因为博客的链接方式也全变了。
目前链接采用的是 www.xiaolfeng.xyz + ID + .html

还有CDN方式,原来我的CDN部署的是Nginx的SSL密钥。而服务器部署的是Apache的密钥,在正常访问原来的Wordpress没有什么问题,然后到Hexo就会发现证书不一致
判定为不安全。
所以就把服务器的Apache换成了Nginx也就是LNMP环境。
然后基本没有什么问题了。