MacOS下搭建Hexo博客并部署到阿里云

简介

Hexo是一款生成静态页面的写作程序。利用Markdown提供不受干扰的写作模式。本教程将教大家如何把Hexo搭建在MacOS操作系统下,并部署生成后的静态网页到阿里云主机上,且实现自动发布静态页面到阿里云远程git仓库。

安装Hexo

安装Hexo需要两个依赖软件,Node.js和git.

安装Node.js

由于Hexo是基于Node.js开发,所以本地需要安装Node.js开发环境。最方便的是使用 nvm 安装,因为Node.js的版本更新比较快,且并不保证向后兼容,所以当需要为项目切换版本时,用 nvm 十分方便。运行如下命令安装 nvm :

1
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash

然后安装最新稳定版Node.js(本教程写时为10.0):

1
$ nvm install stable

安装git

Hexo使用Git下载源代码到本地,且我们需要使用git上传到阿里云服务器上,所以需要安装git。Mac下安装git最方便的是使用 hombrew 。如果你的电脑上没有安装,可运行如下命令安装:

1
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装git

1
2
$ brew update
$ brew install git

安装Hexo

最后一步,就是安装真正的Hexo了,运行如下命令:

1
$ npm install -g hexo-cli

创建博客系统

寻找一合适的文件夹下,运行下列命令初始化一个博客并启动本地服务器进行测试:

1
2
3
4
$ hexo init blog
$ cd blog
$ npm install
$ hexo server

之后访问 http://localhost:4000 即可看到成功运行后的结果。

配置阿里云

这里,我用的阿里云主机的操作系统为Ubuntu 16.04。

安装git

我们需要使用git进行自动部署,所以也需要安装git:

1
2
$ sudo apt-get update
$ sudo apt-get install git-core

安装Nginx

Nginx是一款高性能Web服务器,当然它能做的不仅仅是这些,还可以做负载均衡,限流等。

1
$ sudo apt-get install nginx

安装完成后,访问主机域名或IP地址,看到Nginx欢迎页面即安装成功。默认的网页文件存放在 /var/www/html 下。

配置远程git仓库

在任意位置创建一空白文件夹,名为 myblog.git(可随意),如 /var/www/myblog.git ,然后初始化仓库运行:

1
$ git init --bare

Git Server仓库需要创建为bare类型,这种仓库不会有工作树,即任何提交的文件都保存在了git的目录而不是对应本地仓库的具体目录。此仓库远程访问的URL为

username@IP:/var/www/myblog.git

为了使push上来的代码自动同步到 /var/www/html 我们需要在 /var/www/html 下clone我们刚创建的仓库:

1
$ git clone /var/www/myblog.git .

然后需要写一钩子脚本,在push完毕后触发,以使 html 仓库pull出最新改动。在 /var/www/myblog.git/hooks 下创建名为 post-receive 的文件,内容如下

1
2
3
4
#!/bin/bash
echo "Executing post script..."
cd /var/www/html
env -i git pull

env -i是因为触发此钩子时会有识别PWD环境变量的问题。然后增加可执行权限:

1
$ chmode +x post-receive

测试

在hexo自动创建的 hello-world.md 文件中修改几个字符,然后保存。在博客项目的根目录下运行

1
$ hexo generate

来生成静态文件。然后在部署之前,修改 _config.yml 中的git仓库配置:

1
2
3
4
deploy:
type: git
repo: username@ip:/var/www/myblog.git
branch: master

然后运行

1
$ hexo deploy

如果提示remote没有配置全局的username和email,那么需要运行如下两条命令(安需修改为自己实际的名字):

1
2
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

如果没有导入ssh key的话,还会需要输入阿里云的用户密码才可push成功。现在访问阿里云域名,就可以看到修改后的结果了。为了方便生成静态文件和部署,可以把两条命令

1
2
$ hexo generate
$ hexo deploy

放到 deploy.sh 文件中,然后运行此文件即可。