hexo + azure 筹建博客

hexo + azure 搭建博客

Azure 创建主机

首先是要在Azure上创建一个虚拟主机。由于我在中国,所以服务器要选择东亚。系统我选的是Ubuntu,因为之前用过,比较熟悉。创建时,先在本地生成一个OpenSSL的匹配串。

openssl.exe req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout myPrivateKey.key -out myCert.pem

生成后在创建虚拟机时,选择myCert.pem文件,这就可以将其配置成默认登陆串。

更改适当的用户名后,确定创建,在一段时间的等待后,虚拟机就创建好了。

登陆

我使用的是Mac系统,所以倒不用配置许多必备的环境。直接运行:

ssh -i myPrivateKey.key -p 22 user@hostname.cloudapp.net 

即可登陆。登陆后,在服务器端生成一个ssh的rsa,用来作免密码登陆。具体方式是运行:

ssh-keygen -t rsa

回答一堆小问题后,rsa即可生成,将私钥id_rsa,拷贝一份到客户端放置到~/.ssh目录下。将公钥id_rsa.pub更名为authorized_keys。这样客户端就可以不用输入密码直接登陆了。

配置Git

由于要起一个HTTP服务,所以得先配个nginx。使用命令

sudo apt-get install nginx

nginx会安装到/etc/nginx目录中,而它的启动程序放到了/user/sbin/nginx。常用命令:

  • sudo nginx 启动
  • sudo nginx -s quie 退出
  • sudo nginx -s reload 重启
  • sudo nginx -t 检查配置错误

值得一提的是Azure有一个坑,如果你希望外网能方位到nginx需要在Azure云服务中开放80端口,在终端点做设置。另外,Azure主机是ping不通的,不要困惑。

后续相关配置可以参考这篇文字

大体逻辑是,在服务器配置一个Git仓库,用来存放导出的网页,这样当hexo更改后,可以直接导出部署,配置如下:

deploy:
    type: git
    message: update
    repo: yourname@hostIP:/home/path/blog.git
    branch: master

最后再创建一个Git hook。每当收到提交,就将自己分支目录的东西复制到网站输出目录,说白了,就是通过git转一道手,实现自动更新网站的功能。

实现代码如下:

$ cd ~/blog.git/hooks
$ touch post-receive
$ vi post-receive

脚本内容:

#!/bin/bash -l
GIT_REPO=/home/git/blog.git
TMP_GIT_CLONE=/tmp/blog
PUBLIC_WWW=/var/www/blog

rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

更改权限:

$ chmod +x post-receive
$ sudo chmod 775 -R /var/www/blog