• 使用nodejs编写api接口并部署到服务器上


    一、用node.js编写api接口

    1、安装node环境,没有就去看上一篇文章
    2、创建一个node项目, 新建一个目录文件,例node_proxy
    3、在新建的node项目执行npm init, 文件会生成一个package.json的文件
    目录:

    1.js里编写

    const express = require('express');
    const app = express();
    const os = require('os');
    app.use(express.static("./"));
    app.post('/ms/coupon/template/pageList', function (req, res) {
        res.setHeader('Content-Type', 'text/plain;charset=utf8');
        res.end(JSON.stringify({
            code: 0,
            data: {
                list:[
                    {
                        couponTemplateId: 1,
                        couponName: '小布丁代金券',
                    }
                ],
                pageIndex: 1,
                pageSize: 10,
                total: 3
            },
            msg: 'success',
            success: true
        }))
    })
    // 添加链接保存
    app.get('/ms/coupon/template/get', function (req, res) {
        res.setHeader('Content-Type', 'text/plain;charset=utf8');
        res.end(JSON.stringify({
            code: 0,
            data: {
              brandName: '品牌名称',
              couponAvailableTime: '2020-45-34',
            },
            msg: 'success',
            success: true
        }))
    })
    const server = app.listen(8888, function (req, res, next) {
        let host = server.address().address
        let port = server.address().port
        console.log("http://%s:%s", host, port)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    4、启动接口: node 1.js
    6、在前端则使用http://localhost:8888/ms/coupon/template/get 去访问这个接口


    二、把项目部署到服务器上

    到目前node的环境是搭建好了的。
    1、把 api 接口代码上传到服务器(不用上传node_modules,有package.json文件就行了),在服务器文件通过命令窗口npm install 安装依赖。 一般放到服务器的根路径下的 api 文件夹/api/

    2、在服务器安全组中添加 api 监听的端口号不然访问不了接口,比如腾讯云云的安全防火墙
    在这里插入图片描述

    3、cd 到 api 接口目录下,输入node index.js启动接口就可以了。但是命令窗口关了接口连接也会断开, 可以使用screen、forever、pm2保护进程。

    三、让nodejs接口一直在服务器运行

    1、screen、forever、pm2都可以管理nodejs的接口,我这里用了pm2.

    2、 建议使用 PM2 , 优点:
      ①可以多进程
      ②可以将日志(分类)保存到指定的目的
      ③可以自动重启
      ④可以方便的查看进程基本信息

    安装:
    npm i -g pm2
    
    • 1
    启动:
    pm2 start app.js --watch   #实时监控app.js的方式启动,当app.js文件有变动时,pm2会自动reload
    pm2 start app.js -i max  # 根据有效CPU数目启动最大进程数目
    pm2 start app.js -n appname -i max -e err.log -o out.log # 以 appname 启动 app.js,错误当前目录 err.log 为 error log,out.log 为输出 log
    pm2 start bb.sh  --interpreter bash # 用 bash 执行脚本
    pm2 start test.py--interpreter python3 # 用 python 环境执行脚本
    
    • 1
    • 2
    • 3
    • 4
    • 5

    启动类似 node xxx.js 的项目

    pm2 start --name xxxsname xxx.js  # 将运行的实例命名为 xxxsname
    
    • 1

    启动类似 npm start 的项目

    pm2 start --name appname npm -- start # 设置应用名为 appname
    
    • 1

    启动类似 npm run serve 的项目

    pm2 start --name servename npm -- run serve # 设置应用名为 servename
    
    • 1

    –name xxx 或者 -n xxx 表示将应用命名为 xxx
    以配置文件的形式启动

    pm2 start pm2config.json
    
    • 1

    查看 PM2 部署的应用

    pm2 list               # 显示所有进程状态
    pm2 ls                 # 显示所有进程状态
    pm2 show 0			   # 显示某个应用的详细信息
    pm2 monit              # 监视所有进程
    pm2 logs               # 显示所有进程日志
    pm2 log 0 	           # 查看 0 应用的日志
    pm2 stop all           # 停止所有进程
    pm2 restart all        # 重启所有进程
    pm2 reload all         # 0秒停机重载进程
    pm2 stop 0             # 停止指定的进程,0 是应用 id
    pm2 restart 0          # 重启指定的进程,0 是应用 id
    pm2 startup            # 产生 init 脚本 保持进程活着,startup 是指系统boot, 开机进程自启动
    pm2 unstartup          # 禁用开机进程自启动
    pm2 delete 0           # 杀死指定的进程,0 是应用 id,会删除该应用
    pm2 delete all         # 杀死全部进程,会删除所有应用
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    D - United We Stand
    (十四)VBA常用基础知识:当前excel文件所有sheet循环,获取sheet名,获取最大行数最大列数
    云服务器安装宝塔面板,如何对高并发大流量网站的优化方法
    Java注解和工程搭建
    Java:垃圾收集 CPU 统计信息
    【2023】某python语言程序设计跟学第八周内容
    极智开发 | 讲解 React 组件三大属性之二:props
    多场景,跨平台测试,Neptune CHT-C助力用户打造安全的座舱环境
    带你玩转序列模型之NLP与词嵌入(二)
    [机器学习算法] 主成分分析
  • 原文地址:https://blog.csdn.net/weixin_46034375/article/details/127572879