使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3

  1. 使用cluster模块

创建cluster.js,调用app.js

var cluster = require(‘cluster‘);
var os = require(‘os‘);

//获取CPU数量
var numCPUs = os.cpus().length;

var workers = {};
if(cluster.isMaster) {
  //主进程分支
  cluster.on(‘exit‘, function (worker) {
    //当一个工作进程结束时,重启工作进程
    delete workers[worker.pid];
    worker = cluster.fork();
    workers[worker.pid] = worker;
  });
  //初始开启与CPU数量相同的工作进程
  for(var i = 0; i < numCPUs; i++) {
    var worker = cluster.fork();
    workers[worker.pid] = worker;
  }
} else {
  //工作进程分支,启动服务器
  var app = require(‘./app‘);
  app.listen(3000);
}
//当主进程被终止时,关闭所有工作进程
process.on(‘SIGTERM‘, function() {
  for( var pid in workers) {
    process.kill = (pid);
  }
  process.exit(0);
});

在终端运行

$node cluster.js

可以看到进程列表中启动了多个node进程(4核CPU)。

cluster.js创建与CPU核心数个数相同的服务器进程,以确保充分利用CPU资源。通过cluster启动的工作进程可以直接实现端口复用,因此所有工作进程只需监听同一个端口。

2.启动脚本

建立mynodeapp文件

#! /bin/sh

NODE_ENV=production
DAEMON="node /home/nick/nodejs/examples/express_example/cluster.js"
NAME=MyNodeApp
DESC=MyNodeApp
PIDFILE="mynodeapp.pid"

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

exit 0
$chmode +x mynodeapp

赋予执行权限,其通过nohup启动服务器,使进程不会因为退出终端而关闭,同时将主进程pid写入文件,当调用结束时,从文件读取pid,终止主进程以关闭服务器。

运行结果却不好,可以启动程序,但是无法关闭。

Ubuntu 创建开机自启动脚本的方法

自动编号:

$ cd /etc/init.d
$ sudo chmod 755 /etc/init.d/filename
$ sudo update-rc.d filename defaults

指定编号:

$ cd /etc/init.d
$ sudo chmod 755 /etc/init.d/filename
$ sudo update-rc.d filename defaults N

编号必须在 0 至 99 之间。

如果要卸载启动脚本:

$ cd /etc/init.d
$ sudo update-rc.d -f filename remove

使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3,布布扣,bubuko.com

时间: 2024-12-24 19:06:44

使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 3的相关文章

《node.js开发指南》读后感

<node.js开发指南>这部只有180多页的书,我花了一个多月的业余时间算是粗略看完了.中间因为公司项目的加班,中断了几次.大大拖累进度,现在空出来时间,写一点自己的小小感想吧. 先从缺点开始: 我认为最大缺点就是老了.node是一个快速变化的东东,这本书上的内容,在现在的node上出现了很大的分叉.比如,书中提到安装node的时候,使用系统的apt-get或yum工具安装.可是这样安装之后的node.js的终端工具是nodejs,而不是node.这个就导致了一个新的问题,在这本书中的后一节

电子书 Node.js开发指南.pdf

<图灵原创:Node.js开发指南>首先简要介绍Node.js,然后通过各种示例讲解Node.js的基本特性,再用案例式教学的方式讲述如何用Node.js进行Web开发,接着探讨一些Node.js进阶话题,最后展示如何将一个Node.js应用部署到生产环境中. <图灵原创:Node.js开发指南>面向对Node.js感兴趣,但没有基础的读者,也可供已了解Node.js,并对Web前端/后端开发有一定经验,同时想尝试新技术的开发者参考. 限个人学习使用,不得用于商业用途,请在下载后2

node.js开发指南读书笔记(1)

3.1 开始使用Node.js编程 3.1.1 Hello World 将以下源代码保存到helloworld.js文件中 console.log('Hello World!'); console.log('%s:%d', 'hello', 25); 找到文件位置,执行node helloworld.js.结果如下: 3.1.2 Node.js命令行工具 输入:node --help可以看到详细的帮助信息. 除了直接运行脚本外,node --help显示的用法中说明了另一种输出hello wor

NODE.JS开发指南学习笔记

1.Node.js是什么 Node.js是一个让JS运行在服务器端的开发平台,它可以作为服务器向用户提供服务.Node.js中的javascript只是Core javascript,或者说是ECMAJavaScript的一个实现.2.Node.js能做什么 JS是为客户端为生,而Node.js是为网络而生.利用它可以轻松的开发出很多网站.社交应用.服务器等等. Node.js内建有一个HTTP服务器支持,可以实现一个网站和服务器的组合.3.异步式I/O和事件驱动 Node.js最大的特点就是采

Node.js 开发指南笔记

第一章:node简介 介绍了node是什么:node.js是一个让javascript运行在服务器端的开发平台, node能做些什么:[书上的] 具有复杂逻辑的网站 基于社交网络的大规模Web应用 Web Socket服务器 TCP/UDP套接字应用程序 命令行工具 交互式终端程序 带有图形用户界面的本地应用程序 单元测试工具 客户端Javascript编译器 node能做些什么:[网上比较好的一段说明]: NodeJS的作者说,他创造NodeJS的目的是为了实现高性能Web服务器,他首先看重的

NODE.JS开发指南学习笔记2

1.核心模块 核心模块是Node.js的心脏,由一些精简高效的库组成,为其提供了基本的API.2.全局对象 global.所有的的全局变量都是其属性.其根本的作用是作为全局变量的宿主.3.全局变量 1.process:描述当前Node.js的进程状态的对象,提供一个与操作系统的简单接口. 方法 process.argv 命令行参数数组 三个参数1.node 2.脚本文件名 3.运行参数 1.process.stdout: 标准输出流,通常使用的console.log()向标准输出打印字符,而pr

【读书笔记】Node.js开发指南

一:Node.js是什么? 正如当年为了统一 JavaScript 语言标准,人们制定了 ECMAScript 规范一样,如今为了统一 JavaScript 在浏览器之外的实现, CommonJS 诞生了. CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足. CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环下运行,就像用 C++ 编写的应用程序可以使用不同的

node.js 开发指南--调试

在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止Node.js 再重新运行才会奏效.这是因为 Node.js 只有在第一次引用到某部份时才会去解析脚本文件,以后都会直接访问内存,避免重复载入,因为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启. 1.小技巧——使用 supervisor npm install -g supervisor 执行 $ supervisor app.js supervisor 这个小工具可以解决开

【Node.js开发指南 BYVoid】3.1 开始使用 Node.js编程

3.1.1 Hello World 打开vscode, 输入console.log("helloworld"); 新建保存文件名为helloworld.js 打开终端,进入helloword.js所在的目录(shift+右键空白处,在此处打开命令行),执行 node helloworld.js 常用输出指令 console.log console.error console.log是最常用的指令,和C语言中的printf功能类似,也可以接受任意多个参数,支持%d %s变量的引用 3.1

mac下配置Node.js开发环境、express安装、创建项目

mac下配置Node.js开发环境.express安装.创建项目 一.node.js的安装 去官网下载对应的平台版本就可以了,https://nodejs.org 二.express安装 sudo npm install -g express 进行全局安装. 这时有可能会安装不成功,用下面的命令即可 sudo npm install express-generator -g 三.创建项目 终端输入 express -e 你的项目名称 -e 为使用ejs框架 express默认为jade,为了 学