docsify项目结合git部署在Linux服务器上

本文最后更新于 2025年4月17日 早上

自从发现docsify这个文档神器后,前前后后弄了很多个知识库网站了,依然还是经常在部署时犯迷糊,这篇文章就整理下这方面的知识,以供以后参考。

前提条件

一台具备公网IP的Linux服务器,至少安装有git,nginx这两个软件。

基本原理

docsify网站构建的所有内容是markdown文档资源和指定使用哪些js,css资源文件的 index.html 文件,这些内容所在的文件夹就是一个docsify项目,它可以被git当作一个代码项目进行管理。浏览器只要能读取到index.html网页,就可以顺着该文件里面的指示展示出一个网站出来。

服务器只要安装有git,就可以建立一个专门用来存储项目内容的中转仓库,也可以叫做git-dir。这些内容基本上和本地git项目的.git文件夹内容一致,但他们不包含可以直接被访问的项目文件。如果能够通过这个git-dir在服务器上还原出当前版本的所有docsify项目文件,然后让index.html文件被浏览器拉取到,那么这个网站就是一个可以在公网被访问的真正网站了。

所以,解决部署问题只要搞定这几个任务就行:

  1. 为网站准备一个域名,搞台服务器(比如各种有固定IP的云服务器),并将这个域名指向服务器;
  2. 在服务器上建立docsify项目文件夹,配置nginx中的server的root指向这个文件夹,并且index设置为index.html;
  3. 在服务器上配置好git仓库,并配置好这个仓库的地址;
  4. 在本地电脑上建好docsify项目,用git管理这个项目,设置好远程仓库为步骤3中的仓库,推送一点内容到远程仓库中;
  5. 在服务器上的远程仓库中,设置hooks文件夹下的post-update文件,做到一旦有内容被推送到这个仓库中,就会在docsify项目文件夹中更新文件内容。

一、准备域名和服务器

现在的云服务商很多,一般云服务商都会同时提供域名购买解析和云服务器产品。准备好这两样之后,在国内环境还是要备案的,完成备案后把域名指向服务器,这里不展开了。

二、服务器上配置docsify项目和nginx

  1. 配置docsify项目
    我习惯用Linux服务器,配置项目很简单,只需要建立一个文件夹就行。不知道最佳规范是什么,我现在习惯性在根目录的srv文件夹下配置各种服务,包括网站服务。

  2. 配置nginx
    在nginx中配置好访问就行,现在一般也是上https的,我使用let’s encrypt的SSL证书服务,具体见单域名部署证书

三、 配置git仓库

在linux服务器上,我一般喜欢新建一个git账户用来存放存储库。具体可以见服务器自建git仓库

四、 本地配置

此文的背景是新建docsify项目,至于怎么建起一个docsify项目,可以参考官网。建好这个项目后,再进入项目用git初始化一下,然后就可以参考步骤三将本地项目和服务器仓库打通。

五、 设置钩子更新服务器文件

这是我一直迷糊,也是把网站用git部署的关键

git自带一个所谓的钩子功能,可以理解成当代码库发生变化时可以做点什么,在git中自定义好了很多种情况,这些情况都在代码库的hooks文件夹下,可以通过文件名推断应该文件是在哪个场景下使用的。在不用的时候,这些文件名的后缀是.sample,需要启用的时候就将这个后缀取消掉,同时到文件中去写对应的命令。在推送更新后做点什么,就可以到post-update文件里面去定义相应命令。

全部场景如下:

20230708132309

在项目本地和服务器,hooks文件夹下的内容是独立的,所以这里是要去服务器上去修改post-update文件。

核心命令如下:

1
git --work-tree=/path-to-worktree --git-dir=/path-to-gitdir checkout -f

这段命令的含义是先指定放置项目文件的路径和git存储库的路径,最后通过checkout -f命令将存储库里面记录的变化写入到项目文件中去,记住顺序千万不能错


docsify项目结合git部署在Linux服务器上
https://www.xiebingyuan.cn/2023/07/98c57b324408/
作者
bingyuan
发布于
2023年7月7日
更新于
2025年4月17日
许可协议