粥里有勺糖

vuePress-theme-reco 粥里有勺糖    2018 - 2023
粥里有勺糖 粥里有勺糖

Choose mode

  • dark
  • auto
  • light
关于我
备战春秋
  • 心得总结
  • 校招考点汇总
  • 面经汇总
  • 复习自查
技术笔记
  • 技术教程
  • 模板工程
  • 源码学习
  • 技术概念
  • 个人作品
  • 学习笔记
计算机基础
  • 算法与数据结构
  • 操作系统
  • 计算机网络
  • 设计模式
  • 剑指offer
大前端
  • javascript
  • vue
  • html
  • css
  • 🌏浏览器专题
  • Web性能优化
  • regexp
  • node
面试
  • 问解
  • javascript
  • css
  • 手撕代码
  • 性能优化
  • 综合问题
  • 面经汇总
  • 小程序
手撕代码
  • 数据结构与算法
  • javascript
  • css
个人站点
  • GitHub (opens new window)
  • 博客园 (opens new window)
  • 掘金 (opens new window)
线上作品
  • 轻取(文件收集) (opens new window)
  • 个人图床 (opens new window)
  • 考勤小程序 (opens new window)
  • 时光恋人 (opens new window)
  • 在线简历生成 (opens new window)
留言板
Github (opens new window)
author-avatar

粥里有勺糖

285

文章

40

标签

关于我
备战春秋
  • 心得总结
  • 校招考点汇总
  • 面经汇总
  • 复习自查
技术笔记
  • 技术教程
  • 模板工程
  • 源码学习
  • 技术概念
  • 个人作品
  • 学习笔记
计算机基础
  • 算法与数据结构
  • 操作系统
  • 计算机网络
  • 设计模式
  • 剑指offer
大前端
  • javascript
  • vue
  • html
  • css
  • 🌏浏览器专题
  • Web性能优化
  • regexp
  • node
面试
  • 问解
  • javascript
  • css
  • 手撕代码
  • 性能优化
  • 综合问题
  • 面经汇总
  • 小程序
手撕代码
  • 数据结构与算法
  • javascript
  • css
个人站点
  • GitHub (opens new window)
  • 博客园 (opens new window)
  • 掘金 (opens new window)
线上作品
  • 轻取(文件收集) (opens new window)
  • 个人图床 (opens new window)
  • 考勤小程序 (opens new window)
  • 时光恋人 (opens new window)
  • 在线简历生成 (opens new window)
留言板
Github (opens new window)
  • devlearn

    • 开发教程
    • 实践:利用ArrayBuffer实现预览指定目录下的所有文件的内容
    • 在linux-deepin上使用deepin-wine5完美运行腾讯会议/QQ/微信等此类应用
    • eslint插件开发教程
    • ServerLess之云函数实践-天气API
    • 移动端阻止弹窗下层页面被滑动
    • 小技巧:for of中获取index
    • Git常用的一些基本操作
    • 向页面注入js实现为图片和文字元素添加透明蒙层
    • 实践:使用jsencrypt配合axios实现非对称加密传输的数据
    • 封装dotenv库实现类似Vite加载环境变量的行为
    • 30行代码实现合并指定目录下的所有文件的内容
    • 马上中秋了,把鼠标指针变为小玉兔
    • Node中require与fs.readFile读取JSON文件的对比
    • 使用免费的七牛云OSS(10G)搭建个人的在线图床
    • 分享封装的一些七牛云OSS操作方法
    • 本地配置SSH免密远程登录服务器
    • 工具方法汇总
    • 腾讯云Serverless实践-Node.js服务部署
    • 腾讯云Serverless实践-静态网站托管
    • 为什么'\x1B'.length === 1?\x与\u知识延伸
    • Vite插件开发纪实:vite-plugin-monitor(上)
    • Vite插件开发纪实:vite-plugin-monitor(中)
    • Vite插件开发纪实:vite-plugin-monitor(下)
    • 解决Vite-React项目中js使用jsx语法报错的问题
    • webpack 项目接入Vite的通用方案介绍
    • webpack 项目接入Vite的通用方案介绍-草稿
    • 优雅的处理挂载window上的函数可能不存在的情况
    • Mac上抓包秒通关羊了个羊

