在Hexo部署笔记这篇文章里,我用我自己的亲自实践详述了如何把Hexo部署在自己的服务器上。
但是有一天,我突然想到一个问题。为了写个博客,我要在电脑上装Node.js,装Hexo,装Git,还在服务器上煞有介事地建了一个git仓库,结果只是用来当一个静态文件的中转站,把自己电脑上的静态文件拉过来,然后触发git的钩子把这些静态文件再一股脑复制到Nginx的目录中。如果有一天我换了电脑,那个博客的源文件都在原来的电脑上,服务器上只有一堆傻乎乎的静态文件,想想都觉得很划不来。于是,我干脆把Hexo博客的源文件也通过git上传到了服务器上,换电脑或者需要用别的电脑工作时就用git把源文件clone下来,然后再像之前那样生成静态文件,上传到服务器来更新博客。
于是新的问题冒了出来:我都把源文件传到服务器上了,我为什么不能让服务器帮我做这些生成静态文件并部署到Nginx上的事情,非要在别的电脑上吭哧吭哧地安装Node.js、安装Hexo,然后执行hexo g
、hexo d
这样的重复操作?这样搞好后,换了新电脑,我唯一需要做的就是把源文件clone下来,改好了提交上去,别的都不用管。
我写博客这么想,写代码的程序员自然也会这么想,写好代码提交,编译测试发布一气呵成,根本不用在自己电脑上一套流程跑一通(对于许多大项目甚至是不可能在自己的小机器上执行编译测试这些操作的),这波操作就是程序员不时会提到的持续集成和持续部署,英语缩写分别是CI和CD。
现在,假设我的电脑上,除了系统本身、博客的源文件、Git客户端外,一无所有。而服务器上,什么都没有。博客的源文件是从老电脑那里复制出来的,所以hexo的那些框架,自己的老文章,都有。Git客户端要么是Linux、Mac系统可以很方便地安装,要么是Windows系统可以从网上下载一个绿色便携版。服务器上本来可以有一个存了静态文件的仓库,但是对于这个持续集成部署的教程来说,并没有什么用处,干脆就把它直接去掉了。
以下服务器的命令皆基于Ubuntu。如果你使用的是CentOS等系统,那么安装软件、软件配置文件的位置可能会有些不同。