详情页标题前

腾讯云云函数(SCF)通过命令行完成框架部署-云淘科技

详情页1

除了控制台之外,您也可以通过命令行快速部署 Web 框架,本篇文档将具体为您介绍,如何通过 Serverless Cloud Framework 的 HTTP 组件,完成 Web 应用的本地部署。

前提条件

已安装 Serverless Cloud Framework, 已开通服务并完成 Serverless Cloud Framework 的 权限配置。

支持框架

支持框架 相关文档
Express 快速部署 Express 框架
Koa 快速部署 Koa 框架
Egg 快速部署 Egg 框架
Next.js 快速部署 Nextjs 框架
Nuxt.js 快速部署 Nuxtjs 框架
Nest.js 快速部署 Nestjs 框架
Flask 快速部署 Flask 框架
Django 快速部署 Django 框架
Laravel 快速部署 Laravel 框架

操作步骤

1. 本地开发应用
根据您实际业务场景,本地完成开发,详情可参考 支持框架 开发文档。2. 配置 yml 文件
在项目根目录下,新建 serverless.yml 文件,按照以下示例进行配置编写。全量配置请参考 配置文档。

# serverless.ymlcomponent: http # (必选) 组件名称name: webDemo # 必选) 组件实例名称.
inputs: region: ap-guangzhou # 云函数所在区域 src: # 部署src下的文件代码,并打包成zip上传到bucket上 src: ./ # 本地需要打包的文件目录 exclude: # 被排除的文件或目录 - .env - 'node_modules/**' faas: # 函数配置相关 framework: express #选择框架,此处以 express 为例 runtime: Nodejs12.16 name: webDemo # 云函数名称 timeout: 10 # 超时时间,单位秒 memorySize: 512 # 内存大小,默认 512 MB layers: - name: layerName # layer名称 version: 1 # 版本
apigw: # # http 组件会默认帮忙创建一个 API 网关服务 isDisabled: false # 是否禁用自动创建 API 网关功能 id: service-xxx # api网关服务ID,不填则自动新建网关 name: serverless # api网关服务ID api: # 创建的 API 相关配置 cors: true # 允许跨域 timeout: 15 # API 超时时间 name: apiName # API 名称 qualifier: $DEFAULT # API 关联的版本 protocols: - http - https environment: test

3. 创建完成后,在根目录下执行 scf deploy 进行部署,组件会根据选择的框架类型,自动生成 scf_bootstrap 启动文件进行部署。注意由于启动文件逻辑与用户业务逻辑强关联,默认生成的启动文件可能导致框架无法正常启动,建议您根据实际业务需求,手动配置启动文件,详情参考各框架的部署指引文档。

示例 scf_bootstrap

express:

#!/usr/bin/env bash
/var/lang/node12/bin/node app.js

koa

#!/usr/bin/env bash
/var/lang/node12/bin/node app.js

egg

#!/var/lang/node12/bin/node
/** * docker 中 node 路径:/var/lang/node12/bin/node * 由于 serverless 函数只有 /tmp 读写权限,所以在启动时需要修改两个环境变量 * NODE_LOG_DIR 是为了改写 egg-scripts 默认 node 写入路径(~/logs)-> /tmp * EGG_APP_CONFIG 是为了修改 egg 应有的默认当前目录 -> /tmp */
process.env.EGG_SERVER_ENV = 'prod';process.env.NODE_ENV = 'production';process.env.NODE_LOG_DIR = '/tmp';process.env.EGG_APP_CONFIG = '{"rundir":"/tmp","logger":{"dir":"/tmp"}}';
const { Application } = require('egg');
// 如果通过层部署 node_modules 就需要修改 eggPathObject.defineProperty(Application.prototype, Symbol.for('egg#eggPath'), { value: '/opt',});
const app = new Application({ mode: 'single', env: 'prod',});
app.listen(9000, '0.0.0.0', () => { console.log('Server start on http://0.0.0.0:9000');});

nextjs

#!/var/lang/node12/bin/node
/*# HTTP 直通函数由于是基于 docker 镜像运行,所以必须监听地址为 0.0.0.0,并且端口为 9000*/const { nextStart } = require('next/dist/cli/next-start');nextStart(['--port', '9000', '--hostname', '0.0.0.0']);

nuxtjs

