Ubuntu上用hexo建立自己的博客

背景

操作系统

Ubuntu 16.04 LTS

安装前提

git

git是地球上最先进的版本管理控制系统,与时俱进的程序员、黑客、作家都在用它。

你不用后果比较严重。。。只能说这么多了

首先确认本机上有没有安装git

$ git --version

能正确显示版本号说明已经安装好了,没有安装的话不出意外,终端会提示安装命令,类似

$ sudo apt-get install git-core

git是一个博大精深的东西,值得深入研究,值得长久沉浸,网上有超多的帖子和书籍在等待着你去发掘,做个勇猛的发掘机吧!谁用谁知道!

npm (node package manager)

看英文全称是node包的管理工具。

node我能想到的是node.js,好像比较火,但没有深入过,

插播一段

在使用ubuntu的过程中,关于怎样安装软件(ubuntu的世界里面百花齐放,有各种开源组织机构,可能用软件这个词不太恰当,可以用包、模块),接触到了好些命令,有`apt-get install`,`pip install`, `easy install`, `npm install`,`nvm install` ......, 哪些模块安装用哪些命令呢?

其中`apt-get install`是ubuntu的安装命令。

根据我已有的经验,猜测不同的组织开发了不同功能的包or模块,他们有自己的包管理工具,所以得用他们的安装命令?

好吧,这个还待求证,听我的猜测,后果自负。

反正(反正这个词好,不知道的都先反正先,就像电脑的重启,报出异常重启先,哇,这个世界清静了!(此处可以有星爷表情))你在终端输入

$ npm --version

看看会不会返回版本号先,没有返回也会提示安装命令,照做吧,just do it.

nodejs-legacy

为什么要这东西,不知道,自己看链接,反正(反正又来了)不装的话后面会有问题。

$ sudo apt-get install nodejs-legacy

插播

legacy 是遗产、遗赠的意思,哇!(两眼冒光)钱!!!

不过是不是不太吉利?

看了计算机科学的专业释义:软件使用过长过程中产生的难以维护的东东。

还真是不吉利

不吉利也没办法,除非到此打住,关了网页,否则就从了他吧,没法反抗就享受吧。(大哭。。。)

node.js

需要安装node.js是官方文档的要求,不信,你看这里

在好多地方看到node.js,是时候搞清楚它是什么了。

Node.js是一个开放源代码、跨平台的、可用于服务器端和网络应用的运行环境。Node.js应用JavaScript语言写成,在Node.js运行时运行。它支持OS X、Microsoft Windows、Linux、FreeBSD、NonStop、IBM AIX、IBM System z和IBM i。Node.js由Node.js基金会拥有和维护,该基金会与Linux基金会有合作关系。

Node.js提供事件驱动和非阻塞I/O API,可优化应用程序的吞吐量和规模。这些技术通常被用于实时应用程序。

Node.js采用Google的V8引擎来执行代码。Node.js的大部分基本模块都是用JavaScript写成的。Node.js含有一系列内置模块,使得程序可以作为独立服务器运行,从而脱离Apache HTTP Server或IIS运行。

Node.js正在向服务器端平台发展,并已被IBM、Microsoft、Yahoo!、Walmart、Groupon、SAP、LinkedIn、Rakuten、PayPal、Voxer和GoDaddy等采用

Node.js允许通过JavaScript和一系列模块来编写服务器端应用和网络相关的应用。核心模块包括文件系统I/O、网络(HTTP、TCP、UDP、DNS、TLS/SSL等)、二进制数据流、加密算法、数据流等等。Node模块的API形式简单,降低了编程的复杂度。

使用框架可以加速开发。常用的框架有Express.js、Socket.IO和Connect等。Node.js的程序可以在Microsoft Windows、Linux、Unix、Mac OS X等服务器上运行。Node.js也可以使用CoffeeScript(一种旨在简化JavaScript的替代语言,其代码可按照一定规则转化为合法的JavaScript代码)、TypeScript(微软开发的强化了数据类型的JavaScript变体)、Dart语言,以及其他能够编译成JavaScript的语言编程。