腾讯云Serverless实践-静态网站托管

vuePress-theme-reco 粥里有勺糖    2018 - 2023

腾讯云Serverless实践-静态网站托管

粥里有勺糖 2021-05-19 技术笔记技术教程

# 腾讯云Serverless实践-静态网站托管

本文旨在帮助不懂运维/网络/服务器知识的小白,在不租用云服务器实现Web站点的上线部署

超多图预警!!!

包含使用Github Action实现持续集成的步骤,绑定自定义域名等等

该手把手Serverless实践系列预计会出几篇包含静态站点,云函数,后端服务等等

如有表述不清,内容错误等还请评论区斧正

# 准备工作

  • 注册腾讯云账号 (opens new window)

# 创建云开发环境

进入控制台面板 (opens new window),通常在首页右上角

图片

然后在左上角的云产品列表中找到云开发CloudBase (opens new window)

图片

然后你能看到如下的界面

图片

点击新建,可以看见有很多模板可供选择,咱们这里选择Vue应用,当然你也可以选择其它模板,我们主要是获得其生成的一个cloudbaserc.json文件,后文会详细介绍这个配置文件

图片

填写环境名称,选择按量计费(非常非常便宜),勾上同意,能勾上免费就勾上免费资源

填写完成后点击下一步

图片

点击立即开通

图片

接下来你能在当前页面看到刚刚创建的应用,记住这个环境id 后面会用上

图片

赖心等待几分钟就创建完成了

# 线上访问地址

点击创建完成的卡片

图片

选择左侧菜单中的静态网站托管

图片

这里能看到模板项目部署在线上的生产环境代码与提供的线上域名

例如图中的:http://kerno-photo-0got9tjdb1cb34fe-1256505457.tcloudbaseapp.com/vue/ (opens new window)

# 模板的源代码

所有的模板源代码均在Github:CloudBase Templates (opens new window)

咱们上面的Vue项目模板源码在此处 (opens new window)

在项目源码中我们就可以看到cloudbaserc.json (opens new window)文件

# cloudbaserc.json配置文件示例

配置文件需要自己修改的字段如下:

  • envId:环境id,上文有说到获取的位置
  • region:环境所在地区,上海(ap-shanghai),广州(ap-guangzhou)
  • framework
    • name:应用名称
    • plugins/client/inputs
      • installCommand:安装依赖的指令
      • buildCommand:构建项目指令
      • outputPath:用于部署的本地静态文件目录
      • cloudPath:线上访问的基础路径

在咱们项目的根目录下创建这个cloudbaserc.json文件

# 最简单项目

目录如下

.
├── cloudbaserc.json
└── index.html
1
2
3

这里用到的最简单的cloudbaserc.json如下

