搭建个人wiki站点

系统 1780 0

原文请猛戳: http://galoisplusplus.gitcafe.com/blog/2013/09/19/have-fun-with-vim-wiki/

写blog确实是一种消化和深入理解知识的方式,但往往要整理一个完整的主题相当的耗时间。 平时我也想记一记一些有用然而散乱的tips,慢慢积累起来。 作为一位Vim忠实粉,我理所当然找到了大名鼎鼎的Vim插件 Vimwiki , 并开始借此搭建我的个人wiki。

pathogen 这个管理Vim插件的插件把Vimwiki安装上后,需要在.vimrc中加入一些设置,其中最重要的是指定你所写的wiki源文件的路径和要发布的html文件的路径:

                  
                    1
                  
                
                  
                    
                      let g:vimwiki_list = [{'path': '~/my_site/', 'path_html': '~/public_html/'}]
                    
                  
                

接下来就可以在你所指定的’path’下创建.wiki文件,编辑完后是用以下Vim命令

                  
                    1
                  
                
                  
                    
                      :Vimwiki2HTML
                    
                  
                

Vimwiki插件就会自动将该.wiki文件转化为同名的html页面(例如topic.wiki生成的是topic.html)并把html放到你所指定的’path_html’下。 如果要转化所有条目可以用以下的Vim命令:

                  
                    1
                  
                
                  
                    
                      :VimwikiAll2HTML
                    
                  
                

