Ubuntu Server 12.10 上安装 Node.js, ZeroMQ

字体大小: 中小 标准 ->行高大小: 标准

Node.js是一个基于google v8+javascript的服务端编程框架。对于搞云计算,用Node.js,来做系统管理Web站点是非常合适的。理由是:

1)足够简单。
2)足够快。
3)足够小巧。
4)前后端一致性。
好,下面是安装步骤:

首先确保系统安装了python, gcc, g++,如果没有则安装:
$ sudo apt-get install python
$ sudo apt-get install build-essential
$ sudo apt-get install gcc
$ sudo apt-get install g++

下载最新版源代码包:node-v0.8.14.tar.gz

解压:
$ sudo tar -zxf node-v0.8.14.tar.gz
$ cd node-v0.8.14

(一) 默认方式安装:

$ ./configure
$ make
$ sudo make install

(二) 选择目录方式安装:
$ ./configure --prefix=/opt/node
$ make -j 3    # 3=CPU核数+1
$ sudo make install

安装结束后, 用下面的命令检查安装的版本:
$ node --version
v0.8.14

接下来参考下面的文章开始你的nodejs编程之旅吧: http://www.linuxidc.com/Linux/2012-11/73363.htm

zeromq是一个基于c的消息队列编程框架。zeromq用处很多, 它具有:

1)足够简单。
2)足够快。
3)足够小巧。
等优点. 下面是安装步骤:

下载: zero-3.2.1
http://www.zeromq.org/

$ tar -xzf zeromq-3.2.1.tar.gz
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

下面写一个客户端和一个服务端测试:

mqclient.c

  1. //   // Hello World client  
  • // Connects REQ socket to tcp://localhost:5555   // Sends "Hello" to server, expects "World" back  
  • //   #include <zmq.h>  
  • #include <string.h>   #include <stdio.h>  
  • #include <unistd.h>    
  • int main (void)  { 
  •     void *context = zmq_ctx_new ();   
  •     // Socket to talk to server       printf ("Connecting to hello world server…\n"); 
  •     void *requester = zmq_socket (context, ZMQ_REQ);      zmq_connect (requester, "tcp://localhost:5555"); 
  •       int request_nbr; 
  •     for (request_nbr = 0; request_nbr != 10; request_nbr++) {          zmq_msg_t request; 
  •                           zmq_msg_init_data (&request, "Hello", 6, 0, 0); 
  •           printf ("Sending Hello %d…\n", request_nbr); 
  •         zmq_msg_send (&request, requester, 0);          zmq_msg_close (&request); 
  •                 printf ("prepare recv message\n");   
  •         zmq_msg_t reply;          zmq_msg_init (&reply); 
  •         if (-1==zmq_msg_recv (&reply, requester, 0)) {              printf("recv data error.\n"); 
  •         }          printf ("Received World %d\n", request_nbr); 
  •         zmq_msg_close (&reply);      } 
  •     zmq_close (requester);      zmq_ctx_destroy (context); 
  •     return 0;  } 

    mqserver.c

    1. //   // Hello World server  
    2. // Binds REP socket to tcp://*:5555   // Expects "Hello" from client, replies with "World"  
    3. //   #include <zmq.h>  
    4. #include <stdio.h>   #include <unistd.h>  
    5. #include <string.h>    
    6. int main (void)  { 
    7.         int ret;          char buf[5]="world"; 
    8.         buf[5] = 0;      void *context = zmq_ctx_new (); 
    9.       // Socket to talk to clients  
    10.     void *responder = zmq_socket (context, ZMQ_REP);      ret = zmq_bind (responder, "tcp://*:5555"); 
    11.         if (ret==0) {          printf("zmq_bind success\n"); 
    12.     } else {          printf("zmq_bind error=%d:%s\n", ret, strerror(errno)); 
    13.         exit(ret);          } 
    14.     while (1==1) {          // Wait for next request from client  
    15.                 printf("wait for clients...\n");          zmq_msg_t request; 
    16.         zmq_msg_init (&request);          ret = zmq_msg_recv (&request, responder, 0); 
    17.         printf ("Received=%d\n", ret);          zmq_msg_close (&request); 
    18.           // Do some 'work'  
    19.         sleep (1);   
    20.         // Send reply back to client           zmq_msg_t reply; 
    21.         zmq_msg_init_data (&reply, buf, 6, 0, 0);          ret = zmq_msg_send (&reply, responder, 0); 
    22.                 printf("zmq_msg_send ret=%d\n", ret);          zmq_msg_close (&reply); 
    23.     }      // We never get here but if we did, this would be how we end  
    24.     zmq_close (responder);      zmq_ctx_destroy (context); 
    25.     return 0;  } 

    下面是编译命令:
    $ gcc mqclient.c -o mqclnt -lzmq
    $ gcc mqserver.c -o mqsrvr -lzmq

    运行:
    $ ./mqsrvr &
    $ ./mqclnt

    结束!

    此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/65134.html