详情页标题前

腾讯云Serverless应用中心通过命令行完成框架部署-同尘科技

详情页1

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

前提条件

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

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

相关推荐

  • 阿里云RDS数据库为什么RDS MySQL不支持MyISAM引擎?-云淘科技

    RDS MySQL不支持MyISAM引擎的主要原因有如下几个: MyISAM对数据完整性的保护存在缺陷,且这些缺陷会导致数据库数据的损坏甚至丢失。另外,这些缺陷很多是设计问题,无法在不破坏兼容性的前提下修复。 MyISAM在出现数据损害情况下,很多都需要手工修复,无法适用于产品服务的方式。 对于RDS的存储而言,MyISAM对于I/O的操作不是最优化的方案,…

    阿里云数据库 2023年12月9日
  • 腾讯云轻量应用服务器关于增加境外部分实例套餐购买时长折扣公告云小二

    腾讯云轻量应用服务器 TencentCloud Lighthouse 于2021年4月16日起,增加中国港澳台地区和其他国家地域部分实例套餐购买时长折扣。 调整详情 购买实例时可享受时长折扣如下所示: 1 – 5个月 6 – 11个月 12个月及以上 无 88折 85折 以下中国港澳台地区和其他国家地域的实例套餐可享受购买时长折扣:L…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储文档审核

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

    腾讯云 2023年12月9日
  • 腾讯云负载均衡配置 TCP 监听器

    您可以在负载均衡实例上添加一个 TCP 监听器转发来自客户端的 TCP 协议请求。TCP 协议适用于对可靠性和数据准确性要求高、对传输速度要求较低的场景,如文件传输、收发邮件、远程登录等。TCP 监听器绑定的后端服务器可直接获取客户端的真实 IP。 前提条件 您需要 创建负载均衡实例。 操作步骤 步骤一:配置监听器 1. 登录 负载均衡控制台,在左侧导航栏单…

    腾讯云 2023年12月9日
  • 腾讯云对象存储文档预览接入体验工具

    功能概述 COS 文档预览接入体验工具是腾讯云对象存储(Cloud Object Storage,COS)为您提供的 Web 工具,您可以在工具页面配置文档预览参数、调用高级 API 方法,体验文档预览效果。同时该工具可以根据相应配置项生成代码,助力您快速接入 COS 文档预览。说明COS 文档预览接入体验工具用于文档转 HTML 预览接入调试。 目前仅支持…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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