Heartsuit's Simple Blog

A place to hold mainly reading notes, and some technical stuff occasionally. 这里主要是一些读书笔记、感悟;还有部分技术相关的内容。


Project maintained by heartsuit Hosted on GitHub Pages — Theme by mattgraham

上手华为软开云DevOps前后端分离实践之-静态资源服务器(Node.js)

目录[-]

简介

效果

2019-04-18-Appearance.gif

Note: 这篇文章的内容比较简单,就是基于 koa 实现了一个静态资源服务器,直接上核心代码,就不放到华为云了。部署时将该 Node.js 项目放到 Linux 的目录 A,然后前端 Vue 的 dist 静态资源文件夹直接放到目录 A 即可。

Node.js 代码index.js

const path = require("path");
const Koa = require("koa");
const static = require("koa-static");
const httpProxyMiddleware = require("http-proxy-middleware");
const koaConnect = require("koa2-connect");

const app = new Koa();

app.use(static(path.join(__dirname, "dist")));

const proxy = function(context, options) {
  if (typeof options === "string") {
    options = {
      target: options
    };
  }
  return async function(ctx, next) {
    await koaConnect(httpProxyMiddleware(context, options))(ctx, next);
  };
};

// proxy config:生产环境跨域
const proxyTable = {
  "/3rd": {
    target: "http://www.tuling123.com/openapi/api",
    changeOrigin: true,
    pathRewrite: {
      "^/3rd": ""
    }
  },
  "/api": {
    target: "http://114.116.31.223:8080",
    changeOrigin: true
    // pathRewrite: {
    //   '^/api': ''
    // }
  }
};

Object.keys(proxyTable).map(context => {
  const options = proxyTable[context];
  app.use(proxy(context, options));
});

const port = process.env.PORT || 8888;

app.listen(port, () => {
  console.log(`Koa app listening at ${port}...`);
});

Note: 开发环境跨域

2019-04-19-DevCors.png

`Vue`在开发环境下的跨域配置与生产环境下的跨域配置写法完全一致,这是用`Node.js`来实现此静态资源服务器的优势。

Node.js 配置package.json

{
  "name": "front-server",
  "version": "1.0.0",
  "description": "frontend project deployed in node.js static web server",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/heartsuit/devcloud-static-server.git"
  },
  "keywords": ["node.js", "pm2", "static", "resource"],
  "author": "heartsuit",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/heartsuit/devcloud-static-server/issues"
  },
  "homepage": "https://github.com/heartsuit/devcloud-static-server#readme",
  "dependencies": {
    "http-proxy-middleware": "^0.19.1",
    "koa": "^2.7.0",
    "koa-static": "^5.0.0",
    "koa2-connect": "^1.0.2"
  }
}

下图是上一篇上手华为软开云 DevOps 前后端分离实践之-前端 Vue 中的一步,其中cd /opt/front-server即为该静态资源服务器所在目录,上篇文章中 Vue 的打包资源 dist.zip 也解压到该目录。

2019-04-19-DeployVue4.png

Note: 执行Shell命令的第二步是安装依赖:首先配置全局 npm 包安装路径,接着全局安装nrm(注意软连接,这是 Linux 下全局安装 npm 包的一个坑),全局安装pm2;然后进入项目目录,安装依赖,最后由 pm2 守护启动。

PS: nrm 全局安装后,可切换 npm 包的镜像源地址; pm2 全局安装后,可切换 npm 包的镜像源地址; 进入项目目录 指的是一个 node.js 后端服务项目,实现了静态资源服务器,以及 Vue 打包项目在生产环境下的跨域。

至此,我们分别实现了在华为软开云上基于SpringBoot的后端项目、基于Vue的前端项目的一键检查、编译、部署,以及基于Node.js的静态资源服务器(生产环境下 Vue 的跨域)。

Source Code: Github


If you have any questions or any bugs are found, please feel free to contact me.

Your comments and suggestions are welcome!


「说点什么吧😊~~😊」: