博客更新-迁移博客至Hexo的艰辛

2022-03-16 15:53:22 浏览数 (1)

前言

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

我为什么要更新博客

①旧主题
  • 旧主题还是蛮喜欢的,但是旧主题的限制,有很多不方便我编辑的操作
  • 其次,旧主题换过一次主题后,对我来讲新换的主题,我并不太喜欢。
  • 毕竟我比较喜欢简约的风格,而且功能强大的,虽然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准备
  • Linux准备

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

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

Windows下访问GitDownload下载页面(已下载可跳过) 由于下载速度可能过慢,这里给网盘下载

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

  • Git For Windows官方下载 点击下载
  • Git For Windows 私有网盘下载 点击下载
  • Git For Windows 蓝奏云下载 点击下载
  • Git For Windows 百度网盘下载(提取码 so2p) 点击下载 当你安装完毕以后,右击鼠标会出现一个Git Bash

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

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

代码语言:javascript复制
# 分别输入
node -v
npm -v

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

代码语言:javascript复制
# 安装指令
npm install -g cnpm --registry=https://registry.npm.taobao.org

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

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

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

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

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

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

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

代码语言:javascript复制
# 安装Hexo
cnpm install -g hexo-cli

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

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

代码语言:javascript复制
# 初始化Hexo,也就是下载Hexo必要程序
hexo init myblog

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

# 执行安装
npm install

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

代码语言:javascript复制
hexo g
hexo server

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

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

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

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

Linux下载Git

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

代码语言:javascript复制
#Ubuntu安装方法
sudo apt-get install git

# Centos安装方法
yum -y install git

# 查询安装
git --version

然后查询安装是否成功

安装Node.js

代码语言:javascript复制
##### 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镜像提高速度

代码语言:javascript复制
# 安装指令
npm install -g cnpm --registry=https://registry.npm.taobao.org

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

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

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

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

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

代码语言:javascript复制
# 安装Hexo
cnpm install -g hexo-cli

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

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

代码语言:javascript复制
# 初始化Hexo,也就是下载Hexo必要程序
hexo init myblog

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

# 执行安装
npm install

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

代码语言:javascript复制
hexo g
hexo server

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

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

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

搭建个人仓库

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

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

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

  • Github仓库
  • Gitee仓库
  • 本地仓库

基本过程

  • Github创建个人仓库
  • 生成SSH添加到Github
  • 将hexo的public目录下部署在Github

新建仓库 登录Github后,看到New,添加新的仓库

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

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

生成SSH添加到Github

代码语言:javascript复制
git config --global user.name "yourname"
git config --global user.email "youremail"

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

代码语言:javascript复制
git config user.name
git config user.email

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

代码语言:javascript复制
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博文

代码语言:javascript复制
# 查询是否成功
ssh -T git@github.com

将hexo的public目录下部署在Github 打开Hexo目录下创建的myblog找到文件_config.yml拉到最下面修改下列信息

代码语言:javascript复制
deploy:
    type: git
    repo: https://github.com/Name/Name.github.io.git
    branch: master

例如:下图所示

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

代码语言:javascript复制
npm install hexo-deployer-git --save

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

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

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

搭建在本地仓库

由于我是在Linux上面搭建,所以这篇教程适用Linux(Centos),Windows用户请酌情尝试,请做好对应备份操作。 * 创建仓库 * 将hexo的public目录下部署在仓库内

创建仓库 安装git

代码语言:javascript复制
yum -y install git

创建一个git的用户

代码语言:javascript复制
adduser git

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

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

代码语言:javascript复制
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 文件

代码语言:javascript复制
vim /var/repos/myblog.git/hooks/post-receive

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

代码语言:javascript复制
#!/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保存文件 设置这个文件的可执行权限

代码语言:javascript复制
chmod  x /var/repos/myblog.git/hooks/post-receive

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

代码语言:javascript复制
sudo chown -R git:git myblog.git

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

代码语言:javascript复制
mkdir /home/www/myblog

禁用 git 用户的 shell 登录权限

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

代码语言:javascript复制
vim /etc/passwd
代码语言:javascript复制
# 找到此项
git:x:1001:1001:,,,:/home/git:/bin/bash

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

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

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

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

代码语言:javascript复制
deploy:
    type: git
    repo: git@check.xiaolfeng.xyz:/var/repos/myblog.git
    branch: master

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

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

开始使用 新建文章来测试

代码语言:javascript复制
hexo new "post name"

生成 & 部署

代码语言:javascript复制
hexo clean && hexo g && hexo d

然后就部署完毕了~

绑定个人域名

  • Github绑定
  • 私有仓库绑定

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

代码语言:javascript复制
# Github的地址
192.30.252.153
192.30.252.154

注意,解析线路选择默认

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

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

最后,在git bash中,输入

代码语言:javascript复制
hexo clean && hexo g && hexo d

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

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

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

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

代码语言:javascript复制
# 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环境。 然后基本没有什么问题了。

0 人点赞