node笔记
安装/卸载
安装查看这一篇文章《Node.js 安装配置》即可,包含了各种环境的安装。
推荐使用已经编译好的包,安装更简单
- 执行curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - // 其中setup_6.x 需要安装的版本号,替换数字就行。
- 安装 nodejs,执行 sudo apt-get install nodejs
如果使用源码安装,可能需要做一些配置,比如在centOS下需要配置node的path环境变量。查看上面文章的centOS安装部分。例如
配置NODE_HOME,进入profile编辑环境变量 vim /etc/profile 设置 nodejs 环境变量,在 export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 一行的上面添加如下内容: #set for nodejs export NODE_HOME=/usr/local/node/0.10.24 export PATH=$NODE_HOME/bin:$PATH :wq保存并退出,编译/etc/profile 使配置生效 source /etc/profile
Windows卸载:
1. 如果有安装记录,否则直接到2步:
控制面板-程序-程序和功能中卸载
2.直接删除安装文件
查看安装路径:where <node|npm>
C:\Program Files (x86)\Nodejs
C:\Program Files\Nodejs
C:\Users\Administrator\AppData\Roaming\npm
C:\Users\Administrator\AppData\Roaming\npm-cache
删除上述的几个文件夹 每个人可能不一样
3.删除环境变量PATH中的node/npm路径
计算机(此电脑)-高级系统设置-环境变量-Path-删除node/npm环境变量路径
linux卸载:
1.删除软连接,如果是源码安装方式,直接到2
rm -rf /usr/local/bin/node
rm -rf /usr/local/bin/npm
2.删除源码(npm包含在node中,直接删除node即可)
查看node安装路径:which <node|npm>,比如/opt/nodejs/node-v10.15.3-linux-x64/bin/node,其中红色部分就是node包路径
rm -rf /opt/nodejs/node-v10.15.3-linux-x64
3.删除环境变量path配置中的node配置
vi /etc/profile
删除“export PATH=$PATH:/opt/nodejs/node-v10.15.3-linux-x64/bin”部分
后台运行
当node运行在服务器上的时候,使用终端控制node的运行,则需要使用到后台运行模式(避免终端关闭导致node停止运行),有多种方式
- nohup
这种方式最简单,linux自带命令,不用任何安装,运行单个node
nohup node /opt/xxx/index.js & eixt // 必须通过exit来关闭shell终端,否则有些终端在手动点击关闭时会将终端启动的程序都关闭,详情:http://materliu.github.io/all/web/nodejs/2014/04/16/nodejs_serve_background_run.html
- forever
需要安装forever使用,官网:https://github.com/foreversd/forever#readme
npm install forever -g service forever start forever start app.js // 启动js forever start -l forever.log -o out.log -e err.log app.js // 启动+日志 forever stop app.js // 停止js
forever restart app.js // 重启
- PM2
需要安装pm2,功能强大,官网:https://pm2.keymetrics.io/
npm install pm2 -g pm2 start app.js //启动 pm2 start api.js -i <processes> // 多进程启动 pm2 stop <app_name|namespace|id|'all'|json_conf> pm2 restart <app_name|namespace|id|'all'|json_conf> pm2 delete <app_name|namespace|id|'all'|json_conf>
把 nohup和forever以及pm2放在一起说有些不恰当。后面两个功能主要时管理多node进程,down掉自动重启的。还有supervisor
- supervisor 是开发环境用,。或者用nodemon,node-dev 代替了supervisor 和 nodemon,它和coffeescript兼容最好,文件更改后自动重启,开发时非常方便。
- forever 管理多个站点,每个站访问量不大,不需要监控。
- pm2 网站访问量比较大,需要完整的监控界面。pm2 stop *不会释放端口,要pm2 kill杀进程才释放端口,pm2的稳定性还是不错的。
踩坑
verbose lifecycle xxx: unsafe-perm in lifecycle true
报这个错误一般意味着程序崩掉了,大概率是因为内存不足,比如打包压缩js时很耗内存,内存耗完直接崩了。
解决办法:换一个好的环境或者去掉一些消耗内存的打包配置,比如,webpack --progress --colors --bail --profile,其中“--profile”和"--progress"都是比较耗内存的