我在介绍使用Nodejs作为服务端提供WebSocket服务,有同学提议要我写一篇关于node安装部署的文章,这不准备好了,本文教你安装nodejs和PM2,以及简单使用。
什么是nodejs
简单一句话,Node.js就是运行在服务端的 JavaScript,如果你熟悉Javascript,那么你将会很容易的学会Node.js。如果你想搞全栈,那你可以把nodejs作为后端开发语言,如大神般游走于前后端。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器 npm,是全球最大的开源库生态系统。
npm又是什么鬼?npm其实是Node.js的包管理工具(package manager),就像你使用PHP的composer、Python的pip一样。
Nodejs可提供异步IO,可实现对高并发的高性能处理,应用到实时聊天、物联网、web服务、定时任务、异步数据处理等等很多场景。
安装Nodejs
1、到官网下载最新稳定版nodejs
根据自己机器系统环境下载对应的版本,我使用的64位的CentOS系统,因此我下载了node-v8.10.0-linux-x64.tar.xz这个包。
如果你想下载其他版本,访问这里:https://nodejs.org/dist/。
2、解压
解压下载的压缩包:node-v8.10.0-linux-x64.tar.xz,需要先使用xz
命令,再解压tar包。解压完成后,我们将nodejs移动到安装目录下,由于该版本已经编译好,因此无需再编译即可使用。
xz -d node-v8.10.0-linux-x64.tar.xz
tar -xvf node-v8.10.0-linux-x64.tar
mv node-v8.10.0-linux-x64 /usr/local/nodejs
知识兔3、设置环境变量
我们需要设置环境变量以便可以直接使用node命令。使用命令vim /etc/profile
打开文件,在文件末尾加上以下两行,并保存。
export NODE_HOME=/usr/local/nodejs
export PATH=$NODE_HOME/bin:$PATH
知识兔保存好后,执行以下命令让配置立即生效:
source /etc/profile
知识兔4、验证
依次输入node -v
和npm -v
命令:
[root@localhost ~]# node -v
v8.10.0
[root@localhost ~]# npm -v
5.6.0
知识兔可以看到node的版本是v8.10.0,而且自带安装好了npm,版本是5.6.0。
5、安装cnpm镜像
由于众所周知的原因,npm
命令安装依赖时会非常慢,因此我们使用淘宝镜像加速安装依赖,安装好后,就可以使用cnpm
命令来安装常用的依赖。
npm install -g cnpm --registry=https://registry.npm.taobao.org
知识兔什么是PM2
PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。
做node开发的同学应该知道,要让node作为服务站点跑起来,可以使用终端工具命令行执行如:
[root@localhost node-web]# node server.js
Server running at http://127.0.0.1:8123/
知识兔这样node服务就跑起来了,server.js是一个简单的node提供的http服务,我们可以使用http://127.0.0.1:8123/访问,但是如果关闭终端连接,这站点即断开,服务终止。
那我们可以想办法让node在后台运行,关闭终端也不影响node提供服务,也许你想到了forever这个工具。
但是我推荐给大家使用PM2这个好工具,尤其在linux环境下表现出色,简单易用。
PM2具有以下特点:
- 内建负载均衡(使用 Node cluster 集群模块)
- 后台运行
- 0 秒停机重载,我理解大概意思是维护升级的时候不需要停机.
- 具有 Ubuntu 和 CentOS 的启动脚本
- 停止不稳定的进程(避免无限循环)
- 控制台检测
- 提供 HTTP API
- 远程控制和实时的接口 API ( Nodejs 模块,允许和 PM2 进程管理器交互 )
安装PM2
使用cnpm
命令安装全局的pm2。
cnpm install -g pm2
知识兔pm2装好后,假如你写好了一个node代码文件server.js,可以使用以下命令来启动一个站点:
pm2 start server.js --name 'hello'
知识兔这时就启动了一个名称为“hello”的node进程。
接下来我们要做的是把pm2加入到开机启动中去,以便于pm2会随着服务器开机自启动,运行以下命令:
pm2 startup
pm2 save
知识兔我们还可以使用命令pm2 list
查看当前node服务进程。
我们还可以使用pm2 show hello
查看名称为“hello”的node进程详情。
更多有关PM2的使用说明请参考PM2项目github上的地址:https://github.com/Unitech/pm2。