nodejs安插格局,编程基础

nodejs安顿格局-pm2(一)

2016/12/03 · JavaScript
· NodeJS

正文笔者: 伯乐在线 –
pangjian
。未经小编许可,禁止转发!
迎接参预伯乐在线 专栏小编。

亚洲必赢官网 1

眼前Nodejs开发中有众多痛点,其中有一个是修改完代码将来必要大家重启服务才能看出效果。那样三回次的杀进度、重启,杀进程、重启很令人头大。程序员是最痛恨重复工作的物种,在此之前有询问过的同室也许清楚foreverforever可以帮大家解决地点的标题,通过对资源转移的检测做到变化后自行重启。开发阶段大家选取node file.js来启动此外由于Nodejs的单线程,任何更加都会造成整个服务中断,那对于生产上长日子提供劳动的顺序来讲是不得以的,forever可以帮我们在更加后重启,有限支撑服务平素在线,我想那也就是它名字的由来吗。但自己想说的是forever不够“高!大!上!”。接下来我要介绍一个足足高大上的神器–
pm2

<<编程基础-语言JavaScript.Nodejs.Mobile>>
https://github.com/openstf

 

http://www.cnblogs.com/lan-writenbook/p/5473345.html
https://mp.weixin.qq.com/debug/wxadoc/dev/api/
http://blog.csdn.net/lilong\_dream/article/details/23356513
http://www.linuxprobe.com/chapter-03.html
http://www.cnblogs.com/fnng/category/410088.html

简介

pm2=P(rocess)
M(anager)2,是可以用来生产条件的Nodejs的历程管理工具,并且它放到一个载荷均衡。它不但可以确保服务不会停顿一向在线,并且提供0秒reload功效,还有其余一层层进度管理、监控成效。并且动用起来分外不难。上面我将把我的施用进度分享出来,Nodejs应用是一个基于Express
4.x的运用,名称是Wolverine

<pre>

须要(这段话是摘抄参考文档的,因为小编也想那样说):

      
公司由于自身隐私保养要求,不想把自己的代码开源到包管理区,但是又须求一套完整包管工具,来保管更多的机件、模块和种类。对于前端,最熟识的其实npm,bower等;不过bower的商海包容性明显没有npm强壮,加之commonjs规范的逐步成熟。npm应该是前端包管理的不二选拔。

信用社对于搭建本地私有npm库有如下要求:

  1. 民用包托管在里边服务器中

  2. 品类中采取了国有仓库上的公共包,也利用了其中服务器上的私有包

  3. 期待下载的时候,公共包走公共仓库,私有包走内部服务器的民用仓库

  4. 服务器硬盘有限,希望只缓存下载过的包,而不是一切联机。

  5. 对此下载,发布npm包有对应的权能管理,安装方便,配置不难,珍爱少。

pm2是一个富含负载均衡成效的运用进度管理器,类似有Supervisor,forever。
Linux
Binaries下载地址:https://nodejs.org/dist
cd oneinstack/src
wget
https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.gz
tar xzf node-v4.2.4-linux-x64.tar.gz
cp node-v4.2.4-linux-x64/bin/node /usr/local/bin/
cp -R node-v4.2.4-linux-x64/lib/node_modules /usr/local/lib/
ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npm
npm install pm2@latest -g #设置新型版本pm2模块
PS:
倘使您的主机不可能连接公网,先找到能连公网的主机安装上边的不二法门安装pm2,然后拷贝到你要安装的主机。拷贝如下目录:
/usr/local/bin/node
/usr/local/lib/node_modules
再创制连锁软连接

安装

条件清单:

  • windows7 x64
  • node v5.0.0
  • npm 3.3.6

全局安装pm2

$ npm install pm2 -g

1
$ npm install pm2 -g

更新

$ pm2 update

1
$ pm2 update

pm2和forever是开行Nodejs服务常用到的多少个工具。使用那三个指令可以使node服务在后台运行(类似于linux的nohup),其余它们能够在劳务因不胜或其余原因被杀掉后开展机动重启。
由于Node的单线程特征,自动重启能很大程度上的增加它的健壮性。
正文不相比较两者工具优劣,只是结合自己的采纳,简要介绍怎样在工程陈设时更好的应用pm2。

Sinopia 是一个零配置的私房的带缓存效率的npm包管理工具。

三、PM2常用命令

启动

先前启动Wolverine是利用package.json的scripts来落到实处的,只必要实践npm run start就可以启动,配置如下:

“scripts”: { “start”: “node ./bin/www”, “debug”: “node debug ./bin/www”
},

1
2
3
4
5
"scripts": {
    "start": "node ./bin/www",
    "debug": "node debug ./bin/www"
 
  },

使用pm2俺们可以在start处配置成
pm2 ./bin/www,命令后边协助加参数来贯彻watch、cluster多进程格局等功效。我不太喜欢一大串的通令,于是自己使用了安插文件的方法。
Wolverine的根目录,我创立了一个processes.json安插文件,配置文件内容如下,注释写的也很清楚了

{ “apps” : [{ “name” : “Wolverine”, //名称 “script”: “./bin/www”,
//程序入库 “cwd”: “./”, //根目录 “watch”:[ “bin”, “common”, “configs”,
“public”, “routes”, “views” ],//需求监控的目录
“error_file”:”./logs/app-err.log”,//错误输出日志
“out_file”:”./logs/app-out.log”, //日志 “log_date_format”:”YYYY-MM-DD
HH:mm Z” //日期格式 }] }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "apps" : [{
    "name" : "Wolverine",  //名称
    "script": "./bin/www", //程序入库
    "cwd": "./",           //根目录
    "watch":[
"bin",
"common",
"configs",
"public",
"routes",
"views"
],//需要监控的目录
    "error_file":"./logs/app-err.log",//错误输出日志
    "out_file":"./logs/app-out.log",  //日志
    "log_date_format":"YYYY-MM-DD HH:mm Z" //日期格式
    }]
}

随着,我在package.json中扩张了一条

“pm2”: “pm2 start processes.json”

1
"pm2": "pm2 start processes.json"

在启动就直接输入如下命令就好:

$ npm run pm2

1
$ npm run pm2

看来下边的界面,就开行成功了,然后大家就足以关掉这些窗口了,服务不会由此为止,是还是不是伟人上多了。
亚洲必赢官网 2

