一、安装新版本的nodejs和npm

安装n模块:

  1. npm install -g n

升级node.js到最新稳定版

  1. n stable

二、安装hexo

note: 参考github,不要去其官网: https://github.com/hexojs/hexo

安装Hexo

  1. npm install hexo-cli -g

Setup your blog

  1. hexo init blemesh
  2. cd blemesh

安装Cactus主题,众多开源主题中比较简洁的一个:

主题页: https://hexo.io/themes/

Cactus页: https://github.com/probberechts/hexo-theme-cactus

  1. git clone https://github.com/probberechts/hexo-theme-cactus.git themes/cactus

修改主题配置:

  1. vim _config.yml
  2. # Extensions
  3. ## Plugins: https://hexo.io/plugins/
  4. ## Themes: https://hexo.io/themes/
  5. ## theme: landscape
  6. theme: cactus
  7. theme_config:
  8. colorscheme: white

Create pages and articles with the hexo new [layout] <title> command. For example, to create an "about me" page, run:

  1. hexo new page about

This will create a new file in source/about/index.md Similary, you can create a new article with

  1. hexo new post "hello world"

and add some interesting content in source/_posts/hello-world.md.


Start the server:

  1. hexo server

8001 port:

  1. hexo server -p 8001

三、安装hexo-admin并配置

安装:

  1. npm install --save hexo-admin

打开目录下的_config.yml配置hexo-admin:

  1. admin:
  2. username: XXXX(自己设置用户名)
  3. password_hash: XXXXXXXXX(密码,但是是明文经过bcrypt hash加密后生成的)
  4. secret: hey hexo(用于cookie安全)
  5. deployCommand: './admin_script/hexo-generate.sh'(调用该脚本)

注:

1)其中password_hash是你自己的明文密码经过加密后的字符串,但是如果用类似下面的网址: https://bcrypt-generator.com/ 会生成:$2y$10$pJjIxxxxxfMn9U/xxxxxNuuA20kh1eoB7vZxxxxx/7WpeV7IOxxxx类似的加密串,但是运行会报invalid salt revision错误,其原因是:

  1. blemesh cat node_modules/hexo-admin/www/bundle.js | head -4851 | tail -10
  2. if (salt.charAt(0) != '$' || salt.charAt(1) != '2')
  3. throw "Invalid salt version";
  4. if (salt.charAt(2) == '$')
  5. off = 3;
  6. else {
  7. minor = salt.charAt(2);
  8. if (minor != 'a' || salt.charAt(3) != '$')
  9. throw "Invalid salt revision";
  10. off = 4;
  11. }

需要版本号是2a的加密方式,因此只能用python自己写了:

https://pypi.org/project/bcrypt/3.1.0/

  1. >>> hashed = bcrypt.hashpw(password, bcrypt.gensalt(prefix=b"2a"))
  2. >>> print(hashed)
  3. b'$2a$12$PAoJr3USOBxxxxxxxxxxxxxxV/.h.QNbh/6q.xxxxxxxxxxxxxxxxcDcJ.'

2)其中配置中有个脚本: ./admin_script/hexo-generate.sh 需要自己创建:

  1. blemesh cat admin_script/hexo-generate.sh
  2. hexo g
  3. blemesh chmod +x admin_script/hexo-generate.sh

这个脚本有什么用,啥时候触发?可以参考: https://www.jianshu.com/p/68e727dda16d step 5,admin后台管理博客有个deploy按钮,点击这个按钮就会执行这个脚本,该脚本会将md文件生成静态网页,如果用nginx配置去访问静态网页,速度会快很多。


四、nginx配置

配置nginx:编辑 /etc/nginx/nginx.conf 插入下面代码:

  1. server {
  2. listen 3001;
  3. server_name www.beautifulzzzz.com;
  4. index index.html index.htm index;
  5. root /root/App/blemesh/public;
  6. }

之后重启nginx:nginx -s reload

注:

执行nginx后会报错误:nginx 403 Forbidden,原因是配置文件nginx.conf文件的执行用户和当前用户不一致导致的,把之前的nobody改成当前用户root。再有错误可以参考[7] [8]


五、增加tag