Node.js主要用于编写像Web服务器一样的网络应用,这和PHP和Python是类似的。但是Node.js与其他语言最大的不同之处在于,PHP等语言是阻塞的(只有前一条命令执行完毕才会执行后面的命令),而Node.js是非阻塞的(多条命令可以同时被运行,通过回调函数得知命令已结束运行)。

Node.js是事件驱动的。开发者可以在不使用线程的情况下开发出一个能够承载高并发的服务器。其他服务器端语言难以开发高并发应用,而且即使开发出来,性能也不尽人意。Node.js正是在这个前提下被创造出来。Node.js把JavaScript的易学易用和Unix网络编程的强大结合到了一起。

Node.js使用Google V8 JavaScript 引擎,因为:

V8是基于BSD许可证的开源软件
V8速度非常快
V8专注于网络功能,在HTTP、DNS、TCP等方面更加成熟
Node.js已经有数十万模块,它们可以通过一个名为**npm**的管理器免费下载。Node.js开发社区主要有两个邮件列表、一个在freenode的名为#node.js的IRC频道。社区集中在NodeConf

我招了,上面都是我抄的,链接在这里

至少知道了

  • npm确实是它的包管理工具

  • node.js是一个有自己语法规则的语言,也是一套运行按它语法规则写的代码的运行环境,主要用在web前端开发上

好了,回到正题:

安装 Node.js 的最佳方式是使用 nvm。(娘的,怎么又来个nvm???)

又得插播了:

nvm也是node的包管理工具,node的包管理工具现在知道了两个,分别是npm和nvm,它们之间有啥区别? please Google
安装nvm

cURL:

$ curl https://raw.github.com/creationix/nvm/master/install.sh | sh

或者

Wget:

$ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

nvm安装完成后,重启终端并执行下列命令即可安装 Node.js。

$ nvm install 4

reference to : hexo官方文档

github

可以这么说,不知道github的人并不是一个合格的程序员,这是区别真假IT人士的标准之一。

登陆www.github.com注册一个账户

使用刚注册的账户登陆后,新建一个仓库,仓库名字用

username.github.io

这里的username是刚注册的账户名,这个非常重要,否则将无法打开博客网页,一度没发现这个问题,困扰了我一两个小时。

hexo

终于到hexo了,总算进入主题了,前戏是不是有点长?

npm install hexo-cli -g

npm install hexo -g

初始化网站文件

将新建的名为username.github.io仓库,克隆到本地目录

git clone git@github.com:username/username.github.io.git

博大精深的git,看这里

在终端窗口,定位到Hexo站点目录下

$ cd username.github.io

$ hexo init [folder]

新建一个网站。如果没有设置 folder ,Hexo 默认在目前的文件夹建立网站。

本地测试网站

$ hexo clean

清除缓存文件 (db.json) 和已生成的静态文件 (public)。

$ sudo hexo generate
$ sudo hexo g

$ sudo hexo server

打开链接即可查看当前站点的网页。

部署网站到github

生成静态文件后,如果还要发布到github,则需要配置deploy命令的相关配置

修改根目录下配置文件_config.yml信息

deploy:
type: git
repo: <repository url>
branch: [branch]
message: [message]

参数 描述
repo 库(Repository)地址
branch 分支名称。如果您使用的是 GitHub 或 GitCafe 的话,程序会尝试自动检测。
message 自定义提交信息 (默认为 Site updated: now('YYYY-MM-DD HH:mm:ss') )

npm install hexo-deployer-git --save

用于使用deploy命令时调用git push,将更新信息推送至github.com

详见这里

$ sudo hexo generate

$ sudo hexo deploy

配置文件

参考

绑定域名到github.io

在source文件夹下增加一个CNAME(大写)文件,并将自己的域名作为文件内容保存。

使用hexo generate 和 hexo deploy命令将CNAME文件推送到github仓库。

在DNS提供商提供的管理后台增加一条域名解析记录

推荐阅读更多精彩内容