基本指令

npm install pm2 -g : 全局安装。
pm2 start app.js : 启动服务,入口文件是app.js。
pm2 start app.js -i [n] --name [name]
启动n个进度,名字命名为name。
npm restart [name or id] : 重启服务。
npm reload [name or id]
和rastart成效雷同,可是可以完毕0s的无缝过渡;假若有nginx的使用经验,可以比较nginx
reload指令。
pm2 start app.js --max_memory_restart 1024M
当内存超越1024M时自动重启。
要是工程中有比较费力的内存走漏难题,那么些好不不难一个折中方案。
pm2 monit : 对服务开展监察。

越多的授命可以参考 PM2
介绍

1.要安装的软件

比方你现在早就写好了一个app.js的文本,必要启动,你可以采纳pm2进行田间管理

管制和监理

开行成功的界面会显示App
name和id,这多少个值很要紧。当然那三个值都足以在processes.json配置文件举行配置。
打开命令行,在其余路径下,输入

$ pm2 list

1
$ pm2 list

就能见到启动时的图样界面,方便大家查阅所有通过pm2管理的Nodejs服务。

输入,上边发号施令协作id或者name能够查阅某一个经过的详细音信

$ pm2 show Wolverine 或者 $ pm2 show 0

1
2
$ pm2 show Wolverine 或者
$ pm2 show 0

亚洲必赢官网 3
内容提到重启次数、运行时刻、脚本路径、参数、日志路径、运行情势等等新闻
输入

$ pm2 monit

1
$ pm2 monit

终止、重启等一声令下

$ pm2 stop [app-name|id] #甘休某一个进程,可以应用app-name或者id $
pm2 stop all #悬停所有进程 $ pm2 restart all #重启所有的进程 $ pm2
delete [app-name|id]#去除并为止进度 $ pm2 delete all
#删去并终止所有进度

1
2
3
4
5
6
7
$ pm2 stop [app-name|id]  #停止某一个进程,可以使用app-name或者id
$ pm2 stop all            #停止所有进程
 
$ pm2 restart all         #重启所有的进程
 
$ pm2 delete [app-name|id]#删除并停止进程
$ pm2 delete all          #删除并停止所有进程

可以进一步查看每一个劳务的cpu、内存动态占用情形。
亚洲必赢官网 4

高等用法

pm2支持配置文件启动:
pm2 ecosystem: 生成配置文件ecosystem.json
pm2 startOrRestart /file/path/ecosystem.json : 通过配备文件启动服务

如下是自己付出时ecosystem.json的情节:

  {
    /**
    * Application configuration section
    * http://pm2.keymetrics.io/docs/usage/application-declaration/
    * 多个服务,依次放到apps对应的数组里
    */
    apps : [
    // First application
        {
            name      : "nova",
            max_memory_restart: "300M",
            script    : "/root/nova/app.js",
            out_file : "/logs/nova_out.log",
            error_file : "/logs/nova_error.log",
            instances  : 4,
            exec_mode  : "cluster",
            env: {
                NODE_ENV: "production"
            }
        }
    ]
 }

上述选择cluster形式启动了4个服务过程;即便服务占用的内存当先300M,会自行进行重启。

软件简介

nodejs安插格局,编程基础。nodejs/npm 软件名称: node-v6.9.1-linux-x64.tar.gz  
下载地址:

设置命令:

tar -xvf node-v6.9.1-linux-x64.tar.gz

sinopia    版本:1.4.0 安装命令: 

npm install -g sinopia  

pm2   版本:2.1.4  设置命令

 npm install -g  pm2  

nrm   版本:1.0.0  设置命令

npm install -g nrm  
  1. 启动

日志监控

只要您直接使用tail -f log_file.log log_error.log来查阅日志,你也许会爱上上边的那么些成效。

$ pm2 logs $ pm2 logs [app-name]

1
2
$ pm2 logs
$ pm2 logs [app-name]

咱俩可以实时查看所有进度的日记,或者只查看某一个。我们甚至可以利用json格式查看日志。

$ pm2 logs –json

1
$ pm2 logs –json

督察工具

pm2的监督功效是其一大特点,它提供的监察服务Keymetrics
monitoring
很酷炫,感兴趣的可以部署玩一下。

规划目录(下为本次安装的实际目录,可依照实际条件调整)

目录 账户 备注
npm、nodejs解压目录 /opt/software nadmin

 

sinopia启动时目录 /home/nadmin nadmin

 

sinopia的passwd路径 /home/nadmin/node_htpasswd nadmin  
sinopia的storage路径 /home/nadmin/sinopia/storage nadmin 建议磁盘空间较大不推荐放在home目录

pm2 start app.js

Web API

假定你不但想监控被pm2管理的进度,还索要监控进度所运行的机器的音信,你可以行使下边那么些API

$ pm2 web

1
$ pm2 web

pm2会启动一个称为pm2-http-interface的历程提供web服务。你打开浏览器输入http://127.0.0.1:9615,是或不是被看到的结果惊艳到了。
亚洲必赢官网 5
pm2提供的web api通过json输出了过多音信。几乎结构得以看截图:
亚洲必赢官网 6

拿出您的想象力,大家得以支付一个运用来调用此api,就足以付出出一个图形界面的督查软件了。。。

局地思索

2.现实安装步骤(Server端)

pm2 start app.js –name my-api #my-api为PM2进度名称

其它

pm2的优势和职能还不止那些,后续还会有小说详述越来越多高档的用法,比如进度復苏、图形界面,模块,甚至的机能开发。最主要的优势我想就是它的平安了,pm2的功能全体透过了测试,有超常1000个测试。同时提供Windows、MacOSX(OSX)、Linux的安静版本。PayPal、微软、IBM等等大厂都在动用。大家早已有充足的说辞把它使用到生产环境上。

打赏帮衬自己写出越来越多好文章,谢谢!

打赏小编

1. 劳动进度数

关于要启动多少个经过,可以通过服务器的内核数举行规定,多少个基本就启动多少个劳务。指令如下:

  # 查看物理CPU个数
  cat /proc/cpuinfo| grep "physical id" | sort| uniq | wc -l

  # 查看每个物理CPU中core的个数(即核数)
  cat /proc/cpuinfo| grep "cpu cores"| uniq

  # 查看逻辑CPU的个数
  cat /proc/cpuinfo| grep "processor"| wc -l

