常用命令
新建项目(需要到该项目文件目录下执行,否则日志会报错) |
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 [email protected] -g (安装最新版本) pm2 updatePM2 (升级pm2) |
查看帮助 |
pm2 --help |
修改npm源 |
npm config set registry="http://registry.npmjs.org" 或者 npm config set registry="https://registry.npm.taobao.org" |
注:所有pm2 命令都可以用all来对所有项目执行操作,比如删除所有项目,可以执行以下语句
pm2 delete all
注:node.js有保护进程,如果要停止一个项目,需要用pm2 delete 删除,而不能用kill 杀进程,否则kill完还是会有进程产生。
环境安装
操作系统:Linux h5 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 [email protected]
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
[email protected] /usr/local/lib/node_modules/npm
$ npm install -g [email protected]
/usr/local/lib
└─┬ [email protected]
└─┬ [email protected]
├── [email protected]
└── [email protected]
$ 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源地址。npm config set registry="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 命令就好