常用命令

新建项目(需要到该项目文件目录下执行,否则日志会报错)

pm2 start bin/www - i max - - name ijhealth

只开启一个线程

node bin/www (没有进程守护)

开启项目

pm2 start 项目名称

关闭项目

pm2 stop 项目名称

重启项目

pm2 restart 项目名称

删除项目

pm2 delete 项目名称

列出项目

pm2 list

查看进程详细信息

pm2 show 0 / pm2 info 0 (0为进程ID)

查看日志

pm2 logs 项目名称

清空日志

pm2 flush

重载日志

pm2 reloadLogs

升级PM2

npm install pm2@lastest -g (安装最新版本)

pm2 updatePM2 (升级pm2)

查看帮助

pm2 --help

修改npm源

npmconfigsetregistry="http://registry.npmjs.org"

或者

npmconfigsetregistry="https://registry.npm.taobao.org"

注:所有pm2 命令都可以用all来对所有项目执行操作,比如删除所有项目,可以执行以下语句

pm2 delete all

注:node.js有保护进程,如果要停止一个项目,需要用pm2 delete 删除,而不能用kill 杀进程,否则kill完还是会有进程产生。

环境安装

操作系统:Linux h6 3.10.0-327.13.1.el7.x86_64 #1 SMP Thu Mar 31 16:04:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

操作步骤Node.js 环境搭建一.安装node.js

1.直接从网上(http://nodejs.cn/download/)下载压缩包node-v6.2.0-linux-x64.tar.xz,放到linux上 home目录下

2.解压压缩包到/home/node下

cd /home

tar -zxv -f node-v6.2.0-linux-x64.tar.xz

mkdir node

mv node-v6.2.0-linux-x64 node



3.设置全局变量

ln -s /home/node/node-v6.2.0-linux-x64/bin/node /usr/local/bin/node

ln -s /home/node/node-v6.2.0-linux-x64/bin/npm /usr/local/bin/npm


4.设置环境变量

vim /etc/profile

在export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容:

#set for nodejs

export NODE_HOME=/home/node/node-v6.2.0-linux-x64

export PATH=$NODE_HOME/bin:$PATH

:wq保存并退出,编译/etc/profile 使配置生效

source/etc/profile验证是否安装配置成功

node -v如果看到版本号,说明node安装成功


二、安装 redis

1.yum install epel-release



2.yum install redis



Node.js项目初始化

一.下载代码

登入svn,checkout最新代码

(例如:https://svn.dev.zoenet.cn:8443/svn/juyihui/client/web/zoe-jxcoverage-app/trunk)

下载的所有文件夹和文件到本地,并将这些文件(除了.idea和node_modules,因为这两个文件在之后运行npm install 时会安装)压缩成一个zip安装包



二.建立新项目文件夹

在/home/zoe-net(此处为本例常用项目存放处,可根据实际情况自定义)下,新建一个项目文件夹,命名为项目名

mkdir new_project



三.传递代码压缩包

将压缩包传到/home/zoe-net/new_project 下(可以使用rz命令上传文件),并将压缩包解压到new_project文件夹下

unzip new_project.zip



四.npm安装

在new_project下,运行以下命令:

cd /home/zoe-net/new_project

npm install




安装node-gyp

npm install node-gyp -g




(注意:不安装此项有可能出现执行npm install进程卡住的问题 )

再安装ccap

npm install ccap

还需要安装git, gcc

$ npm update minimatch

$ npm -v minimatch

2.10.1

$ npm install -g npm@3

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

npm@3.10.5 /usr/local/lib/node_modules/npm

$ npm install -g minimatch@3.0.2

/usr/local/lib

└─┬ minimatch@3.0.2

└─┬ brace-expansion@1.1.6

├── balanced-match@0.4.2

└── concat-map@0.0.1

$ npm -v minimatch


六.关闭防火墙

firewall-cmd --zone=public --add-port=4100/tcp --permanent

firewall-cmd --reload

注:4100处为项目需要开启的端口号



安装cnpm

npm install cnpm -g

修改注册表地址

cnpm config set registry="http://172.16.34.248:7001/"

(以上IP地址根据自身情况而定)

cnpm config list

安装zoenet-itom项目

cnpm install zoenet-itom

安装ccap

cnpm install ccap --save


七.安装PM2

之后很多操作都需要使用PM2的强大功能,这里需要先安装pm2

npm install -g pm2

八.修改配置文件中redis地址

确保配置文件中redis地址正确,配置文件config.js地址位于

项目名称下的app/config下,如果redis安装在本地,可以将

host:"localhost" 前的//去掉,在原本的host前加上//

注:一般情况下如果发布后网页卡顿无法打开,日志又没有报错,就要看看redis的地址是否是正确的。


九.初始化项目

注意,初始化时需要进入指定项目的目录执行,否则可能会产生日志错误

例如,添加ijhealth 服务监视:

cd /home/zoe-net/ijhealth

pm2 start bin/www - i max --name ijhealth



注:

Start代表添加服务

www是bin文件夹下一个相当于执行监视的插件服务

-i 3代表监视三个线程,一般js只用到3个以内的线程,也可以用max,表示使用最大线程数

--name ijhealth自定义监测list中所监测服务的名字,一般和项目名称一致,方便区别

十.查看启动情况

pm2 list



十一.一般操作指令

一般项目都在启动中,可以用重启命令,重启某个项目。例如,重启ijhealth

pm2 restart ijhealth

关闭某个项目

pm2 stop 项目名字

删除某个项目

Pm2 delete 项目名字

十二.查看日志

pm2 logs

pm2 logs 具体项目名称

十三.查看项目端口号

例如,要查看ijhealth 项目的端口号,需要进入项目的文件夹中,查看bin/www 文件

cat /home/zoe-net/ijhealth/bin/www





常见问题问题一:日志提示有关时间戳问题“com.zoe.timehash.zip”

答:需要在对应项目下node_modules文件夹中添加com.zoe.timehash时间戳。(该时间戳的获取可以直接从已有的项目下复制黏贴)

例如:/home/zoe-net/zoenethospital/node_modules/com.zoe.timehash

问题二:npm连接错误“Error: connect ECONNREFUSSED....”

答:问题的原因是npm源指定问题,解决方法是重新指定npm源地址。npmconfigsetregistry="http://registry.npmjs.org"

如果上面的npm地址不行的话,大家可以试试淘宝的npm,非常稳定:

地址:https://registry.npm.taobao.org

问题三:node.js项目启动了,pm2 list显示online, pm2 logs 没有报错,但是就是无法访问页面,像是卡住了(有时候可以访问,有时候不行访问)

答:首先,先检查一下对应端口有没有开(端口号可以在bin/www中或者app.js中查询到),如果有,再检查一下对应的端口号是否已经被占用或者和其他应用程序冲突(可以pm2 stop 项目并且pm2 delete项目,然后netstat -nltp 看一下端口是否还在)。如果以上检查都没有问题,有可能是因为redis地址设置问题。先检查redis是否开启,如果开启,再到项目文件夹下app/config中的config.js里查看redis的地址是否指向正确。

问题四:Error: Cannot find module ‘express-session’

答:只需在对应项目文件夹下运行 npm install命令就好