Hexo的部署(使用git)
本文最后更新于 2025年4月17日 早上
前端时间总结了一下docsify的部署,又想到了之前挖坑的Hexo,两者都可以结合git进行部署,底层机制上其实是一致的,不过Hexo对部署网站做了一些封装,只需要使用hexo
相关命令就可以完成部署了。
官方文档(中文)
在官方文档中对一键部署进行了阐述,提供了包括Git,Heroku等在内超过11种工具的一键部署方法。
Hexo生成网站的基本原理
对于一个Hexo项目,要区分两个概念。一个概念是pages,也就是我们为网站写的所有的内容所在的目录(主体是markdown文档),是项目的source
文件夹下所有的文件,这个是从编辑写作的角度而言的。另外一个是站点资源,也就是访问部署的网站所调用的各种资源,存放于于public
文件夹下,这也是本地网站的根目录,这个是从访问网站的角度而言的。
一旦输入hexo g
命令,Hexo就会根据配置文件将source
下的内容文件组织成public
文件夹下的网站资源。这时候输入hexo s
命令就可以启动一个本地服务器,默认情况下这个地址是http://localhost:4000/
,在浏览器访问这个地址就会看到Hexo生成的网站了。
然而一个真正的网站是可以通过公网访问的,那就意味着需要将public
里面的内容存在一个公网服务器上(也就是某个目录里),然后通过DNS服务商配置一个网址指向这个服务器,再在服务器上使用譬如nginx这样的服务器程序将一个网址指向这个存放目录。这样,任何互联网用户就都可以访问到这个网站了。
Hexo部署时处理网站资源文件的原理和方法
在docsify项目结合git部署在Linux服务器上一文中,讲到了如何将git存储库(git-dir)里面的内容还原成工作区(work-tree)文件,主要原理是依靠第五步,设置钩子在更新推送到远程存储库时将存储库的内容还原成工作区。Hexo也是利用了这一原理。
为了达成这样的效果,如果配置部署网站的类型是git
时,Hexo会在项目下生成一个.deploy_git
的文件夹,同时用git对这个文件夹进行版本管理,这个文件夹的工作区内容会同步项目下public
里面的内容,在使用hexo d
命令时,会比对内容发生的变化,并且进行一次提交。提交的内容和远程服务器的地址都在Hexo项目下的_config.yml
文件中进行配置。
接下来的事情就是配置_config.yml
文件中远程存储库的hooks
中的post_update
文件了,将推送到存储库中的更新还原成项目文件就OK了,方法同docsify项目结合git部署在Linux服务器上一文中的一致。
对项目文件的管理
需要注意的是,Hexo只是提供了用git管理网站资源文件的方法。对于项目文件本身,主要是pages,则需要我们自己进行处理。当存在会在多台电脑上写作的情况下,比如我在家里,公司,出差携带的电脑上都可能写文章,而且也经常换电脑,我就必须得用git管理项目文件了,这个只要在Hexo文件夹下进行git的初始化,并且配置一个远程仓库就OK了。