一直想要有一个本身的文档管理系统:html
第一点用Makrdown来写文档是一个很是好的选择,第二点天然想到了git,
第三点用一个静态的网站来浏览和管理是一个不错的选择,这里选择了hugo。python
Hugo是由Go语言实现的静态网站生成器。 注意是生成器。他虽然自带webserver,可是没有Nigix强大了。
他能很是方便的把markdown文件转换为html。git
首先必须有一台服务器,我选择了阿里云。而后:github
这时候咱们就能够看到第一个页面了。web
利用git来管理文档是一个很是好的方式。这里直接想到用github来存储文档。gitbhu支持收到push请求的时候调用固定的地址http。
因此咱们能够用这个来实现完美的功能。服务器
首先在github上配置请求:settings->Webhooksmarkdown
而后咱们要在外面的服务器上搭建一个Http服务器来接受这个请求, 这里选择用python的import http.server来搭建,简单方便:socket
class EntranceHttpRequestHandler(http.server.CGIHTTPRequestHandler): def do_POST(self): print('begin') if __name__=='__main__': handler = EntranceHttpRequestHandler.EntranceHttpRequestHandler httpd = socketserver.TCPServer(("", 8001), handler) httpd.serve_forever()
import http.server import Convertor import os import _thread TargetPath = "/root/root/site/content/post/blog" GitSrcPath = "/root/root/site/blog" HugeSitePath = "/root/root/site/" HugeStatCommond = r'hugo server --buildDrafts -p 80 --bind 115.28.83.94 -b http://115.28.83.94/' class EntranceHttpRequestHandler(http.server.CGIHTTPRequestHandler): def do_POST(self): print('begin') self.gitpull(GitSrcPath) self.stopHugo() convert = Convertor.Convertor() convert.excute(GitSrcPath,TargetPath) self.startHugo() print("finished") self.wfile.write(b"msg finished") def gitpull(self, filePath): os.chdir(filePath) command = "git pull " os.system(command) def startHugo(self): _thread.start_new_thread(self.doStartHugo, ()) def doStartHugo(self): os.chdir(HugeSitePath) output = os.system(HugeStatCommond) print(output) print('sartHugo finished') def stopHugo(self): command = 'kill -9 $(pidof hugo)' os.system(command) print('stopHugo finished')
其中Convert 是对文档作一些分类和tag的转换不详细介绍。
到如今一个完整的网站就搭建完成了,每一次只要在本地push文档,就能在网站上自动更新。post
完整代码看这里网站