• 阿里云服务器部署node服务(一)


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

    1 远程服务器安装node

    (1) 安装node

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

     

    通过此命令。我们会在服务器当前目录下出现一个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

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

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

    2 部署node服务

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

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

     server.js 

    1. const Koa=require("koa")
    2. const Router=require("koa-router")
    3. const Multer=require("koa-multer")
    4. const fs=require("fs")
    5. const path=require("path")
    6. const app=new Koa()
    7. const router=new Router()
    8. let storage=Multer.diskStorage({
    9. destination:function(req,file,cb){
    10. cb(null,"static/upload")
    11. },
    12. filename:function(req,file,cb){
    13. var fileFormat = (file.originalname).split(".");
    14. cb(null,Date.now() + "." + fileFormat[fileFormat.length - 1]);
    15. }
    16. })
    17. let upload=Multer({storage:storage})
    18. app.use(router.routes())
    19. app.use(router.allowedMethods())
    20. router.get("/api/userInfo",async ctx=>{
    21. ctx.body={
    22. name:"sean",
    23. age:20
    24. }
    25. })
    26. router.post("/api/upload",upload.fields([{name:"file"}]),async ctx=>{
    27. console.log("ctx.req:",ctx.req)
    28. ctx.body={
    29. msg:"上传成功"
    30. }
    31. })
    32. app.listen(4000,()=>{
    33. console.log("监听成功")
    34. })

    package.json

    1. {
    2. "name": "upload",
    3. "private": true,
    4. "version": "0.0.0",
    5. "type": "module", //特别注意
    6. "scripts": {
    7. },
    8. "dependencies": {
    9. "koa": "^2.13.4",
    10. "koa-multer": "^1.0.2",
    11. "koa-router": "^12.0.0"
    12. }
    13. }

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

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

     3 启动node服务

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

     

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

       

     

  • 相关阅读:
    【数据结构初阶】 顺序表三道题,带你见力扣
    【Android】WebView 基本使用
    排序算法:选择排序,分别用c++、java、python实现
    Exchange Online Kiosk产品详细介绍
    本周大新闻|传苹果MR明年Q1量产,五部委发布VR行业应用行动计划
    Go语言基础,墙上时钟Wall Clock与单调时钟Monotonic Clock
    ZBrush软件这些实用小技巧,你知道几个?
    setsockopt()函数的用法
    代码块的排序算法是什么排序算法
    1、Flowable基础
  • 原文地址:https://blog.csdn.net/baidu_41601048/article/details/126439212