{
    "version": "2.0",
    "envId": "kerno-photo-0got9tjdb1cb34fe",
    "region": "ap-shanghai",
    "$schema": "https://framework-1258016615.tcloudbaseapp.com/schema/latest.json",
    "functionRoot": "cloudfunctions",
    "framework": {
      "name": "kerno-photo-web",
      "plugins": {
        "client": {
          "use": "@cloudbase/framework-plugin-website",
          "inputs": {
            "outputPath": "/",
            "cloudPath": "/"
          }
        },
        "auth": {
          "use": "@cloudbase/framework-plugin-auth",
          "inputs": {
            "configs": [
              {
                "platform": "NONLOGIN",
                "status": "ENABLE"
              }
            ]
          }
        }
      }
    }
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 运用了构建工具的项目

推荐的cloudbaserc.json内容如下

{
    "version": "2.0",
    "envId": "kerno-photo-0got9tjdb1cb34fe",// 环境id
    "region": "ap-shanghai",  // 环境所在地区
    "$schema": "https://framework-1258016615.tcloudbaseapp.com/schema/latest.json",
    "functionRoot": "cloudfunctions",
    "framework": {
      "name": "kerno-photo-web",// 应用名称
      "plugins": {
        "client": {
          "use": "@cloudbase/framework-plugin-website",
          "inputs": {
            "installCommand": "yarn install --prefer-offline --no-audit --progress=false", // 安装依赖的指令
            "buildCommand": "npm run build",    // 构建项目指令
            "outputPath": "dist",   // 用于部署的静态文件目录
            "cloudPath": "/",   // 线上的基础路径
            "envVariables": {
              "VUE_APP_ENV_ID": "{{env.ENV_ID}}"
            }
          }
        },
        "auth": {
          "use": "@cloudbase/framework-plugin-auth",
          "inputs": {
            "configs": [
              {
                "platform": "NONLOGIN",
                "status": "ENABLE"
              }
            ]
          }
        }
      }
    }
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 部署上线

# 前置环境

  • Node.js

确保电脑上有Node.js环境,没有可参考菜鸟教程:Node.js (opens new window) 安装

打开你的终端工具查看是否拥有Node环境

node -v
1

图片

# @cloudbase/cli

安装@cloudbase/cli (opens new window)工具

npm install -g @cloudbase/cli
1

验证是否安装完成

tcb -v
1

图片

完整的配置项示例参考$schema (opens new window)

# 部署

例项目目录:

.
├── cloudbaserc.json
└── index.html
1
2
3

在项目跟路径依次执行如下指令:

登录

tcb login
1

部署

tcb framework deploy
1

此时静静等待几秒,出现此图说明部署成功

图片

示例访问地址:https://kerno-photo-0got9tjdb1cb34fe-1256505457.tcloudbaseapp.com/ (opens new window)

可以看到我们的Hello World已经上去了

图片

到此从0-1的创建应用到部署上线的流程都走完了

后续将会补充一些额外的内容,需要有一些相关知识的基础

# 绑定自定义域名

# 申请SSL证书

首先为域名申请SSL证书 (opens new window)

图片

选择免费的

图片

然后下一步填写必要的信息

图片

选择DNS验证

图片

按要求添加一条解析规则

图片

我这里域名是在阿里云上购买的

图片

按要求添加解析

图片

添加完成后,点击查询域名验证状态即可,申请完成后如下图所示

图片

# 绑定域名

在静态网站托管tab 基础配置中添加自定义域名

图片

弹窗中输入刚刚申请证书用的域名

图片

根据要求添加CName

图片

上述添加解析步骤一样

图片

到此为止自定义域名就搞定了

咱访问一下试试:photo.kerno.sugarat.top (opens new window)

# SPA单页应用的额外配置

需要添加一条404的重定向配置,配置地方如下

图片

# 接入Github Action持续集成

# 创建main.yml

根目录下创建.github/workflows/main.yml文件

.github
└── workflows
    └── main.yml
1
2
3

main.yml文件内容如下

# This is a basic workflow to help you get started with Actions

name: prod-CI

# Controls when the action will run. 
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ main ] # push到main分支上时触发
  pull_request:
    types: [ assigned ]
    branches: [ main ] # 合并pr到main分支上时触发

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: ubuntu-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2
      # 配置rsa密钥自动登陆
      - name: Deploy to Tencent CloudBase
        uses: TencentCloudBase/cloudbase-action@v2
        with:
          secretId: ${{secrets.SECRET_ID}}
          secretKey: ${{secrets.SECRET_KEY}}
          envId: ${{secrets.ENV_ID}}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

# 仓库中配置Secrets

在仓库的Settings->Secrets 面板中新建secret

图片

图片

添加如下三个:

  • SECRET_ID:获取地址 (opens new window)或参看下图
  • SECRET_KEY:获取地址 (opens new window)或参看下图
  • ENV_ID:应用的envid

图片

添加完成后如下图所示

图片

# 推送配置文件

接下来只需要将main.yml文件推送到Github上即可

git add .github

git commit -m "chore: 添加main.yml文件"

git push
1
2
3
4
5

# 查看Action进度

此时打开仓库就能看见commit 信息旁边有个点

图片

在Action面板中也能看见任务的执行状态,点击可查看详细进度

图片

执行完成后如下图所示

图片

# 参考资料

  • 文档:云开发 CloudBase (opens new window)
Edit this page (opens new window)
Last Updated: 2022/5/15 12:46:34