最新版本 https://nodejs.org/en/download/
旧版本 https://nodejs.org/en/download/releases/
开发者维护的版本 https://nodejs.org/download/nightly/
安装
源码安装(不建议,要求高)
gcc and g++ 4.9.4 or newer, or
clang and clang++ 3.4.2 or newer (macOS: latest Xcode Command Line Tools)
Python 2.6 or 2.7
GNU Make 3.81 or newer
二进制安装
- 下载
wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz
- 文件校检
sha256sum node-v8.9.4-linux-x64.tar.xz
- 解压
tar xvJf node-v8.9.4-linux-x64.tar.xz
- 移动
mv node-v8.9.4-linux-x64 /usr/local/ && cd /usr/local && ln -s node-v8.9.4-linux-x64 node
- 环境变量
cat /etc/profile.d/node.sh
export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
- 生效
. /etc/profile.d/node.sh
- 验证
node -v
v8.9.4
采用包管理方式安装
参考 https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora
On RHEL, CentOS or Fedora, for Node.js v8 LTS:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
yum -y install nodejs
以上就是常见的安装NODE的三种方式。那么
环境安装好后,如果使用nodejs呢?
按照官网写一个app.js,文件内容为
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
启动
node app.js
Server running at http://127.0.0.1:3000/
我们另外开一个终端请求
curl http://127.0.0.1:3000
Hello World
完成!
当终端关掉的时候,node服务就断开了,如何使node一直在后台跑呢?
我们来看看除了screen,nohup等外,node的三种守护方式supervisor,pm2,forever
supervisor就不说了,我比较喜欢用node自带的模块
forever可以看做是一个nodejs的守护进程,能够启动,停止,重启我们的app应用。
- 安装forever
npm install forever -g
forever的具体用法参数可以执行 forever -h 查看
- 运行
forever start app.js
kill node的PID,发现他的PID已经改变了
forever list 列出运行的进程
forever stop 0 关闭进程,Stop the daemon SCRIPT by Id|Uid|Pid|Index|Script
再来看看pm2
- 安装
npm install -g pm2
ls -al /usr/local/node/bin/
- 运行
pm2 start app.js
哈哈,看起来就比较高大上,pm2 -h看起来功能也比较多,这才是我们想要的。
总结:forever和pm2都可以做到代码修改后重启服务,pm2更好一些,支持0 downtime,0 秒停机重载,我理解大概意思是维护升级的时候不需要停机.