avatar

23.从jekyl到Hexo

0x00 前言

之前用过一段时间jekyll搭建博客,因为用的是别人写的主题,然后发现超过22篇就不显示了,然后又因为jekyll的文档是英文的,并且貌似国内用的人没有hexo多。于是趁着这个档口,就立马换成了Hexo,主题的话就使用Next。下面就记录下安装Hexo的过程以及踩过的坑吧~~

0x01 步骤说明

  1. 安装hexo步骤还是挺简单的,照着官方文档来。就是躺过的坑有点多,记录下来,避免以后再躺。下面说下步骤:
    1. 安装NodeJs
    2. 安装Hexo
    3. 安装Next主题
    4. 配置Nginx
    5. 编写后台启动脚本

0x02 安装NodeJs

  1. NodeJs官网下载对应的安装包。打开后如下图:
  2. 因为我在阿里云的服务器是Linux 64位的,所以下载的是Linux Binaries(x64)。下载后是一个tar.xz的文件。
  3. 我们上传到服务器后,使用命令:tar -xvf node-v10.15.0-linux-x64.tar.xz 解压文件到当前目录,然后使用mv node-v10.15.0-linux-x64 nodeJs 重命名为nodeJs.
  4. 解压下来,就安装好了NodeJs,下面我们使用软连接的方式把NodeJs的命令变成全局。命令如下:
    • ln -s [NodeJs解压目录]/nodeJs/bin/npm /usr/local/bin/
    • ln -s [NodeJs解压目录]/nodeJs/bin/node /usr/local/bin/
  5. 验证是否无错误,使用命令:node -v以及npm -v.如果正常,显示如下:

    至此,NodeJs环境已经安装完成了。最后,说下windows安装NodeJs,只需要下载对应的安装包,一路next即可。

0x03 安装Hexo

  1. 安装Hexo之前,确保NodeJS环境已经安装完成。确保无误后,使用命令npm install -g hexo-cli安装hexo。这里说下npm常用安装卸载命令。
    • npm install xxx:利用 npm 安装xxx模块到当前命令行所在目录;
    • npm install -g xxx:利用npm安装全局模块xxx;
    • npm install xxx:安装但不写入package.json;
    • npm install xxx –save:安装并写入package.json的”dependencies”中;
    • npm install xxx –save-dev:安装并写入package.json的”devDependencies”中。
    • npm uninstall xxx:删除xxx模块;
    • npm uninstall -g xxx:删除全局模块xxx;
  2. 安装完成后,输入hexo version,出现如下图所示,即说明安装完成
  3. 在windows上面也是执行此操作。
  4. 使用hexo新建博客,使用命令hexo init <文件夹名>,比如我这里文件夹为hexo。如图:
    • 注意:上面打印了一个错误找不到或无法加载主类 install。这个我们可以不用管,hexo其实已经初始化了。但是还是有些错误,导致hexo不能启动起来。下面我会说解决方法;
  5. 现在我们尝试着执行命令hexo server --debug来启动我们hexo。发现出现如下错误:
    • 这里它给了提示,让我们尝试执行下npm install hexo --save.那我们执行下呗。
  6. 执行完npm install hexo --save,我们再试下执行hexo server --debug
    • 发现还是有问题,上面我们执行完npm install hexo --save后,他后面提示要我们使用下npm audit fix来检查下是否缺依赖,执行下;注意,这里依赖可能有所不同
  7. 安装上面所缺的依赖。使用npm install hexo-xxxxxxx.如:
  8. 执行完后,我们再执行下hexo server --debug,使用debug模式启动我们的hexo

    • 至此,我们hexo已经搭建完成
  9. 注意:如果第一次使用hexo server --debug就启动起来了,但是访问hexo出现CanNot GET /这类错误,也是因为没有安装依赖。参见第6点解决

0x04 安装Next主题

  1. Next主题官网:Next
  2. 参照官方文档,在hexo目录下(即上面执行hexo init <文件夹>后建立的文件夹下),下面简称根目录,使用git clone https://github.com/iissnan/hexo-theme-next themes/next命令下载next主题。根据网速,可能时间会有点长。耐心等待即可。next主题文件会保存在根目录\theme\next下。执行完后如下:
  3. 去根目录下的_config.yml中找到theme修改为next,启用next主题。
  4. 先使用hexo g生成下静态资源,资源会生成在根目录\public下,再使用hexo server --debug重新启动hexo。启动后,如下:
  5. 至此,你已经换上了next主题了。主题美化请参考连接:hexo的next主题个性化教程:打造炫酷网站

0x05 编写启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
# chkconfig: 345 80 20
# description: start the hexo server
#
# Source function library

prog=startBolg
#博客的根路径
BLOG_HOME=/opt/local/hexoBlog

##################启动Hexo服务#####################
startBlog()
{
#### 获取指定进程的PID
HEXO_PID=`ps -ef | grep hexo | grep -v grep | awk '{print $2}'`
if [ ! -n "$HEXO_PID" ]; then
echo "starting hexo..."
cd $BLOG_HOME
### 使用nohup启动,这样就算关闭当前会话hexo也不会结束
nohup hexo s > output.log 2>&1 &
else
#PID不为空,则提示hexo已经运行,并且打印端口
echo "HEXO server already running.PID is $HEXO_PID"
fi
}

################停止Jekyll服务######################
stopBlog(){
echo "stoping hexo..."
#### 获取指定进程的PID,结束进程时用
HEXO_PID=`ps -ef | grep hexo | grep -v grep | awk '{print $2}'`
### 先判断pid是否为空,如果不为空就kill -9,如果为空则说明没有运行hexo
if [ ! -n "$HEXO_PID" ]; then
echo "hexo server don't run.."
else
echo "kill hexo pid is $HEXO_PID"
kill -9 $HEXO_PID
fi
}

case "$1" in
start)
startBlog
;;
stop)
stopBlog
;;
restart)
stopBlog
startBlog
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0

0x06 Butterfly主题的安装【强烈推荐】

  1. Butterfly主题github地址:Butterfly

  2. 配置文档地址:文档 or 作者博客


评论