自然可以启动四个端口,一个端口号对应一个劳务,那样的话就要求nignx来做负载均衡了。

开创账户nadmin

$ useradd nadmin

pm2 start app.js -i 0 #基于CPU核数启动进度个数

打赏协助自己写出更加多好小说,谢谢!

任选一种支付格局

亚洲必赢官网 7
亚洲必赢官网 8

1 赞 7 收藏
评论

2. 是或不是须求nginx

nginx可以做的事体要害有多少个:

  1. 反向代理,完毕简单的负荷均衡:
    假诺有多台服务器或者一台服务器三个端口,可以考虑用nginx。

  2. 静态资源缓存:把部分静态资源(如静态页面,js等资源文件)放到nginx里,可以极大的增强服务的特性。

安装node和npm

安装步骤1的目录和指令,解压软件 node-v6.9.1-linux-x64.tar.gz

(注:npm会在设置node的时候共同安装)

$ tar -xvf node-v6.9.1-linux-x64.tar.gz

添加node_home到环境变量,用root账户修改/etc/profile

$vim /etc/profile          #追加
NODE_HOME=/opt/software/node-v6.9.1-linux-x64
PATH=$PATH:$NODE_HOME/bin

source 使配置生效

$ source /etc/profile

陈设生效之后,在自由地点可查看版本如下:

1 $ node -v
2 v6.9.1
3 $ npm -v
4 3.10.8  

pm2 start app.js –watch #实时监控app.js的主意启动,当app.js文件有改变时,pm2会自动reload

  1. 翻看进程

有关小编:pangjian

亚洲必赢官网 9

庞健,金融IT男。
个人主页 ·
我的篇章 ·
5 ·
  

亚洲必赢官网 10

3. 自动化陈设

由此shell脚本达成资源拉取、服务重启、nginx缓存更新等操作,再合作pm2的督察功效,就从头达到了一个后端工程布署的标配了。

配置npm

先查看npm的布署文件地方

$npm config get userconfig
/home/nadmin/.npmrc

修改此布局文件,修改后翻看,内容如下

$ cat /home/nadmin/.npmrc
proxy=http://网络代理ip:8080/
https-proxy=http://网络代理ip:8080/
no_proxy=本地yum源ip
registry=https://registry.npm.taobao.org/

也可由此命令设置http网络代理地址和npm server的地方,如下:

$ npm config set proxy 

$ npm config set https-proxy 

$ npm config set registry “”

出于上手续npm已经设置配备已毕,所以上边的装置软件可以经过npm命令进行

pm2 list

参考资料:

  1. pm2官网

  2. node-deploy-practice

  3. pm2监控

pm2是这几个了不起工具,它提供对依照node.js的花色周转托管服务。它根据命令行界面,提供许多特征:
内置的负载均衡器等等,上边大家就一同来探视吧。

一、简介

pm2是一个分包负载均衡成效的行使进程管理器,类似有Supervisor,forever。

二、安装

Linux
Binaries下载地址:https://nodejs.org/dist
cd oneinstack/src
wget
https://nodejs.org/dist/v4.2.4/node-v4.2.4-linux-x64.tar.gz
tar xzf node-v4.2.4-linux-x64.tar.gz
cp node-v4.2.4-linux-x64/bin/node /usr/local/bin/
cp -R node-v4.2.4-linux-x64/lib/node_modules /usr/local/lib/
ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npm
npm install pm2@latest -g #安装新型版本pm2模块
PS:
若是你的主机不可以连接公网,先找到能连公网的主机安装上边的法子安装pm2,然后拷贝到你要设置的主机。拷贝如下目录:
/usr/local/bin/node
/usr/local/lib/node_modules
再创立连锁软连接

三、PM2常用命令

比方你现在已经写好了一个app.js的文本,要求启动,你可以利用pm2开展田间管理

  1. 启动

安装sinopia

$npm install -g sinopia

pm2 show 0 或者 # pm2 info 0 #查看进程详细音讯,0为PM2进度id

  1. 监控

pm2 start app.js

配置sinopia

Sinopia的特性是,你在哪个目录运行,它的就会在对应的目录下创建和谐的文件。目录下默许有八个文本:config.yaml和storage,htpasswd 是充分用户之后自动创制的

鉴于每便启动默许的config.xml文件是从原始文件default.yaml拷贝而来,可先修改sinopia原始的default.yaml

地方:sinopia安装目录/conf/ default.yaml

查看

$ pwd
/opt/software/node-v6.9.1-linux-x64/lib/node_modules/sinopia/conf
$ ll
total 12
-rw-rw-r-- 1 nadmin nadmin 1309 Nov 9 19:52 default.yaml
-rw-rw-r-- 1 nadmin nadmin 4076 Jun 7 2015 full.yaml
-rw-rw-r-- 1 nadmin nadmin   39 Jun 7 2015 README.md

修改落成,内如下:

storage: ./storage
auth:
htpasswd:
   file: /home/nadmin/node_htpasswd
uplinks:
npmjs:
   url: http://registry.npm.taobao.org/
packages:
'@*/*':
   access: $all
   publish: $authenticated
'*':
   access: $all
   publish: $authenticated
   proxy: npmjs
logs:
- {type: stdout, format: pretty, level: http}
listen: 0.0.0.0:4873
http_proxy: http://代理服务器ip:8080
https_proxy: http://代理服务器ip:8080

pm2 monit

  1. 停止

pm2 start app.js –name my-api #my-api为PM2经过名称

启动 sinopia

在规划好的开行目录下执行命令sinopia

$ pwd
/home/nadmin
$ sinopia
warn --- config file - /home/nadmin/sinopia/config.yaml
warn --- http address - http://0.0.0.0:4873/
http --> 200, req: 'GET http://registry.npm.taobao.org/express', bytes: 0/578356
http <-- 200, user: admin, req: 'GET /express', bytes: 0/34448
http --> 200, req: 'GET http://registry.npm.taobao.org/type-is', bytes: 0/54083

sinopia已经启动,可正常使用,此种方法日志会输出到控制台,不指出利用,前边会介绍使用pm2对sinopia进度展开托管启动的方法。

访问 查看页面,看到如下页面,表达sinopia安装成功!

亚洲必赢官网 11

pm2 stop all #终止PM2列表中兼有的进程