hexo主页下的tag标签、category标签无显示找不到:

  • 解决办法: 在主目录下执行 hexo new page "tags"或者hexo new page "category"
  • 在/source/tags/index.md中设置修改
  1. blemesh cat ./source/tags/index.md
  2. ---
  3. type: "tags"
  4. comments: false
  5. date: 2019-02-24 02:53:03
  6. ---
  • 同理categories:
  1. blemesh cat ./source/category/index.md
  2. ---
  3. type: "category"
  4. comments: false
  5. date: 2019-02-24 02:53:34
  6. ---
  • 或者about me:
  1. blemesh cat ./source/about/index.md
  2. ---
  3. title: about
  4. type: "about-me"
  5. comments: false
  6. date: 2019-02-22 00:09:58
  7. ---

六、后台启动

hexo server进程一直在后台运行的办法(执行hexo server -d &在一段时间后会停止hexo,此时无法打开后台),采用pm2接管hexo进程:

  1. npm install -g pm2

在博客的根目录下创建一个hexo_run.js的文件,文件内容如下:

  1. blemesh cat hexo_run.js
  2. const { exec } = require('child_process')
  3. exec('hexo server -p 8001 -d',(error, stdout, stderr) => {
  4. if(error){
  5. console.log('exec error: ${error}')
  6. return
  7. }
  8. console.log('stdout: ${stdout}');
  9. console.log('stderr: ${stderr}');
  10. })

运行开启命令: pm2 start hexo_run.js

最后附上 zhouwaiqiang 写的一个hexo重启脚本restart_hexo.sh(需要先配置好nginx),需要重启刷新的时候执行source restart_hexo.sh即可:

  1. blemesh cat restart_hexo.sh
  2. #!/bin/bash
  3. PROCESS=`ps -ef|grep hexo|grep -v grep|grep -v PPID|awk '{ print $2 }'`
  4. PROC_NAME="pm2"
  5. for i in $PROCESS
  6. do
  7. echo "Kill the $1 process [ $i ]"
  8. kill -9 $i
  9. done
  10. hexo clean #清除数据
  11. hexo generate #生成静态文件public文件夹
  12. ProcNumber=`ps -ef |grep -w $PROC_NAME|grep -v grep|wc -l`
  13. if [ $ProcNumber -le 0 ];then
  14. pm2 start hexo_run.js
  15. else
  16. pm2 restart hexo_run.js
  17. fi
  18. service nginx restart

七、体验




: 完~
大家觉得不错,可以点推荐给更多人~

LINKS

[1]. linux下在线升级nodejs

[2]. hexo github

[3]. Cactus theme

[4]. hexo documentation

[5]. Error: EACCES: permission denied, mkdir '......node-sass/build'错误解决方案

[6]. bcrypt加密算法

[7]. nginx 403 Forbidden错误的原因和解决方法

[8]. Failed to start A high performance web server and a reverse proxy server 错误提示

[9]. 重要-hexo搭建个人博客完整版

[10]. 如何优雅地发布Hexo博客


  1. @beautifulzzzz
  2. 以蓝牙技术为基础的的末梢无线网络系统架构及创新型应用探索!
  3. 领域:智能硬件、物联网、自动化、前沿软硬件
  4. 博客:https://www.cnblogs.com/zjutlitao/
  5. 园友交流群|微信交流群:414948975|园友交流群

