OurJS-免费开源的博客引擎,论坛系统,网站模板和轻量级的CMS


发布者 newghost  发布时间 1407316609264
关键字 开源OurJS  OurJS 
OurJS 是一款基于Node.JS的轻量级,免费,开源的博客引擎,论坛系统,网站模板和内容管理系统。

这套框架使 ourjs.com 能够在使用最低配置云服务器的情况下(Debian 64位, 512Mb内存),支承起了较大的访问量,同时占用较少硬盘空间和内存以及服务器资源。

PS: 目前此最低配置云服务器上同时运行了三个网站(其它两个流量较小),SVN版本控制器、FTP文件服务器,nginx,和两个微信号后台程序(其中一个会处理较大查询消息量,曾经还有一个邮件服务器,均由node驱动),目前并没有满负载运行,一般1~2个月有重大升级时才会重启一次。

特点


简单,全栈

前后端均基于JavaScript技术,前后台没有技术差异,安装布署简单,在线升级方便。

NoDB,无配置

不仅仅支持数据库, 默认数据存储在JSON文件中,同样支持mongodb等;默认无需配置。

高性能

所有数据都会存储在缓存层(内存),数据访问无延时,系统资源消耗少。


安装


简单安装

需要预安装node.js及npm , 如果你是Windows用户,同样需要安装 mysysgit , OurJS 在 Windows 和 Linux上面使用同一套shell脚本(运行,错误记录以及前端代码压缩合并)。 OurJS通过npm发布(npm通常会与node.js一起安装)。

运行以下Shell脚本,

npm install ourjs

运行后当前目录会生成一个 node_modules  找到其中的 ourjs 目录 (建议将此 ourjs 目录拷出到生产环境的Web目录下)

运行 ourjs 目录中的 ourjs.sh (windows下需安装mysysgit方可运行), 即可启动ourjs

可在本地8054端口测试:  http://localhost:8054


如果是Windows环境并且不想安装mysysgit,你也可以手动在命令行中开启OurJS服务,如:

>cd C:\dev\node_modules\ourjs
>node svr/ourjs.js config.magazine.js

注* 假设你在c:\dev安装了ourjs,config.magazine.js是Magazine主题配置文件。

端口可在 config.magazine.js 中更改, 第一次访问时显示会不正常,即不会取到includeFile中模板定义的CSS/JS文件,需要建立模板缓存,仅重启后需刷新一次。

安装好以后可使用测试帐号登录

username: guest
password: 123456

正式布署前最好更改加密密钥, (更改后guest用户将无法登录,需手动创建Admin用户)


Linux安装

OurJS在Linux上搭配nginx才能发挥最大性能(node.js并不擅长,文件流操作)。下面这篇教程即在Amazon EC2 free tier(一年免费)服务器上布署ourjs, Node.JS, Nginx以及FTP的过程:  http://code.ourjs.com/article/53de3af62254d5a10461bf01


后记


由于ourjs.com当前使用的主题版本过旧(基于bootstrap, version 2.3),且经过较长时间修改代码比较混乱。所以基于Foundation重做了一套前端主题(Theme),并更换了文本编辑器,体积更小,页面更简洁。两套主题使用同一套后端代码(只有配置文件不同)目前为Beta版。


项目(Demo)地址:http://code.ourjs.com
Github
源码地址:  http://github.com/newghost/ourjs


注* code.ourjs.com 托管在Amazon上,国内用户访问可能会较慢,  更多文档正在整理中,欢迎使用测试并反馈意见。











更新 (2014-9-20)


已经添加中文主题: newspaper,目前已经有默认两个主题:

newspaper 基于 Bootstrap 2.3   支持IE7+
magazine   基于 Foundation 5    支持IE9+

安装方法: 通过npm安装最新版的ourjs,然后双击启动 node_modules/ourjs/ourjs.newspaper.sh 

newspaper默认侦听8052端口,刷新两次即可: http://localhost:8052/

在Window环境中手动开启Newspaper主题(兼容IE7),无需安装mysisgit。

C:\dev\node_modules\ourjs>node svr/ourjs.js config.newspaper.js


中文(Demo)地址:http://demo.ourjs.com


下面是两个主题的内存占用截图:

第一个为DEMO用的Amazon一年免费主机,运行一月有余, 每个主题内存占用:  0.6125G * 8.7% = 54.5 Mb
第二个为OurJS主站所用主机,内存因微信扩容升级到1G,主题内存占用:      1G * 7.8% < 80 Mb  (几乎没有观测到  内存占用 > 10%的情况)











