月度存档: 十二月 2011

用NodeJs + MongoDB搭建web服务 (一)

最近的一个项目里试用了NodeJs+MongoDB的组合,已经搭建完成,做下简要记录。

首先安装Mongo,各个平台都有做好的文件包可以直接使用,很简单,前面详细写了mongo的一些设置,后面等开始部署分片之后再专门叙述。

node则需要编译安装,安装之后加装npm,便可以方便的获取各种包。npm下来的包有两种:全局运行的工具包如coffee-script,也有直接下载到当前文件目录的模块如mongoskin。

////插一嘴coffee-script:确实可以省一些代码,不过开始时候最好不要用,反倒容易影响了对一些细节的理解,建议对js非常熟悉了之后可以再考虑更换。

语法方面扫了不少的雷,由于想通顺一下底层流程没有选用express,下次则开始尝试使用框架。

配置方面值得一提,由于还需要运行nginx下的其他业务,没法使用node自己做反向代理,会造成端口冲突。最后选用的办法是使用指定cpu内核运行多个node事例,再用nginx做反向代理。node和nginx进程制定cpu的方法随意搜有很多,也很简单。有个小改进是网上说建立多个index.js指定不同端口,其实完全没必要,node运行时代码内部是可以取到外部附带参数的,结合cpu绑定将代码写在shell里可以很方便的对多个事例进行重启操作。

一个漏掉的点是测试,node貌似也是可以运行自动测试的,不过还没尝试。//TODO

下一步就是node 和 php的性能比拼了,敬请期待。

Something more about Mongo

User –port variable to specify the port number, use –bind_ip to specify IP addresses those you want to listen to, don’t forget to separate them with comma.

It’s much bette to put all your settings in a configuration file, then bind it with -f or –config.

Looking forward to the exploration of master-slaver and sharding style of mongo next day.

MongoDB的用户权限设置

MongoDB安装很简单,直接启动就可以上手,不过并没有提示需要登陆,这里就mongo的表权限设置进行一下简要介绍。

启动MongoDB的时候有一个 –auth参数,如果附带这个参数的话则是以权限控制方式运行mongo,否则具有全部权限,所以第一步需要做的是使用不带 –auth 的方式启动mongo。

mongo的另一个特点是在哪个库下建立用户,则这个用户获得当前库的所有权限;在admin库下建立的用户获得全部系统权限。所以我们要做的第一件事是:

>use admin

>db.addUser(‘root’,'xxxxxx’)

退出,现在带着–auth参数重新启动mongo,可以发现下面命令会提示没有权限。

>show collections

下面我们使用刚才的超级用户登陆,注意登陆之前需要切换到系统库

>use admin

switched to db admin

>db.auth(‘root’,'xxxxxx’)

登陆成功,之后我们再去test库建立新的用户。

>use test

switched to db test

>db.addUser(‘test’,'test’)

建立成功之后退出再登陆,实验一下test用户只有test库的权限。

注意:当登陆了超级用户权限之后,再登陆局部用户权限是无法替代超级用户权限的。