node写的服务端如何部署到线上?

项目结构如图,
node项目,包含前端和服务端,打包后前端代码在dist文件夹里,可以直接拖动到服务器即可上线,可是node服务端如何发布到线上呢?clipboard.png

阅读 8.4k
5 个回答
  1. 首先你需要有可对外发布的服务器资源提供在线服务,且该服务器支持node的应用部署
  2. 把项目文件复制到服务器上,通过npm install等重新构建运行环境
  3. 根据项目配置,运行npm start或者其他指令运行服务

楼主问的问题挺大的。粗略地说,大概包含如下几个步骤。

  1. 环境依赖安装
  2. 项目资源部署
  3. 项目启动运行
  4. 请求转发

1. 环境依赖部署

就是在服务器上安装node运行时,以及全局依赖的node库。建议采用 nvm 进行安装,方便node版本管理。

如果服务器对访问外网有限制,可以参考笔者这篇 《Node服务一键离线部署

项目资源部署

大部分情况下,就是将你的项目目录打包上传到服务器的特定目录。无法用到 压缩、解压、文件上传 几个命令。也可以通过图形化工具进行上传,看楼主实际情况。

项目启动运行

项目实际上线,一般需要用到进程管理器,比如 PM2,它可以帮你完成很多工作,比如进程管理、监控、重启、日志记录等。

使用很简单,可以参考 《PM2实用入门指南

请求转发

为了在服务器上灵活配置运行多个服务,一般还需要借助nginx之类的反向代理,进行请求转发。例子如下,楼主可以根据需求自行修改

server {
  listen 80;
  server_name www.example.com; # 你的域名

  root /data/site; # 你的项目根路径
  index index.html index.htm index.php;

  location ^~ / { # 路径根据情况来
    proxy_pass http://127.0.0.1:8080/oc/; # 假设你监听的是8080端口
  }
}
node ./app.js

启动服务器监听端口

node 项目入口文件

一般node服务上线到服务器用pm2维护,很方便监控进程的状态,也方便重启。

  1. 服务器上安装pm2 http://pm2.keymetrics.io/
  2. 将后端代码上传到服务器 然后执行pm2 命令

    pm2 start ./server/app.js
推荐问题
宣传栏