任何使用nodejs编写api接口并部署到服务器上
一、用node.js编写api接口
1、安装node环境,没有就去下载nodejs, 下载地址
2、创建一个node项目, 新建一个目录文件,例node_demo
3、进入node_demo目录下,执行命令:npm init -y
如下图所示:
4、安装express框架, 及相关依赖。
npm install express #安装express框架
npm install body-parser #body-parser
是一个HTTP请求体解析中间件,使用这个模块可以解析JSON、Raw、文本(Text)、URL-encoded格式的请求体,Express
框架中就是使用这个模块做为请求体解析中间件。
参考文献:https://blog.csdn.net/fuhanghang/article/details/116986474
npm install cors --save #利用cors模块解决跨域问题:
安装之后目录结构如下:
我们接着打开vscode 这个软件打开,当然也可以用 idea
,打开之后我们需要添加一个 app.js
这个文件,因为这是我们启动服务的一个入口!
app.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'); })
5, 启动接口: node app.js
6, 在前端则使用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/<br> #写入环境变量 echo "export PATH=/usr/local/nodejs/node-v10.15.3-linux-x64/bin:$PATH" >> /etc/profile source /etc/profile<br> #查看版本信息 node -v
2、把 api 接口代码上传到服务器(不用上传node_modules,有package.json文件就行了),在服务器文件通过命令窗口npm install 安装依赖。 一般放到服务器的根路径下的 api 文件夹/api/
3、在服务器安全组中添加 api 监听的端口号不然访问不了接口,比如阿里云的安全防火墙
4、cd 到 api 接口目录下,输入node app.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地址访问接口,例:45.103.xx.81/api/list或绑定的域名www.xxx.com/api/list访问。
如下图所示:
测速启动成功!!!
用心做它,真心体会.