在 Linux 环境下 Node 的安装,以及开发和发布 Node 应用的常用工具的使用
yum
直接执行 yum 命令
yum install nodejs npm
但是实践发现一个问题,就是通过上述命令安装的 node 版本太低,如果运行报错,比如提示...表达式不支持等,需要更新 node 版本,可以通过 n 进行更新:
安装Node版本管理工具:n
npm install –g n latest
# 升级到最新稳定版本
n stable
# 指定版本
n v5.5.0
版本选择: 输入n后输出当前已经安装的node版本以及正在使用的版本(前面有一个o),你可以通过移动上下方向键来选择要使用的版本,最后按回车生效。
使用n(node版本管理器)安装node之后,并没有生效!
原因:你的node的安装目录和 n 默认的路径不一样。查看 node 当前安装路径:
# 查看正在使用node的安装路径
which node
而 n 默认安装路径是 /usr/local,若你的 node 不是在此路径下,n 切换版本就不能把bin、lib、include、share 复制该路径中,所以我们必须通过 N_PREFIX 变量来修改 n 的默认node安装路径。
vim ~/.bash_profile
# node实际安装位置
export N_PREFIX=/usr/local
export PATH=$N_PREFIX/bin:$PATH
# 保存退出
:wq
$ source ~/.bash_profile执行source使修改生效。
echo $N_PREFIX 确认一下环境变量是否生效:
删除版本:n rm version
特殊使用:n use 0.10.21 app.js
n模块的原理理解很重要:你下载的node默认位于(可以通过N_PREFIX设置前缀路径)/usr/local/n/versions/node/x.xx.x中,那么为什么n可以如此轻松的切换版本呢,如果版本已经下载完毕,直接找到源文件复制到/usr/local对应的文件中,否则下载再移动,因此在配置node的环境变量时,直接配置到N_PREFIX/bin即可!
编译安装
下载安装包,解压编译安装
tar -xzvf node-v6.9.1.tar.gz
cd node-v6.9.1
./configure
make
make install
开发工具
直接使用 node 启动应用,在开发过程中我们每次更改都需要重新启动,非常麻烦,这里推荐两个工具,效果其实都是一样的,监控代码的代码,自动重启
supervisor
- 功能:监视你对代码的改动,并自动重启 Node.js,服务器宕机时自动重启。
- 安装:npm -g install supervisor
- 启动:supervisor --harmony index
nodemon
- 功能:监视你对代码的改动,并自动重启 Node.js,服务器宕机时自动重启。
- 安装:npm -g install nodemon
- 启动:nodemon index
个人倾向于用第二个,因为单词容易记一点,哈哈
发布工具
在线上发布时,使用 node 启动应用,必须保持窗口活跃,这显然是不现实的,这里同样推荐两个常用工具
forever
- 功能:后台运行node应用,Node.js 下的生产环境进程管理工具,就是我们常说的进程守护工具,可以用来在生产环境中进行自动重启、日志记录、错误预警等等
- 区别:supervisor一般在开发的时候使用,因为可以检测代码改动自动重启,但是断掉 SSH 连接后服务就终止了,需要使用pm2或者forever来启动应用。
- 安装:npm install forever –g
- 常用命令:
1.forever start app.js简单的启动 2.forever start -l forever.log app.js指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log 3.forever start -o out.log -e err.log app.js -o 就是console.log输出的信息,-e 就是console.error输出的信息 4.forever start -w app.js监听当前文件夹下的所有文件改动(不太建议这样) 5.forever list显示所有运行的服务 6.forever stopall停止所有运行的node App 7.forever stop app.js停止其中一个node App 8.forever stop [id] forever list 找到对应的id 9.forever restartall启动所有 10.forever restart app.js 重启应用(和forever start的区别就是日志文件不会新建)
pm2
- 功能:pm2 是一个带有负载均衡功能的Node应用的进程管理器。
- 看如下 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 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] # 重置重启数量
···