rabbitMQ安装笔记

根据自己的实验结果,同网上的其他教程资料参考,自己也笔记一份搭建手册供以后生产环境使用!

一、Erlang安装

RabbitMQ是基于Erlang的,所以首先必须配置Erlang环境。

  1. 安装依赖包,我的实验环境是需要安装ncurses-devel,至于其他的可按实际需要安装,这在后面erlang安装完成后有提示的

    yum install ncurses-devel

  2. 2.下载Erlang源码otp_src_R15B03-1.tar.gz,并解压到指定位置

    tar -xzvf otp_src_R15B03-1.tar.gz

  3. 进入安装目录,依次执行以下操作

    ./configure –prefix=/usr/local/erlang –without-javac //不用java编译,故去掉java避免错误

    make && make install

  4. 上述编译安装无误后,配置环境变量

    vi /etc/profile

    export PATH=$PATH:/usr/local/erlang/bin

  1. 在终端输入erl看可否进入交互界面,如下

    Erlang/OTP 18 [erts-7.0] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Read More

理解package.json中devDependencies和dependencies的区别

用node写项目经常会用到第三方的包,阅读人家工程代码时留意到package.json里面除了我们常见的dependencies节点属性外,还看到了另外一个devDependencies,那么它们二者有什么区别呢?

dependencies 程序正常运行需要的包,是需要发布到生产环境的。devDependencies 是开发需要的包,比如一些单元测试的包之类的。其中前者依赖的项该是正常运行该包时所需要的依赖项,而后者则是开发的时候需要的依赖项,像一些进行单元测试之类的包(jslint)。

换言之,在使用 –save-dev 安装的插件它是被写入到 devDependencies对象里面去,而使用 –save 安装的插件,则被写入到 dependencies 对象里面去。

如果将包下载下来在包的根目录里运行npminstall默认会安装两种依赖,如果只是单纯的使用这个包而不需要进行一些改动测试之类的,可以使用npm install –production,只安装dependencies而不安装devDependencies。反之npm install xxx -dev

node.js作为windows服务启动

因为特殊原因,项目里node服务器需要部署在windowsServer上(怀念阿里云啊),很明显之前的forever神器就不能用了。但是回到现实中该怎么在windows上部署呢?不可能叫人家开个cmd窗口吧?怪怪的感觉,而且管理员稍不注意还容易将cmd误操作将其关闭!难不成再叫人家到目标目录,node app.js?

后来到网上搜索找到了一篇文章 将node.js程序注册为windows服务,然后按照上面的方法照做,也下载了文中提到的两个必备工具:

  1. Instrsrv.exe installs and removes system services from Windows NT.
  2. Srvany.exe allows any Windows NT application to run as a service.

最后比较遗憾的是,尽管在windows服务里面也查看到了我已经注册到的服务,但是怎么都跑不起来,重启也是一个情况。顺带说一句,它这个方案真是麻烦又难用。于是继续搜索,后来终于找到了一个工具可以解决,一个叫nssm的工具(“the Non-Sucking Service Manager”),它会监控你安装的node服务,如果node挂了,nssm会自动重启它。可以看官网深入了解。

Read More

解决spydroid-ipcamera视频串流的问题

根据项目需求,要实现android端推送视频流,然后在客户端(这里是浏览器)里播放。后面选取的方案是采用Google Code上的一个开源项目:spydroid-ipcamera,它能在Android手机中建立一个精简的HTTP Server和RTSP Server。这跟以往的如需要类似red5流媒体服务器中转的解决方案不一样,它是在推送端直接建立服务器,让需要显示的客户端(浏览器)去连接它。

Read More

node.js获取本机IP地址

在node.js里面获取本机IP很简单,在OS模块里面,直接调用networkInterfaces(),就可以列出你机子的所有网络接口的信息,它返回的是一个数组,如官网列出的信息:

1
2
3
4
5
6
7
8
9
10
11
{ lo0: 
[ { address: '::1', family: 'IPv6', internal: true },
{ address: 'fe80::1', family: 'IPv6', internal: true },
{ address: '127.0.0.1', family: 'IPv4', internal: true } ],
en1:
[ { address: 'fe80::cabc:c8ff:feef:f996', family: 'IPv6',
internal: false },
{ address: '10.0.1.123', family: 'IPv4', internal: false } ],
vmnet1: [ { address: '10.99.99.254', family: 'IPv4', internal: false } ],
vmnet8: [ { address: '10.88.88.1', family: 'IPv4', internal: false } ],
ppp0: [ { address: '10.2.0.231', family: 'IPv4', internal: false } ] }

据此,我们可以根据实际需要取到相应的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

function getIPAdress(){

var interfaces = require('os').networkInterfaces();

for(var devName in interfaces){

var iface = interfaces[devName];
for(var i=0;i<iface.length;i++){
var alias = iface[i];
if(alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal){
return alias.address;
}
}
}
}

Read More