Ubuntu 和 CentOS 下安装 Hexo

Hexo 是一款非常便捷的静态博客系统。关于 Hexo 的安装、配置和使用,请参考Hexo 官网

Hexo 静态文件的编译依赖了 Node.js,所以需要先安 Node.js。

Ubuntu 安装 Node.js

  1. 更新源

    1
    sudo apt update
  2. 安装Node.js

    1
    2
    3
    sudo apt install nodejs
    sudo apt install nodejs-legacy
    sudo apt install npm
  3. 更新NPM包镜像源

    1
    2
    sudo npm config set registry https://registry.npm.taobao.org
    sudo npm config list
  4. 全局安装 n 管理器

    1
    sudo npm install n -g
  5. 安装最新Node

    1
    2
    3
    4
    5
    6
    7
    8
    sudo n stable
    sudo node -v
    # 说明,n 指的是 node, 相关命令
    n 显示已安装的Node版本
    n latest 安装最新版本Node
    n stable 安装最新稳定版Node
    n lts 安装最新长期维护版(lts)Node
    n <version> 根据提供的版本号安装Node

CentOS 安装 Node.js

  1. 使用 wget 下载 node.js 运行包

    1
    2
    3
    4
    wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz

    # 阿里云镜像:https://npm.taobao.org/mirrors/node/v10.16.0/
    wget https://npm.taobao.org/mirrors/node/v10.16.0/node-v10.16.0-linux-x64.tar.gz
  2. 解压安装包,Node 安装包 包含了 node 和 npm

    1
    tar zxvf node-v10.16.0-linux-x64.tar.gz
  3. 进入目录

    1
    cd node-v10.16.0-linux-x64
  4. 创建软链接

    1
    2
    ln -s /usr/local/node-v10.16.0-linux-x64/bin/node /usr/local/bin/node
    ln -s /usr/local/node-v10.16.0-linux-x64/bin/npm /usr/local/bin/npm

    不创建软链接,执行 node 和 npm 命令会报 找不到命令。

  5. 查看 Node.js 和 npm 版本

    1
    2
    node -v
    npm -v
  6. 配置淘宝 npm 镜像

    1
    2
    由于官方镜像比较慢,直接执行以下命令,将镜像地址改为淘宝的npm镜像地址
    npm config set registry https://registry.npm.taobao.org

安装 Git

安装 git 是为了从 GitHub 下载主题。

1
2
3
4
5
6
# Ubuntu 下安装
sudo apt install git
# CentOS 下安装
yum install git
# 查看安装版本
git --version

安装 Hexo

  1. 安装 Hexo 客户端

    1
    npm install -g hexo-cli
  2. 安装 Hexo 服务端

    1
    npm install hexo-server --save
  3. 卸载 Hexo

    1
    npm uninstall hexo

Hexo 使用

  1. 创建个空目录,进入空目录里执行初始化

    1
    2
    3
    mkdir blog
    cd blog
    hexo init

    Hexo 初始化会在该文件夹创建所需要的文件。如果执行 hexo init 提示找不到可执行的命令,就为 hexo 创建软链接,如下:

    1
    ln -s /usr/local/node-v10.16.0-linux-x64/bin/hexo /usr/bin/hexo
  2. 启动服务器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #默认配置,地址:http://localhost:4000,Hexo 会监视文件变动并自动更新,您无须重启服务器。
    hexo server

    #指定端口
    hexo server -p 5000

    #静态模式,服务器只处理 public 文件夹内的文件,而不会处理文件变动
    hexo server -s

    #自定义IP
    hexo server -i 192.168.1.1
  3. 编译和发布

    1
    2
    3
    4
    5
    6
    7
    #编译并部署
    hexo generate --deploy
    hexo deploy --generate

    #可简写为
    $ hexo g -d
    $ hexo d -g

Nginx 指向 Hexo

因 Hexo 生成的是静态页面文件,可以使用 Nginx 指向Hexo的public目录。
nginx 配置文件配置监听的端口、域名和根目录,修改文件后可以动态加载静态而不用重启服务。
这样就不用在终端使用 hexo server 来启动服务,可以解决关闭终端服务就停止。

HEXO 主题

  1. hexo-theme-icarus
    个人喜欢这个主题,准备用于替换。

  2. hexo-theme-next
    简洁、优雅的 Hexo 主题,用于参考。

  3. hexo-theme-yilia
    非常简洁的主题,有较长时间没有更新维护了。

  4. hexo 官方主题库
    官方主题库里也是个人用户上传的,多翻了下没找到喜欢的。

Hexo问题及解决

  1. 问题:Hexo中文乱码?

解决:把md文档保存为utf-8编码格式,重新生成部署。不要使用Windows自带的文本编辑器,使用EditPlus另存为,选择编码格式。
2. 问题:Nvm安装成功后,使用nvm命令却提示command not found
解决
1. 进入nvm安装到文件目录:#cd ~/.nvm
2. 查看目录是不否有.bash_profile文件:#ls -al
3. 没有则创建文件:#touch .bash_profile
4. 执行语句:curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
5. 更新配置环境:source .bash_profile
6. 验证是否成功,输出命令:#nvm

  1. 问题:npm 提示 command not found

解决:设置环境变量:ln -s /opt/node/bin/npm /usr/bin/npm

  1. 字符转换
    Hexo 博客文章经常涉及代码语句,或 Linux 命令需要杠杠参数的,默认会被转义为 unicode 编码的中文字符,在阅读或复制语句使用时就会异常。
    解决文章中英文单引号转 unicode 中文单引号,英文双引号转 unicode 中文双引号,杠杠转 unicode 中文单杠的问题。
    找到 node_modules/marked/lib/marked.js 文件,打开查找如下代码块,注释掉不需要转换的字符

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /**
    * Smartypants Transformations
    */

    InlineLexer.prototype.smartypants = function(text) {
    if (!this.options.smartypants) return text;
    return text
    // em-dashes
    .replace(/---/g, '\u2014')
    // en-dashes, -- 转义为 -
    //.replace(/--/g, '\u2013')
    // opening singles, 开单引号转义
    //.replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
    // closing singles & apostrophes 闭单引号
    //.replace(/'/g, '\u2019')
    // opening doubles 开双引号
    //.replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
    // closing doubles 闭双引号
    //.replace(/"/g, '\u201d')
    // ellipses
    .replace(/\.{3}/g, '\u2026');
    };

相关参考

  1. Ubuntu16.04安装最新版nodejs
  2. Hexo 官方中文文档
作者

光星

发布于

2017-12-25

更新于

2024-01-18

许可协议

评论