一、前言

现在使用markdown写东西比较多,所以决定弃掉之前自己用java写的一个blog网站,改用hexo。

二、开始

1、安装git以及node

# 安装git
yum install git
# 安装node
cd /usr/local/download
# node下载安装包
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz
# 解压xz文件
xz -d node-v10.15.3-linux-x64.tar.xz
# 解压tar文件
tar xvf node-v10.13.0-linux-x64.tar.xz
tar -xf node-v10.15.3-linux-x64.tar
# mv
mv node-v10.15.3-linux-x64 ../node
# 建立软连接,可以全局使用node、npm命令
ln -s /usr/local/node/bin/node /usr/bin/node
ln -s /usr/local/node/bin/npm /usr/bin/npm

# 卸载npm
npm uninstall npm -g
yum remove nodejs npm -y  

2、安装hexo

hexo官网:https://hexo.io/zh-cn/docs/

# 安装
npm install -g hexo-cli
# 建立软连接
ln -s /usr/local/node/lib/node_modules/hexo-cli/bin/hexo /usr/local/bin/hexo
# 建立hexo目录
hexo init <folder>
cd <folder>
npm install

hexo常用命令

# 生成静态文件
hexo g
# 启动服务器,默认端口4000
# -p 重设端口
hexo s
# 清除缓存文件 (db.json) 和已生成的静态文件 (public)
hexo clean

3、安装hexo-admin

hexo-admin官网:https://jaredforsyth.com/hexo-admin/

# 在安装hexo目录的位置安装
npm install --save hexo-admin

经过以上步骤执行hexo s后,访问4000端口就可以看到hexo网站了,这里我们首先配置一下hexo-admin,
访问http://localhost:4000/admin/,进入setting菜单,点击 Setup authentification here 可以设置admin的账号密码,然后将对应的信息复制到_config.yml文件中,如下

# hexo-admin authentification
admin:
  username: username
  password_hash: $2a$10$L.XAIqIWgTc5S1zpvV3MEu7/rH34p4Is/nq824smv8EZ3lIPCp1su
  secret: my super secret phrase
  deployCommand: './hexo-generate.sh'

接下来我们配置一个脚本,可以让我们在发布一篇新的文章之后利用hexo-admin手动生成静态文件

# 创建脚本
touch hexo-generate.sh;
vim hexo-generate.sh;

# 脚本内容
#!/usr/bin/env sh
hexo g

# 执行权限
chmod +x hexo-generate.sh

现在,我们就可以使用hexo-admin在线进行文章的发布了。

4、安装pm2

pm2可以用来管理node应用,接下来安装pm2来对hexo进行管理。

安装pm2
npm  install -g pm2
建立软连接
ln -s /usr/local/node/lib/node_modules/pm2/bin/pm2 /usr/local/bin/pm2

在刚刚的hexo目录下创建run.js脚本文件,内容如下

const { exec } = require('child_process')
exec('hexo server',(error, stdout, stderr) => {
        if(error){
                console.log('exec error: ${error}')
                return
        }
        console.log('stdout: ${stdout}');
        console.log('stderr: ${stderr}');
})

相关命令

# 启动
pm2 start run.js
# 停止所有的应用程序
pm2 stop all
# 停止 id为 0的指定应用程序
pm2 stop 0
# 重启所有应用
pm2 restart all

5、更换主题

可参考 https://github.com/guoxwOvO/hexo-theme-rabb

下面是我更换主题时遇到的一些问题:(centos7)

1、报没有权限

gyp ERR! stack Error: EACCES: permission denied, mkdir ‘/usr/local/hexo/node_modules/node-sass/.node-gyp’

sudo npm install hexo-renderer-scss --save`

2、报 /usr/bin/env: node: No such file or directory 则需将node以及npm的可执行文件链接到/usr/bin下

ln -s /usr/local/node/bin/node /usr/bin/node
ln -s /usr/local/node/bin/npm /usr/bin/npm