[Node.js] 3、搭建hexo博客的更多相关文章

  1. 用Node.JS+MongoDB搭建个人博客(页面模板)(五)(结束)

    <差不多先生> 我是差不多先生,我的差不多是天生.也代表我很天真,也代表我是个闲人.这差不多的人生,总是见缝插针. 求学的道路上总是孤独的,即使别人不理解我,认为我是奇葩!但没关系,我会坚 ...

  2. 用Node.JS+MongoDB搭建个人博客(成品展示)

    在博客里可以随意畅写和分享自己喜欢的技术,和网友分享知识也是一种提升.根据自己所发表的博客也能更加加深印象. 与此同时写博客也可以提高自己的写作能力(虽然不咋地),但我相信博客只会越写越有质量的. 博 ...

  3. 用Node.JS+MongoDB搭建个人博客(万众期待的router.js)(四)

    万众期待的router.js,是我现在最想写的一个博客.因为他包含了整个个人博客的精髓.在这里,所有的请求配置,返回的参数等等所做的业务逻辑都在这个文件里实现. 我会详细说明这些代码的作用,所以这篇博 ...

  4. 用Node.JS+MongoDB搭建个人博客(安装环境)(一)

    Node.JS是什么? Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效. Nod ...

  5. 用Node.JS+MongoDB搭建个人博客(app.js接口文件)(二)

    app.js的GitHub地址:用力戳我然后点个star 说个题外话,THINKPHP是通过一个index.php来引入文件,所以被称为接口文件. 而NodeJS也有这样的接口文件,通常也会放在根目录 ...

  6. 用Node.JS+MongoDB搭建个人博客(model目录)(三)

    model目录主要是封装一些经常使用的方法,便于使用. setting.js文件: 很简单,就单单封装了一个url作为公用,以后改就方便改了. md5.js(不推荐用): db.js文件: db.js ...

  7. 史上最详细“截图”搭建Hexo博客并部署到Github

    http://jingyan.baidu.com/article/d8072ac47aca0fec95cefd2d.html 大家也搭建过博客,很多时候,按着教程来做就可以了,但是我当时为了搭建Hex ...

  8. 史上最详细“截图”搭建Hexo博客——For Windows

    http://angelen.me/2015/01/23/2015-01-23-%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86%E2%80%9C%E6%88 ...

  9. 阿里云VPS搭建Hexo博客

    最近买了一个阿里云服务器,准备写自己的网站,和将自己的作品放在上面:开始的时候,感觉就一个服务器应该很简单,但是从申请域名到备案,再到服务器搭建,没想到一波三折:闲话不多说,只是记录我在搭建时,最简单 ...

  10. 树莓派搭建 Hexo 博客(一)

    Hexo 一个开源的博客框架,本文记录了一下在树莓派上搭建 Hexo 博客的过程. 什么是 Hexo? Hexo 是一个快速.简洁且高效的博客框架.Hexo 使用 Markdown(或其他渲染引擎)解 ...

随机推荐

  1. hdu 5083 有坑+字符串模拟水题

    http://acm.hdu.edu.cn/showproblem.php?pid=5083 机器码和操作互相转化 注意SET还要判断末5位不为0输出Error #pragma comment(lin ...

  2. centos7安装mantis

    安装mantis的步骤如下: 1. 安装apache, mysql等必要软件 1 #yum update 2 #yum install httpd php php-pdo php-mysql php- ...

  3. CentOS中自动加载802.1q模块

    要想在CentOS中自动加载内核模块,需要在/etc/sysconfig/modules/目录中增加一个脚本,在此脚本中加载所需的模块. 下面是我所用的一个名为8021q.modules的脚本,用来在 ...

  4. eclipse 离线安装插件报cannot perform operation.Computing alternate solutions...解决办法

    当不能连接外网,离线安装SVN插件时,可能会发现以下问题:eclipse长时间停留在下图所示状态,提示“cannot perform operation.Computing alternate sol ...

  5. matlab 中fft的用法

    一.调用方法X=FFT(x):X=FFT(x,N):x=IFFT(X);x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1)函数FFT返回值的数据结构具有对称性. 例:N=8;n=0:N- ...

  6. .net图表之ECharts随笔06-这才是最简单的

    今天搞柱形图的时候,发现了一个更简单的用法.那就是直接使用带all的那个js文件 基本步骤: 1.为ECharts准备一个具备大小(宽高)的Dom 2.ECharts的js文件引入(echarts-a ...

  7. Python 常用的内置函数

    1. str.isdigit( ) 作用:检测字符串是否有数字组成 2. strip( ) 作用:除去首尾指定的字符,包括空格,换行符,不能除去中间的字符 3. slice( ) 作用:以指定参数切割 ...

  8. JavaScript对象与JSON字符串的相互转换

    JSON(JavaScript Object Notation) 是JavaScript编程语言的一个子集.正因JSON是JavaScript的一个子集,所以它可清晰的运用于此语言中. eval函数 ...

  9. svn重新安装后报You need to upgrade the working copy first错误

    问题来源 最近重新安装了操作系统,安装了一个最新版的svn,提交代码的时候报了一个错误:You need to upgrade the working copy first,!网上找了很多解决办法,都 ...

  10. Log4j 相关

    Log4j(Log for Java) Log4j是Apache提供的一种专门用于Java程序记录日志的工具,是目前主流的开发日志技术. 日志的作用: 1.记录系统运行过程中的重要运行信息 a) 付费 ...