Page 149 - Node.js开发指南
P. 149

142  第 6 章  Node.js 进阶话题


                 在终端中执行node cluster.js 命令,可以看到进程列表中启动了多个 node 进程(8
             核CPU):


                 12408 ?       00:01:28 node
                 12411 ?       00:01:27 node
                 12412 ?       00:01:28 node
                 12414 ?       00:01:31 node
                 12416 ?       00:01:34 node
                 12418 ?       00:01:44 node
                 12420 ?       00:01:38 node
                 12422 ?       00:01:34 node
                 12424 ?       00:02:14 node

                 终止工作进程,新的工作进程会立即启动,终止主进程,所有工作进程也会同时结束。
             这样,一个既能利用多核资源,又有实现故障恢复功能的服务器就诞生了。


             6.3.3  启动脚本

                 接下来,我们还需要一个启动脚本来简化维护工作。如果你维护过Linux 服务器,会对

             /etc/init.d/  下面的脚本有印象。例如使用/etc/init.d/nginx start  和/etc/init.d/
             nginx stop 可以启动和关闭Nginx 服务器。我们通过bash 脚本也来实现一个类似的功能,
             创建microblog 并使用chmod +x microblog 赋予其执行权限,脚本内容为:

                 #! /bin/sh

                 NODE_ENV=production
                 DAEMON="node cluster.js"
                 NAME=Microblog
                 DESC=Microblog
                 PIDFILE="microblog.pid"

                 case "$1" in
                    start)
                         echo "Starting $DESC: "
                                 nohup $DAEMON > /dev/null &
                         echo $! > $PIDFILE
                         echo "$NAME."
                                 ;;
                 stop)
                         echo "Stopping $DESC: "
                                 pid='cat $PIDFILE'
                         kill $pid
                                 rm $PIDFILE
                         echo "$NAME."
                                 ;;
                 esac

                 exit 0
   144   145   146   147   148   149   150   151   152   153   154