1 nodejs项目安装依赖
进入node项目根目录(这里是interaction)下 npm install 装依赖,没有依赖node项目启动不起来。装的依赖会在 node_modules里,安装依赖的命令:
npm install
nodejs项目根目录下的 node_mudules 用来存放下载的依赖,public 存放的都是静态资源
2 向mongodb里面导nodejs数据(mongodb服务器上执行)
如果没密码,首次导数据可用命令:
mongorestore --host 127.0.0.1 --port 27017 -d yz_interaction /data/interaction --gzip
如果没密码, 非首次导入想直接覆盖旧数据的话 加 --drop:
mongorestore --host 127.0.0.1 --port 27017 -d yz_interaction --drop /data/interaction --gzip
其中/data/interaction/ 下全是压缩文件,如图
如果有密码,需要输入密码
mongorestore --host xxxx --port xxx -d interaction -u 用户名 --gzip --authenticationDatabase admin --drop /data/mongodb_back/interaction
3 pm2首次启动node
pm2 start /home/work/interaction/bin/www --name "interaction" -l /home/work/interaction/logs/all.log -o /home/work/interaction/logs/out.log -e /home/work/interaction/logs/err.log --log-date-format="YYYY-MM-DD HH:mm Z"
------高级进阶篇------
首先,你需要明白“一个程序至少有一个进程,一个进程至少有一个线程”
node里的JS运行环境确实是单线程的,因为node采用的V8引擎是单线程!
其次,node从0.X.X就支持了child_process,来开启“多进程”,实现多核CPU资源的充分利用!
后来在0.8版本新增了cluster来方便创建和管理node进程集群!
那么我使用cluster开启“多个NODE实例”来实现多进程,从而充分利用多核CPU资源
--------------
nodejs 启动时指定日志目录
方式1:
1》创建存放日志目录
mkdir -p /data/work/nodejs/track-frontLogs
2》进入某个具体nodejs项目根路径(以track-front为例)
cd /data/work/nodejs/track-front
3》执行类似下面命令
./node_modules/.bin/cross-env NODE_ENV=production pm2 start bin/www --name 'track-front' -i max -o /data/work/nodejs/track-frontLogs/out.log -e /data/work/nodejs/track-frontLogs/error.log --log-date-format="YYYY-MM-DD HH:mm:ss Z"
方式2:
cd /data/work/nodejs/track-front
./node_modules/.bin/cross-env NODE_ENV=production pm2 start bin/www --name 'track-front' -i max -o out.log -e error.log --log-date-format="YYYY-MM-DD HH:mm:ss Z"
此种方式启动会在当前目录/data/work/nodejs/track-front
下生成out.log和error.log
注意:
采用此种方式启动,如果停掉node服务,将当前目录下的out.log和error.log删掉,然后使用pm2 restart track-front重启该服务,则会自动在/data/work/nodejs/track-front
目录下生成out.log和error.log文件
方式3:
绝对路径方式启动
1》创建存放日志目录
mkdir -p /data/work/nodejs/healthClientLogs
2》以绝对路径方式启动且集群个数指定为max(指定为max,max值会自动根据cpu核数生成相同个数的集群节点)
/data/work/nodejs/healthClient/node_modules/.bin/cross-env NODE_ENV=production pm2 start /data/work/nodejs/healthClient/bin/www --name 'healthClient' -i max -o /data/work/nodejs/healthClientLogs/out.log -e /data/work/nodejs/healthClientLogs/error.log --log-date-format="YYYY-MM-DD HH:mm:ss Z"
------
注意:
以上不管哪种方式:
若指定生成指定个数的集群节点数,比如:
./node_modules/.bin/cross-env NODE_ENV=production pm2 start bin/www --name 'track-front' -i 3 -o out.log -e error.log --log-date-format="YYYY-MM-DD HH:mm:ss Z"
则指定的文件名out.log和error.log无效。启动时会自动生成out-51.log out-52.log out-53.log error-51.log error-52.log error-53.log,而不会使用out.log和error.log 。这点要注意。
-------------------
ansible批量操作多台服务器:
健康码
ansible -i /etc/ansible/jenkins_hosts/hosts healthClient -m shell -a "pm2 delete healthClient;cd /data/work/nodejs/healthClient; ./node_modules/.bin/cross-env NODE_ENV=production pm2 start bin/www --name 'healthClient' -i 3 -o out.log -e error.log --log-date-format=\"YYYY-MM-DD HH:mm:ss Z\""
乘车码
ansible -i /etc/ansible/jenkins_hosts/hosts track-front -m shell -a "pm2 delete track-front;cd /data/work/nodejs/track-front; ./node_modules/.bin/cross-env NODE_ENV=production pm2 start bin/www --name 'track-front' -i 3 -o out.log -e error.log --log-date-format=\"YYYY-MM-DD HH:mm:ss Z\""