pm2 start app.js -i 0 #据悉CPU核数启动进程个数

安装pm2

$npm install -g pm2

使用pm2启动sinopia

$ pm2 start sinopia
[PM2] Applying action restartProcessId on app [sinopia](ids: 0)
[PM2] [sinopia](0) ✓
[PM2] Process successfully started

动用pm2托管的进度能够确保进度永远是活着的,尝试通过kill
-9去杀sinopia的经过发现杀了未来又自行启起来。推荐使用此种格局启动sinopia.

 

pm2 开机自启动sinopia

pm2 startup centos,按照提醒用root账户执行:

# su -c "env PATH=$PATH:/opt/software/node-v6.9.1-linux-x64/bin pm2 startup centos -u nadmin --hp /home/nadmin"

pm2 启动sinopia 4个经过,且保存日志

$ pm2 start sinopia -i 4 --watch --merge-logs --log-date-format="YYYY-MM-DD HH:mm: Z" -l /opt/log/sinopia.log

保留当前配备,开机自启动时依据此时布署启动

$ pm2 save

 

pm2 stop 0 #停下PM2列表中经过为0的经过

  1. 重载

pm2 start app.js –watch #实时监控app.js的艺术启动,当app.js文件有改变时,pm2会自动reload

  1. 查阅进程

安装nrm

nrm是 npm registry 管理工具,
可以查阅和切换当前使用的registry。不设置也可以。

$npm install -g nrm

$ nrm ls
  npm ---- https://registry.npmjs.org/
  cnpm --- http://r.cnpmjs.org/
* taobao - https://registry.npm.taobao.org/
  nj ----- https://registry.nodejitsu.com/
  rednpm - http://registry.mirror.cqupt.edu.cn/
  npmMirror  https://skimdb.npmjs.com/registry/
  edunpm - http://registry.enpmjs.org/
  mytestnpm  http://ServerS:4873/  

应用命令

$ nrm add XXXXX # 添加本地的npm镜像地址

$ nrm use XXXX # 使用本址的镜像地址

pm2 reload all #重载PM2列表中有所的经过

pm2 list

3.验证

在客户端ServerC如果使用者已经设置npm/nrm并且一度正确配置

pm2 reload 0 #重载PM2列表中经过为0的历程

  1. 重启

pm2 show 0 或者 # pm2 info 0 #查看进程详细音信,0为PM2进度id

  1. 监控

1>npm install