#!/var/lang/node12/bin/node
/*# HTTP 直通函数由于是基于 docker 镜像运行,所以必须监听地址为 0.0.0.0,并且端口为 9000*/require('@nuxt/cli') .run(['start', '--port', '9000', '--hostname', '0.0.0.0']) .catch((error) => { require('consola').fatal(error); require('exit')(2); });

nestjs

#!/bin/bash
# SERVERLESS=1 /var/lang/node12/bin/npm run start -- -e /var/lang/node12/bin/nodeSERVERLESS=1 /var/lang/node12/bin/node ./dist/main.js

flask

#!/bin/bash
# HTTP 直通函数由于是基于 docker 镜像运行,所以必须监听地址为 0.0.0.0,并且端口为 9000/var/lang/python3/bin/python3 app.py

django

#!/bin/bash
# HTTP 直通函数由于是基于 docker 镜像运行,所以必须监听地址为 0.0.0.0,并且端口为 9000/var/lang/python3/bin/python3 manage.py runserver 0.0.0.0:9000

laravel

#!/bin/bash
######################################## 注入 serverless 环境下的环境变量######################################## 注入 SERVERLESS 标识export SERVERLESS=1# 修改模板编译缓存路径,云函数只有 /tmp 目录可读写export VIEW_COMPILED_PATH=/tmp/storage/framework/views# 修改 session 以内存方式(数组类型)存储export SESSION_DRIVER=array# 日志输出到 stderrexport LOG_CHANNEL=stderr# 修改应用存储路径export APP_STORAGE=/tmp/storage
# 初始化模板缓存目录mkdir -p /tmp/storage/framework/views
# HTTP 直通函数由于是基于 docker 镜像运行,所以必须监听地址为 0.0.0.0,并且端口为 9000# 云端可执行文件路径 /var/lang/php7/bin/php/var/lang/php7/bin/php artisan serve --host 0.0.0.0 --port 9000



官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/149717.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 在阿里函数计算里通过api对接的http触发器 也会在强制添加字段吗?-云小二-阿里云

    在阿里函数计算里通过api对接的http触发器 也会在response header中强制添加content-disposition: attachment字段吗? 以下为热心网友提供的参考意见 从安全角度考虑,使用函数计算默认的aliyuncs.com域名,服务端会在Response Headers中强制添加content-disposition: att…

    阿里云 2023年12月13日
  • 腾讯云对象存储盲水印

    简介 本文档提供关于盲水印相关的 API 概览以及 SDK 示例代码。 API 操作描述 盲水印 对本地图片添加或提取盲水印并上传至存储桶 添加盲水印 功能说明 盲水印支持在上传时添加以及下载时添加。 请求示例1: 上传时添加盲水印 opt := &cos.ObjectPutOptions{ nil, &cos.ObjectPutHeader…

    腾讯云 2023年12月9日
  • 阿里云日志服务SLS消费-计量计费日志-云淘科技

    使用云服务最大好处是按量付费,无需预留资源,因此各云产品都有计量计费需求。本文介绍一种基于日志服务按量计费方案,该方案每天处理千亿级计量日志,被众多云产品使用。 计量日志生成计费结果过程 计量日志记录了您所涉及计费的项目,后端计费模块根据计费项和规则进行运算,产生最后账单。例如如下原始访问日志记录了项目(Project)使用情况: microtime:145…

    2023年12月10日
  • 腾讯云云函数(SCF)使用 Serverless Cloud Framework 创建函数-云淘科技

    操作场景 本文介绍如何通过 Serverless Cloud Framework 提供的云函数 SCF 组件快速创建与部署一个云函数项目。 前提条件 已安装 Serverless Cloud Framework,详情请参见 安装 Serverless Cloud Framework。账号开通 Serverless 相关权限,详情请参见 账号和权限配置。 操作…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云RDS数据库RDS MySQL的单表尺寸限制-云淘科技

    单表的有效最大表尺寸通常受限于操作系统的文件尺寸限制,而不是受MySQL内部机制的限制。 由于存在部分元数据的开销,RDS MySQL单表的最大尺寸为略小于2 TB。 说明 建议控制单表数据量在如下范围以保证良好的性能。 表中记录数在2000万条以内。 表的总大小在10 GB以内。 如问题还未解决,请联系售后技术支持。 内容没看懂? 不太想学习?想快速解决?…

    阿里云数据库 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。