万事开头难。尝试通过阿里云服务器部署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的版本。
(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 重启防火墙

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


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