使用nodejs编写api接口并部署到服务器上
一、用node.js编写api接口
1、安装node环境,没有就去下载nodejs, 下载地址
2、创建一个node项目, 新建一个目录文件,例node_proxy
3、在新建的node项目执行npm init, 文件会生成一个package.json的文件
4、安装express框架, 及相关依赖。
npm install express
npm install body-parser
npm install cors --save
5、在node项目建一个index.js文件
/* 引入express框架 */ const express = require('express'); const app = express(); /* 引入cors */ const cors = require('cors'); app.use(cors()); /* 引入body-parser */ const bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.all('*', function (req, res, next) { if (!req.get('Origin')) return next(); // use "*" here to accept any origin res.set('Access-Control-Allow-Origin', '*'); res.set('Access-Control-Allow-Methods', 'GET'); res.set('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type'); // res.set('Access-Control-Allow-Max-Age', 3600); if ('OPTIONS' == req.method) return res.send(200); next(); });
app.get('/', (req, res) => { res.send('<p style="color:red">服务已启动</p>'); })
app.get('/api/list', (req, res) => { res.json({ code: 200, message: '成功', data: { list: [] } }); }) /* 监听端口 */ app.listen(3000, () => { console.log('listen:3000'); })
6、启动接口: node index.js
7、在前端则使用http://localhost:3000/api/list 去访问这个接口
二、把项目部署到服务器上
1、在服务器安装 nodejs,
服务器版本信息
LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.4.1708 (Core) Release: 7.4.1708 Codename: Core
安装脚本: #准备 yum install -y wget #下载安装 wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz mkdir -p /usr/local/nodejs tar -Jxvf node-v10.15.3-linux-x64.tar.xz -C /usr/local/nodejs/
#写入环境变量 echo "export PATH=/usr/local/nodejs/node-v10.15.3-linux-x64/bin:$PATH" >> /etc/profile source /etc/profile
#查看版本信息 node -v
2、把 api 接口代码上传到服务器(不用上传node_modules,有package.json文件就行了),在服务器文件通过命令窗口npm install 安装依赖。 一般放到服务器的根路径下的 api 文件夹/api/
3、在服务器安全组中添加 api 监听的端口号不然访问不了接口,比如阿里云的安全防火墙
4、cd 到 api 接口目录下,输入node index.js启动接口就可以了。但是命令窗口关了接口连接也会断开, 可以使用screen、forever、pm2保护进程。
三、让nodejs接口一直在服务器运行
1、screen、forever、pm2都可以管理nodejs的接口,我这里用了pm2.
2、 建议使用 PM2 , 优点:
①可以多进程
②可以将日志(分类)保存到指定的目的
③可以自动重启
④可以方便的查看进程基本信息
3、使用npm/cnpm全局安装
npm install -g pm2
pm2命令使用(项目更目录下使用): $ pm2 start app.js 启动app项目 $ pm2 list 列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。 $ pm2 monit 监视每个node进程的CPU和内存的使用情况 $ pm2 logs 显示所有进程日志 $ pm2 stop all 停止所有进程 $ pm2 restart all 重启所有进程 $ pm2 reload all 0秒停机重载进程 (用于 NETWORKED 进程) $ pm2 stop 0 停止指定的进程 $ pm2 restart 0 重启指定的进程 $ pm2 startup 产生 init 脚本 保持进程活着 $ pm2 web 运行健壮的 computer API endpoint (http://localhost:9615) $ pm2 delete 0 杀死指定的进程 $ pm2 delete all 杀死全部进程
启动进程的方式详细: $ pm2 start app.js -i max 根据有效CPU数目启动最大进程数目 $ pm2 start app.js -i 3 启动3个进程 $ pm2 start app.js -x 用fork模式启动 app.js 而不是使用 cluster $ pm2 start app.js -x -- -a 23 用fork模式启动 app.js 并且传递参数 (-a 23) $ pm2 start app.js --name serverone 启动一个进程并把它命名为 serverone $ pm2 stop serverone 停止 serverone 进程 $ pm2 start app.json 启动进程, 在 app.json里设置选项 $ pm2 start app.js -i max -- -a 23 在--之后给 app.js 传递参数 $ pm2 start app.js -i max -e err.log -o out.log 启动 并 生成一个配置文件
4、通过服务器ip地址访问接口,例:47.106.xx.81/api/list或绑定的域名www.xxx.com/api/list访问。