详情页标题前

腾讯云Serverless HTTP 服务通过命令行完成框架部署

详情页1

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

前提条件

已开通服务并完成 Serverless 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/148910.html

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

相关推荐

  • 阿里云RDS数据库数据迁移方案概览-云淘科技

    RDS提供了多种数据迁移方案,可满足不同上云或迁云的业务需求,使您可以在不影响业务的情况下将数据在其他数据库与阿里云云数据库RDS之间平滑迁移。 使用场景 相关操作 将自建数据库迁移到云数据库 使用DTS将自建PostgreSQL迁移到RDS PostgreSQL 使用pg_dump和pg_restore将自建PostgreSQL迁移到RDS Postgre…

    阿里云数据库 2023年12月9日
  • 腾讯云Serverless HTTP 服务快速部署 Nextjs 框架

    操作场景 本文将为您指导如何通过 Web Function,将您的本地 Next.js SSR 项目快速部署到云端。说明本文档主要介绍控制台部署方案,您也可以通过命令行完成部署,详情请参见 通过命令行完成框架部署。 前提条件 在使用腾讯云云函数服务之前,您需要 注册腾讯云账号 并完成 实名认证。 操作步骤 模板部署:一键部署 Next.js 项目 1. 登录…

    2023年12月9日
  • 腾讯云对象存储音频审核

    简介 内容审核功能是由 数据万象(Cloud Infinite,CI)提供的,数据万象将处理能力与 COS SDK 完全结合,您可以直接按照本篇文档指引进行使用。说明使用内容审核服务需拥有数据万象使用权限:主账号请 单击此处 进行角色授权。子账号请参见 授权子账号接入数据万象服务 文档。本文档提供关于音频审核的 API 概览和 SDK 示例代码。注意 COS…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云Serverless应用中心快速部署 Nextjs 框架-同尘科技

    应用中心框架部署方案已经全新升级,您可以通过 SCF Web Function,快速部署您的 Next.js 业务上云。注意应用控制台部署与函数直接部署有什么区别?通过应用部署或函数部署,均可以基于 Web 函数,快速部署常见 Web 框架。如果您只关注代码逻辑开发,无需额外资源创建,可以通过 Serverless 控制台,完成快速部署。如果除了代码部署外,…

    2023年12月9日
  • 腾讯云对象存储跨域访问

    简介 本文档提供关于跨域访问的 API 概览以及 SDK 示例代码。 API 操作名 操作描述 PUT Bucket cors 设置跨域配置 设置存储桶的跨域名访问权限 GET Bucket cors 查询跨域配置 查询存储桶的跨域名访问配置信息 DELETE Bucket cors 删除跨域配置 删除存储桶的跨域名访问配置信息 设置跨域配置 注意1. 如果…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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