回复 (40)
  • #
  • #1 withered_brook 1407370459468

    Good, 有空试试

  • #2 winter_shadow 1407390445538

    强!

  • #3 fragrant_paper 1407398680121

    做几个 sample blog, sample forum, sample CMS 出来嘛

  • #4 newghost 1407403252049

    @fragrant_paper #2

    以后会做一些有针对性的主题。

  • #5 patient_sunset 1407431758466

    Is it possible to use Ourjs with Github Pages?

  • #6 newghost 1407460979268

    @patient_sunset #4

    Github只支持静态HTML页面,目前并不支持。 OurJS的页面都是动态渲染的,难度很大。

  • #7 wispy_frost 1407464269644

    不错,来看看

  • #8 small_wildflower 1407468743718

    @patient_sunset #4

    you can try Moqi CMS

  • #9 white_mountain 1407472430741

    what fuck doing!!

  • #10 broken_snow 1407495343489

    @small_wildflower #7

    @wispy_frost #6152

  • #11 聖然 1407513525851

    太牛差的系統了 什麽都可以做了 不知道能否生成靜態 HTML 我還是喜歡靜態 HTML 滴

  • #12 newghost 1407538387100

    @聖然 #10

    什么都可以做有点夸张,标题只是参照了Wordpress的一点描述。

    静态html目前尚不支持。

  • #13 black_tree 1407581067866

    云凡教育Hadoop2.x架构详解和伪分布式环境搭建视频分享http://www.yfteach.com

  • #14 snowdream 1407692289197

    请问本网站用什么搭建的 ?

  • #15 newghost 1407711905226

    @snowdream #13

    同时也是开源出来的OurJS框架,只是前端主题不一样。

  • #16 Leeds 1407974064533

    内容都放在内存里,会占用很大内存吗,能否介绍下目前ourjs.com的运行情况(多少文章,多少内存),另外,能否把theme的api整理一下,好方便重做一个theme

  • #17 newghost 1407990284738

    @Leeds #15

    这个在另外一个讨论贴已经回答过了,直接粘到这里:

    关于内存消耗问题,曾经也有一些人样问过,经过一段时间实践和测算应该不会。

    1) JSON 数据并不会占用多少内存,OurJS平均每天发贴1篇,回贴N篇(目前2014.8月,己有450+贴),内存消耗量比布暑初期并没有多占用多少内存(目前在 90Mb左右)。照这个趋势,保守估计1G内存最少可以使用10年。

    2) 因为node.js的异步模型,内存消耗基本跟访问量无关,没有线程去消耗内存资源,我通过google analytics在测试网站上看到高峰几百人同时在线时的线程消耗内存量与闲时访问量并没有多大差别。

    3) Node JavaScript V8可能单个线程有内存限制,如果流量和规模真的达到这个限制,可能会采取多进程来处理这个问题。但是现在离遇到这个问题还很遥远。

    关于扩展自定义主题

    主题以MVC方式实现,model(article, user等数据)会填充入模板文件然后通过doT等模板引擎渲染(你也可以更新一处更换成你熟悉的模板引擎),到时侯可能会增加一份新的主题以方便参考,文档以后会慢慢增加。

  • #18 damp_water 1408692293355

    @newghost #16

    fdasfads adfadsfasdf

  • #19 f2e.be 1409734474831

    我看下源码,websvr的session是写入在文件中的,websvr我可以单独拿出来用吧,就是没多少文档

  • #20 newghost 1409737465610

    @f2e.be #18

    websvr也是一个开源项目,起初是为了频繁重启的设备设计的,现在默认session也是存在内存中,session存放到文件需要设置sessionDir: 属性

    文档: https://github.com/newghost/websvr

  • #21 简交迅 1411005621517

  • #22 路乏方 1411658768942

    要是支持Markdown,那是极好的

  • #23 newghost 1411685983878

    @路乏方 #21

    这个中文版本的评论是支持MarkDown的,但是发布文章还是传统的方式。

  • #24 zkwap 1411695088684

    @路乏方 #21 自己修改下加入markdown就行了,很easy的

  • #25 莫耳轨 1421718421108

    怎么安装中文版呢?安装上了 默认是英文

  • #26 newghost 1421734630980

    @莫耳轨 #24

    访问 ourjs.newspaper.sh 或者

    node svr/ourjs.js config.newspaper.sh
    

    访问: http://localhost:8052

  • #27 俞斗孙 1434536610806

    222dssd

    • sd

    sd

    dsddsdsdsds sd

    cxcxcxcxcx

  • #28 任对立 1438679992106

    @withered_brook #0

    @newghost #25

    • 列表

  • #29 卞丝支 1441277676612

    有官方QQ群吗?想通过这个系统学习nodejs。。。。

  • #30 白川古 1441858672869

    是否能增加只缓存列表,只缓存前100篇文章的功能

  • #31 newghost 1441894864889

    @白川古 #29

    其实我们在其他项目中已经去掉了node.js中的文章缓存,所有session状态和文章都存储到了内存数据库redis中, 这个新版本可以通过布署ourjs集群来应对超大规模并发。

    如果文章量太大,redis内存消耗过多的话,也可以结合一些第三方的redis集群布署工具,对数据存储进行动态扩展。

    这个版本还需要进一步调试,不过也将开源。

  • #32 白川古 1441950739237

    @newghost #30

    不错啊,期待新版本.免去了每次都需要从文件里读取刷新缓存了. 但是纯redis的话有大量冷数据还是有点浪费内存了.

  • #33 巫乏艺 1458886735447

    You need to wait 185 seconds

    新发布文章时,出现这个提示,是为啥呢?

  • #34 newghost 1458903149839

    @巫乏艺 #32

    防止发贴机器人,你可以改成0取消。

  • #35 邱幻屿 1459402061161

    难道可以直接匿名发表

  • #36 dark_star 1466584499013

    0.0.x版本使用mongodb数据库应该怎么配置

  • #37 newghost 1466605487728

    @dark_star #35

    在config中更改: https://github.com/newghost/ourjs/blob/0.0.x/config.newspaper.js

    GENERAL_CONFIG.dataAdapter : mongoAdapter

    这样它会使用: https://github.com/newghost/ourjs/blob/0.0.x/svr/dataAdapter/mongoAdapter.js 进行存储

  • #38 dark_star 1466659607468

    @newghost #36

    十分感谢 mongAdapter.js第62行不加分号会报错,加分号以后就没问题了

  • #39 newghost 1466932579032

    @dark_star #37

        db.close()
        cb(docs.map(function(doc) { doc._id = doc._id.toString() return doc }) || [])
    

    这两行本质上是执行两个function指令,分号加不加均可,你的报错应该不是这里引起的

  • #40 linkstart 1482162826749

    楼主NB,能否请教一下anyNB 里面那两个文章采集程序怎么实现,能否开源学习一下

微信扫码 立即评论