有了html页面,自然想发布到某网站上。我选择了提供pages服务的业界良心Github,创建一个名为wiki的新repo( https://github.com/yszheda/wiki ),把’path_html’上的html文件托管到上面,并通过gh-pages分支发布我的Project pages( http://yszheda.github.io/wiki/ )。 页面的样式我偷懒直接使用了Github官方提供的Architect主题,为了让该主题应用到所有Vimwiki生成的html页面上,需要修改Vimwiki插件目录下的 autoload/vimwiki/default.tpl 模板文件:

(default.tpl) download
                  
                    1
                  
                  
                    2
                  
                  
                    3
                  
                  
                    4
                  
                  
                    5
                  
                  
                    6
                  
                  
                    7
                  
                  
                    8
                  
                  
                    9
                  
                  
                    10
                  
                  
                    11
                  
                  
                    12
                  
                  
                    13
                  
                  
                    14
                  
                  
                    15
                  
                  
                    16
                  
                  
                    17
                  
                  
                    18
                  
                  
                    19
                  
                  
                    20
                  
                  
                    21
                  
                  
                    22
                  
                  
                    23
                  
                  
                    24
                  
                  
                    25
                  
                  
                    26
                  
                  
                    27
                  
                  
                    28
                  
                  
                    29
                  
                  
                    30
                  
                  
                    31
                  
                  
                    32
                  
                  
                    33
                  
                  
                    34
                  
                  
                    35
                  
                  
                    36
                  
                  
                    37
                  
                  
                    38
                  
                  
                    39
                  
                  
                    40
                  
                  
                    41
                  
                  
                    42
                  
                
                  
                    
                      
                        <!DOCTYPE html>
                      
                    
                    
                      
                        <html>
                      
                    
                    
                      
                        <head>
                      
                    
                    
                      
                        <meta
                      
                      
                        charset=
                      
                      
                        'utf-8'
                      
                      
                        >
                      
                    
                    
                      
                        <!--
                      
                    
                    
                      
                        <link rel="Stylesheet" type="text/css" href="%root_path%%css%">
                      
                    
                    
                      
                        -->
                      
                    
                    
                      
                        <link
                      
                      
                        href=
                      
                      
                        'https://fonts.googleapis.com/css?family=Architects+Daughter'
                      
                      
                        rel=
                      
                      
                        'stylesheet'
                      
                      
                        type=
                      
                      
                        'text/css'
                      
                      
                        >
                      
                    
                    
                      
                        <link
                      
                      
                        rel=
                      
                      
                        "stylesheet"
                      
                      
                        type=
                      
                      
                        "text/css"
                      
                      
                        href=
                      
                      
                        "stylesheets/stylesheet.css"
                      
                      
                        media=
                      
                      
                        "screen"
                      
                      
                        />
                      
                    
                    
                      
                        <link
                      
                      
                        rel=
                      
                      
                        "stylesheet"
                      
                      
                        type=
                      
                      
                        "text/css"
                      
                      
                        href=
                      
                      
                        "stylesheets/pygment_trac.css"
                      
                      
                        media=
                      
                      
                        "screen"
                      
                      
                        />
                      
                    
                    
                      
                        <link
                      
                      
                        rel=
                      
                      
                        "stylesheet"
                      
                      
                        type=
                      
                      
                        "text/css"
                      
                      
                        href=
                      
                      
                        "stylesheets/print.css"
                      
                      
                        media=
                      
                      
                        "print"
                      
                      
                        />
                      
                    
                    
                      
                        <!--[if lt IE 9]>
                      
                    
                    
                      
                        <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
                      
                    
                    
                      
                        <![endif]-->
                      
                    
                    
                      
                        <title>
                      
                      %title%
                      
                        </title>
                      
                    
                    
                      
                        <meta
                      
                      
                        http-equiv=
                      
                      
                        "Content-Type"
                      
                      
                        content=
                      
                      
                        "text/html; charset=%encoding%"
                      
                      
                        >
                      
                    
                    
                      
                        </head>
                      
                    
                    
                      
                        <body>
                      
                    
                    
                      
                        <header>
                      
                    
                    
                      
                        <div
                      
                      
                        class=
                      
                      
                        "inner"
                      
                      
                        >
                      
                    
                    
                      
                        <h1>
                      
                      Wiki
                      
                        </h1>
                      
                    
                    
                      
                        <h2>
                      
                      by yszheda
                      
                        </h2>
                      
                    
                    
                      
                        <a
                      
                      
                        href=
                      
                      
                        "https://github.com/yszheda/wiki"
                      
                      
                        class=
                      
                      
                        "button"
                      
                      
                        ><small>
                      
                      View project on
                      
                        </small>
                      
                      GitHub
                      
                        </a>
                      
                    
                    
                      
                        </div>
                      
                    
                    
                      
                        </header>
                      
                    
                    
                      
                        <div
                      
                      
                        id=
                      
                      
                        "content-wrapper"
                      
                      
                        >
                      
                    
                    
                      
                        <div
                      
                      
                        class=
                      
                      
                        "inner clearfix"
                      
                      
                        >
                      
                    
                    
                      
                        <section
                      
                      
                        id=
                      
                      
                        "main-content"
                      
                      
                        >
                      
                    
                    
                      %content% 
                    
                    
                      
                        </section>
                      
                    
                    
                      
                        <aside
                      
                      
                        id=
                      
                      
                        "sidebar"
                      
                      
                        >
                      
                    
                    
                      
                        <p>
                      
                      Wiki maintained by 
                      
                        <a
                      
                      
                        href=
                      
                      
                        "https://github.com/yszheda"
                      
                      
                        >
                      
                      yszheda
                      
                        </a></p>
                      
                    
                    
                      
                        <p>
                      
                      This page was generated by 
                      
                        <a
                      
                      
                        href=
                      
                      
                        "pages.github.com"
                      
                      
                        >
                      
                      GitHub Pages
                      
                        </a>
                      
                       using the Architect theme by 
                      
                        <a
                      
                      
                        href=
                      
                      
                        "https://twitter.com/jasonlong"
                      
                      
                        >
                      
                      Jason Long
                      
                        </a>
                      
                      .
                      
                        </p>
                      
                    
                    
                      
                        </aside>
                      
                    
                    
                      
                        </div>
                      
                    
                    
                      
                        </div>
                      
                    
                    
                      
                        </body>
                      
                    
                    
                      
                        </html>
                      
                    
                  
                

接下来要折腾的就是自动发布Vimwiki生成的html页面了。 我写了一个简单的auto-deploy.sh脚本:

(auto-deploy.sh) download
                  
                    1
                  
                  
                    2
                  
                  
                    3
                  
                  
                    4
                  
                  
                    5
                  
                  
                    6
                  
                  
                    7
                  
                
                  
                    
                      
                        #!/bin/bash
                      
                    
                    
                      
                        path_html
                      
                      
                        =
                      
                      
                        # set your vimwiki html path
                      
                    
                    
                      
                        cd
                      
                      
                        $path_html
                      
                    
                    
                      git checkout gh-pages 
                    
                    
                      git add *.html 
                    
                    
                      git commit -m
                      
                        "syn at `date`"
                      
                    
                    
                      git push origin gh-pages 
                    
                  
                

再把它设置为定时作业,可以用经典的 crontab ,例如 crontab -e 后加入:

                  
                    1
                  
                
                  
                    
                      * 20 * * * /<path>/auto-deploy.sh
                    
                  
                

设置每日晚上八点自动发布。

不过作为一名Arch user,很早之间就 当小白鼠 从sysvinit迁移到了systemd,自然要试试这个高大上的 systemd 。 systemd也支持定时作业,以我的例子来讲,我希望每日定时发布,可以从创建一般的daily event开始。

编辑 /etc/systemd/system/timer-daily.timer 文件:

                  
                    1
                  
                  
                    2
                  
                  
                    3
                  
                  
                    4
                  
                  
                    5
                  
                  
                    6
                  
                  
                    7
                  
                  
                    8
                  
                  
                    9
                  
                  
                    10
                  
                
                  
                    
                      [Unit] 
                    
                    
                      Description=Daily Timer 
                    
                    
                      [Timer] 
                    
                    
                      OnBootSec=10min 
                    
                    
                      OnUnitActiveSec=1d 
                    
                    
                      Unit=timer-daily.target 
                    
                    
                      [Install] 
                    
                    
                      WantedBy=basic.target
                    
                  
                

编辑 /etc/systemd/system/timer-daily.target 文件:

                  
                    1
                  
                  
                    2
                  
                  
                    3
                  
                
                  
                    
                      [Unit] 
                    
                    
                      Description=Daily Timer Target 
                    
                    
                      StopWhenUnneeded=yes
                    
                  
                

创建以下目录,作为接下来要被执行的具体的定时作业的服务设置文件的路径:

                  
                    1
                  
                
                  
                    
                      mkdir /etc/systemd/system/timer-daily.target.wants
                    
                  
                

在该目录下添加具体要被执行的定时作业的服务设置文件 /etc/systemd/system/timer-daily.target.wants/syn-vimwiki.service

                  
                    1
                  
                  
                    2
                  
                  
                    3
                  
                  
                    4
                  
                  
                    5
                  
                  
                    6
                  
                  
                    7
                  
                  
                    8
                  
                
                  
                    
                      [Unit] 
                    
                    
                      Description=syn vimwiki 
                    
                    
                      [Service] 
                    
                    
                      Nice=19 
                    
                    
                      IOSchedulingClass=2 
                    
                    
                      IOSchedulingPriority=7 
                    
                    
                      ExecStart= /<path>/auto-deploy.sh
                    
                  
                

最后执行

                  
                    1
                  
                
                  
                    
                      systemctl enable timer-daily.timer && systemctl start timer-daily.timer
                    
                  
                

即可。

设置按小时或按星期定时发布也是可以的, 万能的 Arch wiki 上都有详细的说明。

关于systemd再多啰嗦几句,迁移到systemd后自然还是可以用原来的 cron 服务的,如果某一天你打了鸡血,突然变激进了,想把cron撤掉换成纯systemd(Arch发行版就经常干这种事XD),在执行

                  
                    1
                  
                
                  
                    
                      systemctl stop cronie && systemctl disable cronie
                    
                  
                

之前,别忘了加入 logrotate man-db-update mlocate-update verify-shadow 这些服务的配置文件。 至于具体的内容,万能的 Arch wiki 也早为不折腾不死的你准备好了XD

搭建个人wiki站点


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论