全部产品

NodeJS存量应用迁移方案

更新时间:2020-09-11 23:01:34

NodeJS存量应用迁移方案

已有的NodeJS应用无需改造即可快速通过此方案部署到Serverless架构之上,享受实时弹性、按量付费的收益。

如何迁移

前提:应用文件总大小小于 100MB

阅读:基于 NodeJS 存量应用方案迁移 Express 应用

阅读:基于 NodeJS 存量应用方案迁移 KOA 应用

阅读:基于 NodeJS 存量应用方案迁移 Egg 应用

阅读:基于 NodeJS 存量应用方案迁移 NextJS 应用

以下内容介绍如何迁移一个前端静态应用

步骤一,创建应用

  • 登录云开发平台,进入「应用列表」,创建新应用,在「技术场景」「WEB」类目下选择「NodeJS存量应用迁移方案」,并根据指引完成应用的创建

    step1

    step2

步骤二,上传应用

  • 在新创建出来的应用卡片上,点击「开发部署」,进入 CloudIDE 云开发界面

    step3

    step4

  • 打开 CloudIDE 资源管理器的文件列表,打开本地的 NodeJS 存量应用的根目录,将应用根目录下的所有文件拖拽至 CloudIDE 资源管理器的文件列表step5

    step6

步骤三,部署

  • 安装依赖,在 CloudIDE 的「终端」安装 npm 依赖

    1. npm i
  • 打开 CloudIDE 部署插件,选择「日常环境」,点击「部署」,部署成功后即可通过自动分配的临时域名查看运行效果step7

    step8

    step9

步骤四,绑定域名

  • 在日常环境和预发环境都测试无误后,在应用卡片的「应用管理」面板,选择「线上环境」按照提示绑定您自己的域名

  • 回到 CloudIDE,打开部署插件,选择「线上环境」,点击「部署」,部署成功后,即可通过您自己的域名查看线上运行的效果

  • 更多详情请查看:绑定域名部署线上环境

FAQ

  • Q:如果我的应用需要安装 npm 依赖怎么做?

    请确保您应用下的 package.json 文件也一同从本地拖拽到了 CloudIDE 中,在 CloudIDE 右下方的「终端」输入 npm i 即可在日常开发状态安装依赖

  • Q:如果我的应用 Build 后只想部署指定的文件,要怎么做?

    打开 CloudIDE 中的 .workbench 文件,会看到以下内容

    1. {
    2. "fcRouteDefault" : [
    3. {"apiUri":"/*",
    4. "fcHandler":"serverless.handler",
    5. "httpMethod":"ANY"
    6. }
    7. ],
    8. "cicd": {
    9. "package": "zip -r code.zip ./ -x '*.git*' -x '*.zip' -x '.DS_Store'"
    10. }
    11. }

    编辑以下内容:

    1. zip -r code.zip ./ -x '*.git*' -x '*.zip' -x '.DS_Store'

    这条指令的语义为:将当前目录下的所有文件和文件夹全部打包到 code.zip,.git *.zip .DS_Store 这些文件除外。

    假如,你的应用 Build 后,会将所有要部署到线上的文件都打包到 build/web/ 目录下,那么,你可以将上面那条指令修改为

    1. npm run build && cd build/web/ && zip -r ../../code.zip . && cd ../../ && zip code.zip serverless.js

    这条指令的语义为:

    第一步,执行Build命令

    npm run build

    第二步,Build结束后,进入生成的 build/web 目录

    cd build/web/

    第三步,执行打包命令,将当前目录下所有文件和文件夹打包到code.zip并保存到上上层目录(也就是 CloudIDE 的应用文件根目录,压缩包的名称必须是 code.zip,必须保存在此目录下)之下

    zip -r ../../code.zip .

    第四步,回到上上层目录

    cd ../../

    第五步,将当前目录下的 serverless.js 也打进刚刚那个 code.zip 压缩包之中(必须MUST)

    zip code.zip serverless.js

    推荐使用以下更安全通用的打包部署指令

    1. mkdir zip && rsync -a --exclude node_modules/ --exclude package-lock.json --exclude zip/ . ./zip && cd zip && npm install --production && zip -r ../code.zip ./ -x '*.git*' -x '*.zip' -x '.DS_Store' && cd ../ && rm -rf zip

    语义

    1.在当前根目录下创建 zip 目录 && 2.将当前根目录下的 node_modules/ 目录、package-lock.json文件、zip/ 目录排除在外,将其他所有文件和目录复制到 zip 目录下 && 3.进入 zip 目录 && 4.最小化安装 npm 依赖 && 5.将 zip 目录下所有文件(.git,.zip,.DS_Store 除外)打包到根目录 code.zip && 6.进入根目录 && 7.删除打包过程目录 zip

应用中操作数据库

  • 如果你的应用需要操作数据库,可以参考本示例中的数据库示例

    1. defalut.html 演示了通过 AJAX 方式读取 RDS 数据库数据
    2. /api/db_config.js 演示了如何连接 RDS OTS 数据库
    3. /api/db_get.js 演示了如何读取 RDS OTS 数据库
    4. package.json 演示了数据库操作需要安装的 npm 依赖

    db

  • 要测试数据库效果,需要在「应用配置」中添加以下用于测试的数据库连接环境变量,如果要开发自己的数据库应用,以下环境变量需要替换成自己的真实信息

    1. OTS_ENDPOINT=https://todolist.cn-shanghai.ots.aliyuncs.com
    2. OTS_INSTANCE=todolist
    3. OTS_ACCESSKEY=LTAI4G1j3U8ue1yT3g6Tg1TG
    4. OTS_SECRET=WB8Ev6zMHoKQnUSLp8V4zP7xeAgbWC
    5. RDS_HOST=rm-uf6y14uhf0080yfrb7o.mysql.rds.aliyuncs.com
    6. RDS_DBNAME=faas-test
    7. RDS_USERNAME=faas_db_test
    8. RDS_PASSWORD=YY6i8Jp7W_mtYxU

    添加环境变量