2018年3月28日
linux 中部署不同版本 node.js 并同时使用的方案
1. 首先使用压缩二进制包解压到 /usr/local/node/ ,比如产生一个 /usr/local/node/node-v8.9.3-linux-x64
2.安装多个不同的二级制包,产生 /usr/local/node/node-v4.5.3-linux-x64 /usr/local/node/node-v6.9.3-linux-x64 之类的不同的文件夹
3.使用 ln -s /usr/local/node/node-v8.9.3-linux-x64/bin/node /usr/local/bin/node@8 这样的软链接命令将各种不同的版本用不同的标识区分开
4.使用的时候,直接使用 node@8 server/app.js 这样启动,就可以使用指定版本的 node
5. 也可以直接写在 package.json 中的 script 中, 比如
"scripts": {
"start": "cross-env NODE_ENV=production node@8 server/app.js"
}
上面的是比较简单的方式。但是有时候需要用 pm2 这样的进程管理器来启动,这时候就需要复杂一点的方法,需要使用 shell 文件启动。
首先创建一个环境配置文件 config.cfg 内容如下
PATH=/lsw/node/node-v8.0.0-linux-x64/bin:$PATH
然后在创建一个执行文件 deploy.sh 内容如下
CONFIG_FILE="./config.cfg"
if [ ! -e $CONFIG_FILE ]
then
echo -e "$CONFIG_FILE not found."
exit 44
else
. $CONFIG_FILE
echo "loaded $CONFIG_FILE"
fi
pm2 start /from/to/server.js
这样就可以在使用 pm2 前先通过之前设置的环境变量首先找到 node-v8.0.0-linux-x64/bin 中的 node 命令,用它作为 pm2 执行的 node 命令。