万事开头难。尝试通过阿里云服务器部署node服务。中间踩了一些坑。借此给自己一个总结。

1 远程服务器安装node

(1) 安装node

 wget https://npmmirror.com/mirrors/node/v16.16.0/node-v16.16.0-linux-x64.tar.xz

阿里hadoop私有化部署 阿里云部署node项目_运维

 

通过此命令。我们会在服务器当前目录下出现一个node的压缩包
 (2)解压  tar xf node-v16.16.0-linux-x64.tar.xz

注意,这里最后的.xz不要遗漏

   (3)此时会出现一个和压缩包同名的文件夹,我们可以直接更改名称为node 或者借助lunix命令 mv node-v16.16.0-linux-x64.tar.xz node  //mv A B 把A 重命名为B

  (4)我们需要配置node的全局环境变量

      通过vim /etc/profile 打开profile这个文件,添加如下语句:

            export NODE_HOME=/opt/node/node
            export PATH=$NODE_HOME/bin:$PATH

这里特别注意:NODE_HOME的路径是你安装node的目录。比如我的node安装在根目录下的node文件下其路径就是opt/node/node

阿里hadoop私有化部署 阿里云部署node项目_运维_02

 (5)/ 保存环境变量。通过 source /etc/profile  (source命令 后面是路径)source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。因为linux所有的操作都会变成文件的格式存在。

  到这一步node就安装成功了。我们通过node -V就能正常显示当前node的版本。

2 部署node服务

(1)新建一个文件夹用于部署node

   我这里直接在根目录新建一个nodeServer文件夹,然后把server.js文件和packages.json文件上传上去。文件内容如下

 server.js 

const Koa=require("koa")
const Router=require("koa-router")
 
const Multer=require("koa-multer")
const fs=require("fs")
const path=require("path")
 
const app=new Koa()
const router=new Router()
 
let storage=Multer.diskStorage({
    destination:function(req,file,cb){
        cb(null,"static/upload")
    },
    filename:function(req,file,cb){
        var fileFormat = (file.originalname).split(".");
        cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]);
    }
})
let upload=Multer({storage:storage})
 
app.use(router.routes())
app.use(router.allowedMethods())
 
router.get("/api/userInfo",async ctx=>{
    ctx.body={
        name:"sean",
        age:20
    }
})
 
router.post("/api/upload",upload.fields([{name:"file"}]),async ctx=>{
    console.log("ctx.req:",ctx.req)
    ctx.body={
       msg:"上传成功"
    }
})
 
app.listen(4000,()=>{
    console.log("监听成功")
})

package.json

{
  "name": "upload",
  "private": true,
  "version": "0.0.0",
  "type": "module",  //特别注意
  "scripts": {
  },
  "dependencies": {
    "koa": "^2.13.4",
    "koa-multer": "^1.0.2",
    "koa-router": "^12.0.0"
  }
}

      这里特别注意package中的type字段:由于之前我用的是vite生成的项目。这里运行以后发现一直报错。提示require不支持。最后发现问题出在这里。一定要把type:"module"去掉。不然运行它会以e6模块化方式,这在node服务里是不支持的。

(2)给服务器新增一个端口。比如我们的server.js启动的端口是3000,那我们需要看防火墙是否开放了这个端口,通过 firewall-cmd --zone=public --list-ports  如果3000端口不在列表中则需要新增3000端口,最后千万不要忘记firewall-cmd --reload 重启防火墙

阿里hadoop私有化部署 阿里云部署node项目_linux_03

 3 启动node服务

 我们首先进入nodeServer目录,直接在远程通过 ip:3000 (ip)是你远程服务器的公网ip 就可以正常访问。如图:

阿里hadoop私有化部署 阿里云部署node项目_阿里hadoop私有化部署_04

阿里hadoop私有化部署 阿里云部署node项目_运维_05

 

 这样就是远程获取到node服务的数据