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了。


Hexo的部署(使用git)
https://www.xiebingyuan.cn/2023/07/ddae05661e20/
作者
bingyuan
发布于
2023年7月11日
更新于
2025年4月17日
许可协议