现今验证使用刚刚搭建好的sinopia
npm库(

修改npm的走访代理为刚刚搭建好的

# cat .npmrc
registry=http://serverS:4873/

推行安装express的指令

$npm install express  

安装成功!

pm2 restart all #重启PM2列表中存有的进度

pm2 monit

  1. 停止

2>npm publish

当地假使有可用来发布的模块能够一向用,本地没有,使用npm
init按照提示创设一个。

起初化创建一个模块

$npm init  

一经急需登录才能publish则登录

运作npm adduser注册账号,倘若已经有账号间接运行 npm login

登录成功时可由此npm whoami查看

举行公布

# npm publish chenyu/
+ chenyu@1.0.0

去serverS查看刚刚publish的模块:成功!

 亚洲必赢官网 12

pm2 restart 0 #重启PM2列表中经过为0的进度

  1. 删除PM2进程

pm2 stop all #停下PM2列表中持有的历程

4.装置进度的有些报错息争决办法

pm2 delete 0 #去除PM2列表中经过为0的历程

pm2 stop 0 #终止PM2列表中经过为0的进程

  1. 重载

1>注册账号败北Incorrect username or password

npm set registry http://ServerS:4873

npm adduser --registry http://Servers:4873

报错:Incorrect username or password

解决办法:把.npmrc中的网络代理proxy/ https-proxy去掉即可。

pm2 delete all #剔除PM2列表中具备的进度

  1. 日志操作

pm2 reload all #重载PM2列表中装有的进度

2>在Client端使用新搭建的npm库安装软件的时候,报404不当

反省后发现,Server端的npm的.npmrc中和sinopia的config.yaml中上网代理未安装,加上后即可。

 

pm2 logs [–raw] #Display all processes logs in streaming

pm2 reload 0 #重载PM2列表中经过为0的进度

  1. 重启

5.附录(npm、pm2等的运用格局)

pm2 flush #Empty all log file

pm2 restart all #重启PM2列表中颇具的进度

config.xml文件详解:

config.yaml是sinopia的布署文件

pm2 reloadLogs #Reload all logs

  1. 升级PM2

pm2 restart 0 #重启PM2列表中经过为0的进度

  1. 删除PM2进程

1>其常用的配置

storage
仓库保存的地点,publish时仓库保存的地点。

auth: htpasswd
file:账号密码的文书地方,开端化时不设有,可指定须要手工创造。

               max_users:默许1000,为允许用户注册的数目。

                    为-1时,不容许用户通过npm adduser注册。

                  可是,当为-1时,可以通过一直编写htpasswd
file内容的格局丰盛用户。

语法:用户名:{SHA}哈希加密的字符=:autocreated 时间

加密算法:SHA1哈稀从此再转换成 Base64 输出就好

 

uplinks:
配置上游的npm服务器,主要用来请求的库房不存在时到上游服务器去拉取。

packages: 配置模块。access访问下载权限,publish包的宣布权限。

      格式如下:

scope:

          权限操作

 scope:二种情势

一种是 @*/* 表示某下属的某项目

  另一种是 * 匹配项目名称(名称在package.json中有定义)

 权限:

l  access: 表示哪种用户可以对金童玉女的类型进展设置(install)

l  publish: 表示哪个种类用户可以对金童玉女的花色进展揭穿(publish)

l  proxy: 如其名,那里的值是对应于 uplinks
的名号,假如地点不设有,允许去相应的uplinks去取。

  操作:

l  $all 表示所有人(已注册、未注册)都得以推行相应的操作

l  $authenticated
表示除非由此认证的人(已注册)可以执行相应操作,注意,任何人都得以去注册账户。

l  $anonymous 表示除非匿名者能够展开对应操作(常常无用)

l  或者也足以指定对应于以前我们布署的用户表 htpasswd
中的一个或八个用户,那样就显著地指定哪些用户可以执行匹配的操作

 

listen:配置监听端口和主机名。

       localhost:4873 #默认

       0.0.0.0:4873 #在具有网卡监听

代理:

#http_proxy:   #http代理

#https_proxy:   #https代理

#no_proxy: localhost,127.0.0.1  #不适用代理的iP

修改了配置文件后,运行命令

$ sinopia -c config.yml

npm install pm2@lastest -g #设置新型的PM2版本

pm2 delete 0 #剔除PM2列表中经过为0的进度

2>附录github中相比较全的配备和表明

#仓库
# path to a directory with all packages
storage: ./storage

# a list of users
#
# This could be deprecated soon, use auth plugins instead (see htpasswd below).
users:
  admin:
    # crypto.createHash('sha1').update(pass).digest('hex')
    password: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

#是否支持web接口
web:
  # web interface is disabled by default in 0.x, will be enabled soon in 1.x
  # when all its issues will be fixed
  #
  # set this to `true` if you want to experiment with web ui now;
  # this has a lot of issues, e.g. no auth yet, so use at your own risk
  #enable: true

  title: Sinopia
  # logo: logo.png
  # template: custom.hbs

auth:
  htpasswd:
    file: ./htpasswd
    # Maximum amount of users allowed to register, defaults to "+inf".
    # You can set this to -1 to disable registration.
    #max_users: 1000

# a list of other known repositories we can talk to
#上游npm服务器配置
uplinks:
  npmjs:
    url: https://registry.npmjs.org/

#设置请求无应答超时时间
    # amount of time to wait for repository to respond
    # before giving up and use the local cached copy
    #timeout: 30s

#设置数据认为最新的时间为2分钟,2分钟同一个数据的请求不会向上游服务器请求
    # maximum time in which data is considered up to date
    #
    # default is 2 minutes, so server won't request the same data from
    # uplink if a similar request was made less than 2 minutes ago
    #maxage: 2m

#设置访问失败达到某次数,就停止一段时间不访问上游服务器,默认是2次不应答,5分钟不去请求
    # if two subsequent requests fail, no further requests will be sent to
    # this uplink for five minutes
    #max_fails: 2
    #fail_timeout: 5m

    # timeouts are defined in the same way as nginx, see:
    # http://wiki.nginx.org/ConfigNotation

#包权限配置
packages:
  # uncomment this for packages with "local-" prefix to be available
  # for admin only, it's a recommended way of handling private packages
  #'local-*':
  #  access: admin
  #  publish: admin
  #  # you can override storage directory for a group of packages this way:
  #  storage: 'local_storage'

  '*':
    # allow all users to read packages (including non-authenticated users)
    #
    # you can specify usernames/groupnames (depending on your auth plugin)
    # and three keywords: "$all", "$anonymous", "$authenticated"
    access: $all

    # allow 'admin' to publish packages
    publish: admin

#如果包本地不存在,则去npmjs去请求
    # if package is not available locally, proxy requests to 'npmjs' registry
    proxy: npmjs

#####################################################################
# Advanced settings
#####################################################################

# if you use nginx with custom path, use this to override links
#url_prefix: https://dev.company.local/sinopia/

# You can specify listen address (or simply a port).
# If you add multiple values, sinopia will listen on all of them.
#
# Examples:
#
#listen:
# - localhost:4873            # default value
# - http://localhost:4873     # same thing
# - 0.0.0.0:4873              # listen on all addresses (INADDR_ANY)
# - https://example.org:4873  # if you want to use https
# - [::1]:4873                # ipv6
# - unix:/tmp/sinopia.sock    # unix socket

#https证书配置(listen需要设置成https)
# Configure HTTPS, it is required if you use "https" protocol above.
#https:
#  key: path/to/server.key
#  cert: path/to/server.crt

# type: file | stdout | stderr
# level: trace | debug | info | http (default) | warn | error | fatal
#
# parameters for file: name is filename
#  {type: 'file', path: 'sinopia.log', level: 'debug'},
#
# parameters for stdout and stderr: format: json | pretty
#  {type: 'stdout', format: 'pretty', level: 'debug'},
logs:
  - {type: stdout, format: pretty, level: http}
  #- {type: file, path: sinopia.log, level: info}

#代理设置
# you can specify proxy used with all requests in wget-like manner here
# (or set up ENV variables with the same name)
#http_proxy: http://something.local/
#https_proxy: https://something.local/
#no_proxy: localhost,127.0.0.1

#设置json文档大小上限
# maximum size of uploaded json document
# increase it if you have "request entity too large" errors
#max_body_size: 1mb

# Workaround for countless npm bugs. Must have for npm <1.14.x, but expect
# it to be turned off in future versions. If `true`, latest tag is ignored,
# and the highest semver is placed instead.
#ignore_latest_tag: false

pm2 updatePM2 #升级pm2

  1. 越多命令参数请查看支持

pm2 delete all #除去PM2列表中具有的长河

  1. 日志操作

npm常见使用命令

pm2 –help

四、PM2目录结构

默许的目录是:当前用于的家目录下的.pm2目录(此目录可以自定义,请参见:五、自定义启动文件),详细新闻如下:
$HOME/.pm2 #will contain all PM2 related files
$HOME/.pm2/logs #will contain all applications logs
$HOME/.pm2/pids #will contain all applications pids
$HOME/.pm2/pm2.log #PM2 logs
$HOME/.pm2/pm2.pid #PM2 pid
$HOME/.pm2/rpc.sock #Socket file for remote commands
$HOME/.pm2/pub.sock #Socket file for publishable events
$HOME/.pm2/conf.js #PM2 Configuration

五、自定义启动文件

创办一个test.json的言传身教文件,格式如下:
{
“apps”:
{
“name”: “test”,
“cwd”: “/data/wwwroot/nodejs”,
“script”: “./test.sh”,
“exec_interpreter”: “bash”,
“min_uptime”: “60s”,
“max_restarts”: 30,
“exec_mode” : “cluster_mode”,
“error_file” : “./test-err.log”,
“out_file”: “./test-out.log”,
“pid_file”: “./test.pid”
“watch”: false
}
}

说明:

apps:json结构,apps是一个数组,每一个数组成员即便对应一个pm2中运作的拔取
name:应用程序的名号
cwd:应用程序所在的目录
script:应用程序的脚本路径
exec_interpreter:应用程序的剧本类型,那里运用的shell,默认是nodejs
min_uptime:最流年行时刻,那里设置的是60s即只要应用程序在60s内退出,pm2会认为程序分外退出,此时触发重启max_restarts设置数量
max_restarts:设置应用程序卓殊退出重启的次数,默认15次(从0初始计数)
exec_mode:应用程序启动形式,那里安装的是cluster_mode(集群),默认是fork
error_file:自定义应用程序的失实日志文件
out_file:自定义应用程序日志文件
pid_file:自定义应用程序的pid文件
watch:是还是不是启用监控形式,默许是false。尽管设置成true,当应用程序变动时,pm2会自动重载。那里也可以安装你要监督的文书。
详细参数列表:见附件八

六、实例

已上面的test.json为例

pm2 logs [–raw] #Display all processes logs in streaming

1>常用命令

npm install XX :本地安装,安装到当前的目录中

npm install –g XX :模块将被装置到【全局目录】

翻看全局目录npm config get prefix

设置全局目录npm config set prefix XXX

翻看缓存目录npm config get cache

设置缓存目录npm cofnig set cache XXX

诚如拔取全局安装,方便管理、结构清晰还足以重新利用

 

其它命令如下:

npm install <name>安装nodejs的看重包

诸如npm install express
就会默许安装express的新式版本,也得以透过在前边加版本号的主意安装指定版本,如npm
install express@3.0.6

npm install <name> -g  将包安装到全局环境中

唯独代码中,直接通过require()的办法是尚未主意调用全局安装的包的。全局的装置是供命令行使用的,就象是全局安装了vmarket后,就可以在命令行中直接运行vm命令

npm install <name> –save  安装的同时,将新闻写入package.json中

类型路线中一旦有package.json文件时,间接运用npm
install方法就可以根据dependencies配置安装具有的依靠包

如此代码提交到github时,就绝不付出node_modules这一个文件夹了。

npm init 
会指导您创建一个package.json文件,包罗名称、版本、作者这么些新闻等

npm remove <name>移除

npm update <name>更新

npm ls 列出脚下路线下安装的了具有包

npm root 查看当前包的设置路径

npm root -g  查看全局的包的装置路径

npm help  帮忙,如若要单独查看install命令的扶植,可以使用的npm help
install

npm config get cache 查看npm的缓存目录

下过的包都在里边,比如刚刚下载的loadash

cat > /data/wwwroot/nodejs/test.sh << EOF

pm2 flush #Empty all log file

2>关于npm缓存目录的部分笔录

npm安装的模块有八个缓存目录:
默认*inux和mac下是在用户主目录下的.npm目录下,通过npm config get
cache 可以查阅。window下则在%AppData%/npm-cache 目录下。

该目录下的模块结构为.npm/module_name/module_version/那种办法命名。

值得注意的是,执行npm
install命令的时候npm只会检查node_modules中是否存在该模块,若是没有则会去registry下载,无论.npm文件夹下是不是存在。那也是install速度慢的一个缘故。

解决办法使用npm install –cache-min <整数岁月>
<package-name>;
这一个命令的意趣是从缓存中举办安装,唯有再跨越参数时间的时候才从regitry上设置。但内在也进展了四次与registry的并行,只是相互的etag属性,服务器重临304代表从未更新不须求下载

此外也可以将缓存目录设置成node_modules目录。

!/bin/bash

while :
do
echo “Test” >> 1.log
sleep 5
done
EOF

pm2 reloadLogs #Reload all logs

  1. 升级PM2

pm2命令详解

pm2是开源的根据Nodejs的长河管理器。包蕴经过、日志、监控的一整套完整意义。它含有负载均衡功效,当你要把你的独立代码资源选用所有的服务器所有cpu,有限援救进度永远都是活着的,0秒的重载,PM2是无微不至的。

常用的一声令下介绍:

以下是pm2常用的命令行

$ pm2 start app.js              # 启动app.js应用程序

$ pm2 start app.js -i 4         # cluster mode
形式启动4个app.js的施用实例

                                # 4个应用程序会自动举行负荷均衡

                               

$ pm2 start app.js –name=”api” # 启动应用程序并取名为 “api”

$ pm2 start app.js –watch      # 当文件变化时自动重启应用

$ pm2 start script.sh           # 启动 bash 脚本

 

$ pm2 list                      #亚洲必赢官网, 列表 PM2 启动的所有的应用程序

$ pm2 monit                     # 展现每个应用程序的CPU和内存占用景况

$ pm2 show [app-name]           # 突显应用程序的具备信息

 

$ pm2 logs                      # 突显所有应用程序的日志

$ pm2 logs [app-name]           # 突显指定应用程序的日志

$ pm2 flush

 

$ pm2 stop all                  # 为止所有的应用程序

$ pm2 stop 0                    # 为止 id为 0的指定应用程序

$ pm2 restart all               # 重启所有应用

$ pm2 reload all                # 重启 cluster mode下的具备应用

$ pm2 gracefulReload all        # Graceful reload all apps in cluster
mode

$ pm2 delete all                # 关闭并删除所有应用

$ pm2 delete 0                  # 删除指定应用 id 0

$ pm2 scale api 10              # 把名字叫api的运用扩充到10个实例

$ pm2 reset [app-name]          # 重置重启数量

 

$ pm2 startup                   # 创设开机自启动命令

$ pm2 save                      # 保存当前利用列表

$ pm2 resurrect                 # 重新加载保存的施用列表

$ pm2 update                    # Save processes, kill PM2 and restore
processes

$ pm2 generate                  # Generate a sample json configuration
file

 

$ pm2 deploy app.json prod setup    # Setup “prod” remote server

$ pm2 deploy app.json prod          # Update “prod” remote server

$ pm2 deploy app.json prod revert 2 # Revert “prod” remote server by 2

 

$ pm2 module:generate [name]    # Generate sample module with name
[name]

$ pm2 install pm2-logrotate     # Install module (here a log rotation
system)

$ pm2 uninstall pm2-logrotate   # Uninstall module

$ pm2 publish                   # Increment version, git push and npm
publish

指令验证:

停止sinopia:

$ pm2 stop sinopia

 

启动sinopia:

$ pm2 start sinopia

重启 sinopia:

$ pm2 retart sinopia

 

显示 sinopia 的log:

$ pm2 logs sinopia

chmod +x test.sh #累加推行权限

npm install pm2@lastest -g #安装新型的PM2版本

6.参照文档

 

pm2 start test.json #启动,如下图:

[图形上传失利…(image-680e62-1511421667535)]

pm2 updatePM2 #升级pm2

  1. 越来越多命令参数请查看协助

pm2 list #查看pm2进程,如下图:

[图片上传失利…(image-20bc39-1511421667535)]

七、备注
其余可参数见官网:http://pm2.keymetrics.io
安装:npm install -g pm2
起始程序:pm2 start <app_name|id|all>
列举进程:pm2 list
脱离程序:pm2 stop <app_name|id|all>
重起应用:pm2 restart
程序新闻:pm2 describe id|all
监控:pm2 monit
实时集中log处理: pm2 logs
API:pm2 web (端口:9615 )

pm2 –help

四、PM2目录结构

默许的目录是:当前用于的家目录下的.pm2目录(此目录可以自定义,请参见:五、自定义启动文件),详细新闻如下:
$HOME/.pm2 #will contain all PM2 related files
$HOME/.pm2/logs #will contain all applications logs
$HOME/.pm2/pids #will contain all applications pids
$HOME/.pm2/pm2.log #PM2 logs
$HOME/.pm2/pm2.pid #PM2 pid
$HOME/.pm2/rpc.sock #Socket file for remote commands
$HOME/.pm2/pub.sock #Socket file for publishable events
$HOME/.pm2/conf.js #PM2 Configuration

五、自定义启动文件

制造一个test.json的言传身教文件,格式如下:
{
“apps”:
{
“name”: “test”,
“cwd”: “/data/wwwroot/nodejs”,
“script”: “./test.sh”,
“exec_interpreter”: “bash”,
“min_uptime”: “60s”,
“max_restarts”: 30,
“exec_mode” : “cluster_mode”,
“error_file” : “./test-err.log”,
“out_file”: “./test-out.log”,
“pid_file”: “./test.pid”
“watch”: false
}
}

说明:

apps:json结构,apps是一个数组,每一个数组成员即使对应一个pm2中运作的运用
name:应用程序的称谓
cwd:应用程序所在的目录
script:应用程序的本子路径
exec_interpreter:应用程序的台本类型,那里运用的shell,默认是nodejs
min_uptime:最小运行时刻,那里安装的是60s即如若应用程序在60s内退出,pm2会认为程序极度退出,此时触发重启max_restarts设置数量
max_restarts:设置应用程序非常退出重启的次数,默许15次(从0最先计数)
exec_mode:应用程序启动方式,那里设置的是cluster_mode(集群),默认是fork
error_file:自定义应用程序的失实日志文件
out_file:自定义应用程序日志文件
pid_file:自定义应用程序的pid文件
watch:是不是启用监控方式,默许是false。倘诺设置成true,当应用程序变动时,pm2会自动重载。那里也得以安装你要监督的公文。
详尽参数列表:见附件八

六、实例

已上边的test.json为例

cat > /data/wwwroot/nodejs/test.sh << EOF

!/bin/bash

while :
do
echo “Test” >> 1.log
sleep 5
done
EOF

chmod +x test.sh #加上实施权限

pm2 start test.json #启动,如下图:

[图片上传败北…(image-291475-1511349583307)]

pm2 list #查看pm2进程,如下图:

[图形上传战败…(image-1f3f2c-1511349583307)]

七、备注
其余可参数见官网:http://pm2.keymetrics.io

====================================================================================================================

安装:npm install -g pm2

开行程序:pm2 start <app_name|id|all>

历数进度:pm2 list

退出程序:pm2 stop <app_name|id|all>

重起应用:pm2 restart

先后新闻:pm2 describe id|all

监控:pm2 monit

实时集中log处理: pm2 logs

API:pm2 web (端口:9615 )

<pre>

使用PM2来部署nodejs项目。

一旦直白通过node
app来启动,如果报错了说不定一贯停在所有运行,supervisor感觉只是拿来作为开发条件的。再网上找到pm2.当下就如最普遍的线上配备nodejs项目标有forever,pm2那二种。
动用场馆:

  • supervisor是支付环境用。

  • forever管理多少个站点,每个站点访问量不大,不必要监控。

  • pm2 网站访问量比较大,须要完整的监督界面。

PM2的严重性特色:

  • 内建负载均衡(使用Node cluster 集群模块)

  • 后台运行

  • 0秒停机重载,我清楚大致意思是维护升级的时候不要求停机.

  • 负有Ubuntu和CentOS 的启动脚本

  • 为止不平静的历程(避免无限循环)

  • 控制台检测

  • 提供 HTTP API

  • 长途控制和实时的接口API ( Nodejs 模块,允许和PM2经过管理器交互 )

安装

npm install -g pm2

用法

$ npm install -g pm2 命令行全局安装pm2
$ pm2 start app.js 启动app项目
$ pm2 list
列出由pm2管理的持有进程新闻,还会显示一个进程会被启动多少次,因为没处理的不得了。

亚洲必赢官网 13

image

$ pm2 monit 监视每个node进程的CPU和内存的施用景况

亚洲必赢官网 14

image

$ pm2 logs 突显所有进度日志
$ pm2 stop all 截至所有进程
$ pm2 restart all 重启所有进程
$ pm2 reload all 0秒停机重载进程 (用于 NETWORKED 进度)
$ pm2 stop 0 甘休指定的进度
$ pm2 restart 0 重启指定的进度
$ pm2 startup 发生 init 脚本 保持进度活着
$ pm2 web 运行健壮的 computer API endpoint
(http://localhost:9615)
$ pm2 delete 0 杀死指定的经过
$ pm2 delete all 杀死所有进度

运转进程的两样措施:
$ pm2 start app.js -i max 依据有效CPU数目启动最大进度数目
$ pm2 start app.js -i 3 启动3个进程
$ pm2 start app.js -x 用fork形式启动 app.js 而不是应用 cluster
$ pm2 start app.js -x -- -a 23 用fork形式启动 app.js 并且传递参数 (-a
23)
$ pm2 start app.js --name serverone 启动一个进程并把它命名为
serverone
$ pm2 stop serverone 停止 serverone 进程
$ pm2 start app.json 启动进程, 在 app.json里安装选项
$ pm2 start app.js -i max -- -a 23 在–之后给 app.js 传递参数
$ pm2 start app.js -i max -e err.log -o out.log 启动 并
生成一个配备文件

安排pm2起步文件

在类型根目录添加一个processes.json:
内容如下:

{
  "apps": [
    {
      "name": "mywork",
      "cwd": "/srv/node-app/current",
      "script": "bin/www",
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "error_file": "/var/log/node-app/node-app.stderr.log",
      "out_file": "log/node-app.stdout.log",
      "pid_file": "pids/node-geo-api.pid",
      "instances": 6,
      "min_uptime": "200s",
      "max_restarts": 10,
      "max_memory_restart": "1M",
      "cron_restart": "1 0 * * *",
      "watch": false,
      "merge_logs": true,
      "exec_interpreter": "node",
      "exec_mode": "fork",
      "autorestart": false,
      "vizion": false
    }
  ]
}

说明:

  • apps:json结构,apps是一个数组,每一个数组成员即便对应一个pm2中运作的选择

  • name:应用程序名称

  • cwd:应用程序所在的目录

  • script:应用程序的剧本路径

  • log_date_format:

  • error_file:自定义应用程序的荒谬日志文件

  • out_file:自定义应用程序日志文件

  • pid_file:自定义应用程序的pid文件

  • instances:

  • min_uptime:最大运行时刻,那里设置的是60s即只要应用程序在60s内退出,pm2会认为程序格外退出,此时触发重启max_restarts设置数量

  • max_restarts:设置应用程序极度退出重启的次数,默许15次(从0伊始计数)

  • cron_restart:定时启动,解决重启能一蹴即至的难点

  • watch:是或不是启用监控方式,默许是false。如果设置成true,当应用程序变动时,pm2会自动重载。那里也足以设置你要监督的文件。

  • merge_logs:

  • exec_interpreter:应用程序的脚本类型,那里运用的shell,默许是nodejs

  • exec_mode:应用程序启动形式,那里安装的是cluster_mode(集群),默认是fork

  • autorestart:启用/禁用应用程序崩溃或剥离时自动重启

  • vizion:启用/禁用vizion特性(版本控制)

可以通过pm2 start processes.json来启动。
也足以把命令写在package.json里。如下:

亚洲必赢官网 15

image

pm2 是一个含有负载均衡效率的Node应用的进度管理器.

当你要把你的单独代码应用总体的服务器上的拥有CPU,并保管进程永远都活着,0秒的重载,
PM2是无微不至的。它丰硕适合IaaS结构,但毫无把它用来PaaS方案(随后将支付Paas的化解方案).

备考:SaaS、PaaS和IaaS是云服务格局。
SaaS 软件即服务,例如谷歌的 Gmail 邮箱服务.面向应用型用户.
PaaS 平台即服务.例如谷歌(Google)的GAE,面向开发型用户
IaaS
基础架构即服务,例如亚马逊(亚马逊)的AWS,IaaS对于不清楚新生产的应用程序/网站会有多成功的创业公司来说尤其管用

请参考
云服务格局:SaaS、PaaS和IaaS,哪一类适合您?

一言九鼎特点:

内建负载均衡(使用Node cluster 集群模块)

后台运行

0秒停机重载,我明白大致意思是保安升级的时候不需求停机.

装有Ubuntu和CentOS 的启航脚本

终止不稳定的进程(防止无限循环)

控制台检测

提供 HTTP API

长距离控制和实时的接口API ( Nodejs 模块,允许和PM2历程管理器交互 )

测试过Nodejs v0.11 v0.10 v0.8版本,兼容CoffeeScript,基于Linux 和MacOS.

安装

npm install -g pm2

用法

$ npm install pm2 -g # 命令行安装 pm2

$ pm2 start app.js -i 4 #后台运行pm2,启动4个app.js

                            # 也可以把'max' 参数传递给 start

                            # 正确的进程数目依赖于Cpu的核心数目

$ pm2 start app.js –name my-api # 命名进度

$ pm2 list # 突显所有进度景况

$ pm2 monit # 监视所有进程

$ pm2 logs # 突显所有进程日志

$ pm2 stop all # 停止所有进度

$ pm2 restart all # 重启所有进度

$ pm2 reload all # 0秒停机重载进度 (用于 NETWORKED 进度)

$ pm2 stop 0 # 甘休指定的长河

$ pm2 restart 0 # 重启指定的进程

$ pm2 startup # 发生 init 脚本 保持进度活着

$ pm2 web # 运行健壮的 computer API endpoint (

http://localhost:9615

)

$ pm2 delete 0 # 杀死指定的进度

$ pm2 delete all # 杀死所有经过

运转进度的例外方法:

$ pm2 start app.js -i max # 依照有效CPU数目启动最大进度数目

$ pm2 start app.js -i 3 # 启动3个进程

$ pm2 start app.js -x #用fork方式启动 app.js 而不是行使 cluster

$ pm2 start app.js -x — -a 23 # 用fork格局启动 app.js 并且传递参数 (-a
23)

$ pm2 start app.js –name serverone # 启动一个经过并把它定名为
serverone

$ pm2 stop serverone # 停止 serverone 进程

$ pm2 start app.json # 启动进度, 在 app.json里设置选项

$ pm2 start app.js -i max — -a 23 #在–之后给 app.js 传递参数

$ pm2 start app.js -i max -e err.log -o out.log # 启动 并
生成一个布署文件

您也得以实施用任何语言编写的app ( fork 格局):

$ pm2 start my-bash-script.sh -x –interpreter bash

$ pm2 start my-python-script.py -x –interpreter python

0秒停机重载:

那项效能允许你再次载入代码而不用失去请求连接。

注意:

仅能用来web应用

运行于Node 0.11.x版本

运行于 cluster 情势(默许格局)

$ pm2 reload all

CoffeeScript:

$ pm2 start my_app.coffee #那就是所有

PM2备选好为产品级服务了呢?

只需在您的服务器上测试

$ git clone

https://github.com/Unitech/pm2.git

$ cd pm2

$ npm install # 或者 npm install –dev ,假如devDependencies 没有设置

$ npm test

pm2 list

列出由pm2管理的享有进度音信,还会显得一个进度会被启动多少次,因为没处理的非常。

|

亚洲必赢官网 16

image

|
| |

pm2 monit

监视每个node进度的CPU和内存的运用情状。

|

亚洲必赢官网 17

image

|

网站地图xml地图