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

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

TKFWK8[J]QN2)8}L@(`$S3W.png

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情


简介


  • 前面分别实现了 SpringBoot、Vue 项目在华为软开云的一键操作。但是 Vue 打包后的部署,需要一个静态资源服务器来 Serve,如果跨域未在服务器端处理,那么在这一静态服务器中同时还要处理 Vue 在生产环境下的跨域。

  • 静态资源服务器的实现方式有很多,基本每种服务端语言都有对应的框架或容器,比如 Java 的 Tomcat、以及 Python、PHP、Node.js 等,另外还有较为专业的 HTTP 和反向代理 Web 服务器 Nginx,均可实现这一目标。

  • 这里选择 Node.js 实现的静态资源服务器,主要原因是其语法也是 JavaScript,与前端的 Vue 通用;另外在 Node 的生态下,已经有现成的库实现了跨域,关键是跟 Vue 在开发环境下跨域完全一样,平滑迁移,无缝切换。

效果


2R_Q307}GTHH]V`N35313G9.png

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: 开发环境跨域


7(`5_7F[G_R~JIW18TK}U9M.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 也解压到该目录。


@EBT`({TENUTM5`1I3C%IKH.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!

目录
相关文章
|
9月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
Node.js 是一种高效的 JavaScript 运行环境,基于 Chrome V8 引擎,支持在服务器端运行 JavaScript 代码。本文介绍如何在阿里云上一键部署 Node.js 环境,无需繁琐配置,轻松上手。前提条件包括 ECS 实例运行中且操作系统为 CentOS、Ubuntu 等。功能特点为一键安装和稳定性好,支持常用 LTS 版本。安装步骤简单:登录阿里云控制台,选择扩展程序管理页面,安装 Node.js 扩展,选择实例和版本,等待创建完成并验证安装成功。通过阿里云的公共扩展,初学者和经验丰富的开发者都能快速进入开发状态,开启高效开发之旅。
|
9月前
|
弹性计算 JavaScript 前端开发
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
一键安装!阿里云新功能部署Nodejs环境到ECS竟然如此简单!
|
12月前
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
11月前
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
201 8
|
JavaScript
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
797 1
|
存储 运维 数据挖掘
服务器数据恢复—华为OceanStor存储数据恢复案例
服务器存储数据恢复环境: 华为品牌型号为OceanStor S2600T的存储设备,存储上有一组由24块4T容量的机械硬盘组建的RAID5阵列,作为存储池使用。 图1 服务器存储故障&检测: 存储设备中raid5阵列上多块硬盘出现故障离线,raid5阵列失效,数据无法正常访问。 关机后将存储中所有硬盘标记&取出,硬件工程师对所有硬盘进行硬件故障检测。经过检测,没有发现存在物理故障的磁盘,都可以正常读取。
|
数据采集 JavaScript 搜索推荐
服务器端渲染(SSR)(Nuxt+Next.js)
服务器端渲染(SSR)技术在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js和Next.js分别是基于Vue.js和React.js的流行SSR框架。Nuxt.js提供自动化路由管理、页面级数据获取和布局系统,支持SSR和静态站点生成。Next.js支持SSR、静态生成和文件系统路由,通过`getServerSideProps`和`getStaticProps`实现数据获取。SSR的优点包括首屏加载快、SEO友好和适合复杂页面,但也会增加服务器压力、开发限制和调试难度。选择框架时,可根据项目需求和技术栈决定使用Nuxt.js或Next.js。
|
缓存 负载均衡 监控
性能优化:Node.js高效服务器开发技巧与最佳实践
【10月更文挑战第29天】在Node.js服务器开发中,性能优化至关重要。本文介绍了几种高效开发的最佳实践,包括使用缓存策略、采用异步编程、实施负载均衡和性能监控。通过示例代码展示了如何实现这些技术,帮助开发者构建更快、更稳定的Node.js应用。
379 2
|
11月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。

热门文章

最新文章

下一篇
oss云网关配置