|
| 1 | +[](http://serverless.com) |
| 2 | + |
| 3 | +<br/> |
| 4 | + |
| 5 | +**腾讯云 Express 组件** ⎯⎯⎯ 通过使用 [Tencent Serverless Framework](https://github.com/serverless/components/tree/cloud),基于云上 Serverless 服务(如网关、云函数等),实现“0”配置,便捷开发,极速部署你的 Express 应用,Express 组件支持丰富的配置扩展,提供了目前最易用、低成本并且弹性伸缩的 Express 项目开发/托管能力。 |
| 6 | +<br/> |
| 7 | + |
| 8 | +特性介绍: |
| 9 | + |
| 10 | +- [x] **按需付费** - 按照请求的使用量进行收费,没有请求时无需付费 |
| 11 | +- [x] **"0"配置** - 只需要关心项目代码,之后部署即可,Serverless Framework 会搞定所有配置。 |
| 12 | +- [x] **极速部署** - 仅需几秒,部署你的整个 Express 应用。 |
| 13 | +- [x] **实时日志** - 通过实时日志的输出查看业务状态,便于直接在云端开发应用。 |
| 14 | +- [x] **云端调试** - 针对 Node.js 框架支持一键云端调试能力,屏蔽本地环境的差异。 |
| 15 | +- [x] **便捷协作** - 通过云端的状态信息和部署日志,方便的进行多人协作开发。 |
| 16 | +- [x] **自定义域名** - 支持配置自定义域名及 HTTPS 访问 |
| 17 | + |
| 18 | +<br/> |
| 19 | + |
| 20 | +<img align="right" width="400" src="https://scf-dev-tools-1253665819.cos.ap-guangzhou.myqcloud.com/express_demo_light_sm_resize.gif" /> |
| 21 | + |
| 22 | +快速开始: |
| 23 | + |
| 24 | +1. [**安装**](#1-安装) |
| 25 | +2. [**创建**](#2-创建) |
| 26 | +3. [**部署**](#3-部署) |
| 27 | +4. [**配置**](#4-配置) |
| 28 | +5. [**开发调试**](#5-开发调试) |
| 29 | +6. [**查看状态**](#6-查看状态) |
| 30 | +7. [**移除**](#7-移除) |
| 31 | + |
| 32 | +更多资源: |
| 33 | + |
| 34 | +- [**架构说明**](#架构说明) |
| 35 | +- [**账号配置**](#账号配置) |
| 36 | + |
| 37 | + |
| 38 | + |
| 39 | +### 1. 安装 |
| 40 | + |
| 41 | +通过 npm 安装最新版本的 Serverless Framework |
| 42 | + |
| 43 | +```bash |
| 44 | +$ npm install -g serverless |
| 45 | +``` |
| 46 | + |
| 47 | +### 2. 创建 |
| 48 | + |
| 49 | +通过如下命令和模板链接,快速创建一个 Express 应用: |
| 50 | + |
| 51 | +```bash |
| 52 | +$ serverless create --template-url https://github.com/serverless-components/tencent-express/tree/master/example |
| 53 | +$ cd example |
| 54 | +``` |
| 55 | + |
| 56 | +执行如下命令,安装 Express 应用的对应依赖 |
| 57 | + |
| 58 | +``` |
| 59 | +$ npm install |
| 60 | +``` |
| 61 | + |
| 62 | +### 3. 部署 |
| 63 | + |
| 64 | +在 `serverless.yml` 文件下的目录中运行 `serverless deploy` 进行 Express 项目的部署。第一次部署可能耗时相对较久,但后续的二次部署会在几秒钟之内完成。部署完毕后,你可以在命令行的输出中查看到你 Express 应用的 URL 地址,点击地址即可访问你的 Express 项目。 |
| 65 | + |
| 66 | +**注意:** |
| 67 | + |
| 68 | +如您的账号未[登陆](https://cloud.tencent.com/login)或[注册](https://cloud.tencent.com/register)腾讯云,您可以直接通过`微信`扫描命令行中的二维码进行授权登陆和注册。 |
| 69 | + |
| 70 | +如果出现了 `internal server error` 的报错,请检查是否在创建模板后没有运行 `npm install`。 |
| 71 | + |
| 72 | +如果希望查看更多部署过程的信息,可以通过`sls deploy --debug` 命令查看部署过程中的实时日志信息,`sls`是 `serverless` 命令的缩写。 |
| 73 | + |
| 74 | +<br/> |
| 75 | + |
| 76 | +### 4. 配置 |
| 77 | + |
| 78 | +Express 组件支持 0 配置部署,也就是可以直接通过配置文件中的默认值进行部署。但你依然可以修改更多可选配置来进一步开发该 Express 项目。 |
| 79 | + |
| 80 | +以下是 Express 组件的 `serverless.yml`完整配置说明: |
| 81 | + |
| 82 | +```yml |
| 83 | +# serverless.yml |
| 84 | + |
| 85 | +component: express # (required) name of the component. In that case, it's express. |
| 86 | +name: expressDemo # (required) name of your express component instance. |
| 87 | +org: orgDemo # (optional) serverless dashboard org. default is the first org you created during signup. |
| 88 | +app: appDemo # (optional) serverless dashboard app. default is the same as the name property. |
| 89 | +stage: dev # (optional) serverless dashboard stage. default is dev. |
| 90 | + |
| 91 | +inputs: |
| 92 | + src: |
| 93 | + src: ./ # (optional) path to the source folder. default is a hello world app. |
| 94 | + exclude: |
| 95 | + - .env |
| 96 | + functionName: expressDemo |
| 97 | + region: ap-guangzhou |
| 98 | + runtime: Nodejs10.15 |
| 99 | + apigatewayConf: |
| 100 | + protocols: |
| 101 | + - http |
| 102 | + - https |
| 103 | + environment: release |
| 104 | +``` |
| 105 | +
|
| 106 | +点此查看[全量配置及配置说明](https://github.com/serverless-components/tencent-express/tree/master/docs/configure.md) |
| 107 | +
|
| 108 | +当你根据该配置文件更新配置字段后,再次运行 `serverless deploy` 或者 `serverless` 就可以更新配置到云端。 |
| 109 | + |
| 110 | +### 5. 开发调试 |
| 111 | + |
| 112 | +部署了 Express.js 应用后,可以通过开发调试能力对该项目进行二次开发,从而开发一个生产应用。在本地修改和更新代码后,不需要每次都运行 `serverless deploy` 命令来反复部署。你可以直接通过 `serverless dev` 命令对本地代码的改动进行检测和自动上传。 |
| 113 | + |
| 114 | +可以通过在 `serverless.yml`文件所在的目录下运行 `serverless dev` 命令开启开发调试能力。 |
| 115 | + |
| 116 | +`serverless dev` 同时支持实时输出云端日志,每次部署完毕后,对项目进行访问,即可在命令行中实时输出调用日志,便于查看业务情况和排障。 |
| 117 | + |
| 118 | +除了实时日志输出之外,针对 Node.js 应用,当前也支持云端调试能力。在开启 `serverless dev` 命令之后,将会自动监听远端端口,并将函数的超时时间临时配置为 900s。此时你可以通过访问 chrome://inspect/#devices 查找远端的调试路径,并直接对云端代码进行断点等调试。在调试模式结束后,需要再次部署从而将代码更新并将超时时间设置为原来的值。详情参考[开发模式和云端调试](https://cloud.tencent.com/document/product/1154/43220)。 |
| 119 | + |
| 120 | +### 6. 查看状态 |
| 121 | + |
| 122 | +在`serverless.yml`文件所在的目录下,通过如下命令查看部署状态: |
| 123 | + |
| 124 | +``` |
| 125 | +$ serverless info |
| 126 | +``` |
| 127 | +
|
| 128 | +### 7. 移除 |
| 129 | +
|
| 130 | +在`serverless.yml`文件所在的目录下,通过以下命令移除部署的 Express 服务。移除后该组件会对应删除云上部署时所创建的所有相关资源。 |
| 131 | +
|
| 132 | +``` |
| 133 | +$ serverless remove |
| 134 | +``` |
| 135 | +
|
| 136 | +和部署类似,支持通过 `sls remove --debug` 命令查看移除过程中的实时日志信息,`sls`是 `serverless` 命令的缩写。 |
| 137 | +
|
| 138 | +## 架构说明 |
| 139 | +
|
| 140 | +Express 组件将在腾讯云账户中使用到如下 Serverless 服务: |
| 141 | +
|
| 142 | +- [x] **API 网关** - API 网关将会接收外部请求并且转发到 SCF 云函数中。 |
| 143 | +- [x] **SCF 云函数** - 云函数将承载 Express.js 应用。 |
| 144 | +- [x] **CAM 访问控制** - 该组件会创建默认 CAM 角色用于授权访问关联资源。 |
| 145 | +- [x] **COS 对象存储** - 为确保上传速度和质量,云函数压缩并上传代码时,会默认将代码包存储在特定命名的 COS 桶中。 |
| 146 | +- [x] **SSL 证书服务** - 如果你在 yaml 文件中配置了 `apigatewayConf.customDomains` 字段,需要做自定义域名绑定并开启 HTTPS 时,也会用到证书管理服务和域名服务。Serverless Framework 会根据已经备案的域名自动申请并配置 SSL 证书。 |
| 147 | +
|
| 148 | +## 账号配置 |
| 149 | +
|
| 150 | +当前默认支持 CLI 扫描二维码登录,如您希望配置持久的环境变量/秘钥信息,也可以本地创建 `.env` 文件 |
| 151 | +
|
| 152 | +```console |
| 153 | +$ touch .env # 腾讯云的配置信息 |
| 154 | +``` |
| 155 | + |
| 156 | +在 `.env` 文件中配置腾讯云的 SecretId 和 SecretKey 信息并保存 |
| 157 | + |
| 158 | +如果没有腾讯云账号,可以在此[注册新账号](https://cloud.tencent.com/register)。 |
| 159 | + |
| 160 | +如果已有腾讯云账号,可以在[API 密钥管理](https://console.cloud.tencent.com/cam/capi)中获取 `SecretId` 和`SecretKey`. |
| 161 | + |
| 162 | +``` |
| 163 | +# .env |
| 164 | +TENCENT_SECRET_ID=123 |
| 165 | +TENCENT_SECRET_KEY=123 |
| 166 | +``` |
| 167 | + |
| 168 | +## License |
| 169 | + |
| 170 | +MIT License |
| 171 | + |
| 172 | +Copyright (c) 2020 Tencent Cloud, Inc. |
0 commit comments