V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
banxi1988
V2EX  ›  随想

如何搭建不用数据库的博客

  •  
  •   banxi1988 · 2012-12-09 22:09:06 +08:00 · 6310 次点击
    这是一个创建于 4154 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不知道为什么我突然觉得可以搭一个不用数据库的博客。

    最初见到类似的东西,因为是用github的page来搭建简单的个人博客吧。

    昨天晚上睡觉的时候想了想。
    (1)作为见证自己成长经验,搭建一个自己的blog还是很有必要的,虽然已经有了这么多的社区有博客功能。
    (2)不知道对于一个blog站点来说,数据库访问跟直接文件IO性能差别大吗?
    (3)原始想法如下:
    一个按年月的blog目录,里面放html。
    一个category目录里面放blog目录对应类别记录。
    一个archive目录方便按年月归档blog。
    一个保持目录结构与内容同步的脚本 。
    基本目录结构如下:
    banxi1988@banxi:~/work/jblog$ tree
    .
    ├── archive
    │   └── 2012
    │   ├── 11.json
    │   └── 12.json
    ├── blog
    │   └── 2012
    │   └── 12
    │   └── How_to_learn_python.html
    └── category
    ├── android.json
    └── java.json

    6 directories, 5 files
    banxi1988@banxi:~/work/jblog$


    例如:python.json文件中以json格式保存python分类下的文章的索引信息。
    如[
    {"category":"python","path":"2012/12/How_to_learn_python.html"}
    ]
    archive中的结构类似。

    每次创建博客时,(因为我自己熟悉html+css+js),
    用一个交互式的脚本:
    可以输入:博客中文名,博客英文名(space replace with '_')
    输入类别。
    然后就可以创建blog html文档的时候,将此blog的信息根据类别在category中对应记录
    文档中添加一项。根据创建的日期在archive中对应的文档中添加一项。

    (4)一些其它的思考:
    就按我一个月写5篇blog一年有60左右。
    10年600左右。一个blog(不算图片)50K计,600个也就一点点东西。就是要做全文搜索也是so easy的。
    关于评论:由于个人博客,一般评论什么的不多。所以
    加一个commets来存储对应的blog的评论。评论的时候也是直接文件IO读写。

    用一个定时脚本,每天根据需要构建一次相关页面。

    (5)突然感觉又回来了,这不就是一个html文档吗?
    nosql?

    欢迎提出你的看法。
    30 条回复    2017-04-05 19:22:07 +08:00
    banxi1988
        1
    banxi1988  
    OP
       2012-12-09 22:10:06 +08:00
    这一句后面的东西忘了下了:(因为我自己熟悉html+css+js):所以 我可以不需要可视化啊等等编辑器。直接自己写html的。
    jesse_luo
        2
    jesse_luo  
       2012-12-09 22:22:47 +08:00
    github(或者任何空间)上面用jekyll啊,当然lz的目的应该不是单纯为了记博客……
    自荐一下……
    http://blog.jesseluo.me/blog/2012/blog-on-github/
    banxi1988
        3
    banxi1988  
    OP
       2012-12-09 22:29:19 +08:00
    @jesse_luo 这个github的用jekyll我用过一下下,觉得有点点不习惯,特别是yaml。
    可能有时候我也是想,自己动手来感受作为一个网站需要及功能的进化。
    PS:现在bae是免费的,你的博客可以尝试切到bae上去,哈哈。
    plucury
        4
    plucury  
       2012-12-09 22:34:44 +08:00
    hehe
        5
    hehe  
       2012-12-09 22:42:50 +08:00
    你想的太复杂了

    本机建个txt,随时更新,想给谁看发给谁
    goofansu
        6
    goofansu  
       2012-12-09 22:44:32 +08:00
    可以试试octopress,不过老实说,写出什么样的内容才是最重要的,博客系统一抓一大把
    jacy
        7
    jacy  
       2012-12-09 22:47:20 +08:00
    有不用数据库的博客系统。原来也有很多,比如数据保存在ini文件,xml文件,甚至文本文件。以前为了在路由器上搭博客,减少路由器负担,没在路由器装数据库。
    binux
        8
    binux  
       2012-12-09 22:50:31 +08:00
    如果只是一个文件数据库,那没什么新奇的,还有用文件数据库的论坛呢
    如果抛开各种多用户、权限、扩展、可选项,后台,博客系统本来就没什么难的
    ericFork
        9
    ericFork  
       2012-12-09 22:52:41 +08:00
    想起早年的 ofstar 论坛系统,不知道还有多少人记得这东西……
    banxi1988
        10
    banxi1988  
    OP
       2012-12-09 23:04:41 +08:00   ❤️ 1
    @hehe 呵呵,可以发邮件。
    cyr1l
        11
    cyr1l  
       2012-12-09 23:06:58 +08:00
    是的, 博客系统其实很简单的, 我是直接写markdown,转换成html,扔在目录下, 用php去索引,直接css什么的自己定义就行,至于评论系统,用disqus 或者国内的有言,灯鹭什么的社交评论,RSS也是直接php伪造,archive 和tag 也不算难 ,就是ping和trackback不好做。 其他都很还算简单。
    skydiver
        12
    skydiver  
       2012-12-09 23:10:05 +08:00
    Movable Type 就可以的啊。。。直接生成静态页面
    banxi1988
        13
    banxi1988  
    OP
       2012-12-09 23:21:05 +08:00
    @cyr1l 为什么要“我是直接写markdown,转换成html” 而不是直接html。
    我感觉markdown好像主要是为了防止xss和脚本的吧。而出现的吧。
    目前对于markdown是没有多少了解,但是觉得写法的话,用zencoding挺不错的。
    Mutoo
        14
    Mutoo  
       2012-12-09 23:22:33 +08:00
    请问这样的博客如何留言……
    banxi1988
        15
    banxi1988  
    OP
       2012-12-09 23:24:07 +08:00
    @Mutoo 留言直接放在一个对一个对应的文件进行IO。因为一般个人博客,留言的不多。
    cyr1l
        16
    cyr1l  
       2012-12-09 23:27:36 +08:00
    @banxi1988 一样, 就是觉得windows下的那个 markdownpad 挺帅的,还能自定义CSS,同步预览什么的。 感觉很方便。 当然啦, 用编辑器配合zencoding也很好, zencoding真乃前端神器啊。
    ipconfiger
        17
    ipconfiger  
       2012-12-09 23:29:35 +08:00
    试试 https://github.com/ipconfiger/blogen 基于pages构建,简单易用
    MayLava
        18
    MayLava  
       2012-12-10 00:50:50 +08:00
    /t/34202 http://haow.in/blogmi/
    试试看符合你的要求不
    reaky
        19
    reaky  
       2012-12-10 07:50:05 +08:00
    https://github.com/reaky/reaky.github.com
    我自己的,将就能用 代码很挫,内容请忽视
    Sammy.js前端路由,结构和楼主的差不多
    banxi1988
        20
    banxi1988  
    OP
       2012-12-10 10:05:44 +08:00
    @MayLava 看了下非常不错。如果有类似需要的人,我会向他们推荐的。
    我想,自己先尝试造下轮子。
    PS:我特别喜欢 V3日记 这个主题。 不知知道如果我模仿的话,有没有版权问题没有?
    MayLava
        21
    MayLava  
       2012-12-10 10:17:46 +08:00
    @banxi1988 这个东西不是我写的。想模仿的话也不会有人追究吧,只是最好不要大段的css或者图片照搬什么的……
    yegle
        22
    yegle  
       2012-12-10 12:18:23 +08:00
    That's called static site generator

    If you know Ruby, use jekyll. If you are more familiar with Python, use Pelican.
    hpyhacking
        23
    hpyhacking  
       2012-12-10 12:42:49 +08:00
    Jekyll 系列的都可以
    lucifr
        24
    lucifr  
       2012-12-10 12:49:24 +08:00
    看好 hexo,nodejs 生成起来比 Ruby 的 jekyll/octopress 快得多,虽然目前还有些 bug,但日常用应该没太大问题 http://zespia.tw/hexo/
    greatghoul
        25
    greatghoul  
       2012-12-10 12:51:19 +08:00
    我现在用这个搭,效果不错。python的。
    http://posativ.org/acrylamid/
    ispinfx
        26
    ispinfx  
       2012-12-10 13:20:07 +08:00
    node.js的推荐hexo,emacs的推荐org-pages http://www.v2ex.com/t/53456
    trai25
        27
    trai25  
       2013-03-21 23:45:28 +08:00
    @lucifr 我就是看了兄台的博客才想换成Hexo的,但遇到些问题想请教下,在最后deploy的环节报错说连接不上这个项目,让我确认项目是否已经建立并拥有权限,弄了很久也没弄好,也搞不清楚原因,SSH KEY也重新弄了还是没进展,想请请教兄台是否知道这种情况是什么原因,又该怎么解决呢?http://trai25.github.com 这个项目本来是Octopress,因为Hexo没弄好,现在只能暂时恢复到Octopress了。

    万分感谢!
    lucifr
        28
    lucifr  
       2013-03-22 09:57:53 +08:00   ❤️ 1
    @trai25 我是部署到自己的 VPS 上了,没用 github 不太清楚
    trai25
        29
    trai25  
       2013-03-22 10:10:00 +08:00
    @lucifr 原来如此,还是感谢:-)
    jlkm2010
        30
    jlkm2010  
       2017-04-05 19:22:07 +08:00
    我用的 sqlite
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3351 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:59 · PVG 19:59 · LAX 04:59 · JFK 07:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.