Ubuntu 和 CentOS 下安装 Hexo
Hexo 是一款非常便捷的静态博客系统。关于 Hexo 的安装、配置和使用,请参考Hexo 官网
Hexo 静态文件的编译依赖了 Node.js,所以需要先安 Node.js。
Ubuntu 安装 Node.js
更新源
1
sudo apt update
安装Node.js
1
2
3sudo apt install nodejs
sudo apt install nodejs-legacy
sudo apt install npm更新NPM包镜像源
1
2sudo npm config set registry https://registry.npm.taobao.org
sudo npm config list全局安装 n 管理器
1
sudo npm install n -g
安装最新Node
1
2
3
4
5
6
7
8sudo 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
使用 wget 下载 node.js 运行包
1
2
3
4wget 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解压安装包,Node 安装包 包含了 node 和 npm
1
tar zxvf node-v10.16.0-linux-x64.tar.gz
进入目录
1
cd node-v10.16.0-linux-x64
创建软链接
1
2ln -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 命令会报 找不到命令。
查看 Node.js 和 npm 版本
1
2node -v
npm -v配置淘宝 npm 镜像
1
2由于官方镜像比较慢,直接执行以下命令,将镜像地址改为淘宝的npm镜像地址
npm config set registry https://registry.npm.taobao.org
安装 Git
安装 git 是为了从 GitHub 下载主题。
1 | # Ubuntu 下安装 |
安装 Hexo
安装 Hexo 客户端
1
npm install -g hexo-cli
安装 Hexo 服务端
1
npm install hexo-server --save
卸载 Hexo
1
npm uninstall hexo
Hexo 使用
创建个空目录,进入空目录里执行初始化
1
2
3mkdir blog
cd blog
hexo initHexo 初始化会在该文件夹创建所需要的文件。如果执行 hexo init 提示找不到可执行的命令,就为 hexo 创建软链接,如下:
1
ln -s /usr/local/node-v10.16.0-linux-x64/bin/hexo /usr/bin/hexo
启动服务器
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编译和发布
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 主题
hexo-theme-icarus
个人喜欢这个主题,准备用于替换。hexo-theme-next
简洁、优雅的 Hexo 主题,用于参考。hexo-theme-yilia
非常简洁的主题,有较长时间没有更新维护了。hexo 官方主题库
官方主题库里也是个人用户上传的,多翻了下没找到喜欢的。
Hexo问题及解决
- 问题: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
。
- 问题:npm 提示 command not found
解决:设置环境变量:ln -s /opt/node/bin/npm /usr/bin/npm
字符转换
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');
};
相关参考
Ubuntu 和 CentOS 下安装 Hexo
http://blog.gxitsky.com/2017/12/25/Open-Source-hexo-install/