跳到主要内容

启动文件说明

在 HTTP 云函数中,scf_bootstrap 是一个必需的启动文件,作为 Web Server 的启动入口。它负责启动您的 Web 服务、配置运行环境、加载依赖并确保服务正常监听请求。

启动文件的作用

scf_bootstrap 文件在云函数实例启动时自动执行,主要承担以下职责:

职责说明
启动 Web 服务确保您的 Web 服务正常启动并监听请求(默认端口为 9000
环境配置设定运行时依赖库的路径、环境变量等
依赖加载加载自定义语言、版本依赖的库文件及扩展程序
如需实时拉取依赖,建议下载至 /tmp 目录
全局初始化执行函数调用前所需的全局操作
(如 HTTP Client 初始化、数据库连接池创建等),便于在调用阶段复用
插件加载启动安全、监控等插件

使用前提

为了确保启动文件能被正确执行,必须满足以下条件:

要求说明
文件名固定必须命名为 scf_bootstrap不支持其他名称
可执行权限文件必须具备可执行权限(建议 777755
系统环境需能在 SCF 系统环境(CentOS 7.6)中运行
Shebang 声明如果是 Shell 脚本,第一行必须包含 #!/bin/bash
绝对路径启动命令必须使用绝对路径(见下文"标准语言环境绝对路径")
监听地址建议使用 0.0.0.0不可使用内部回环地址 127.0.0.1
文件格式文件结尾必须以 LF 换行符结束(不能是 CRLF)
写权限限制在腾讯云标准环境下,仅 /tmp 目录可读写,输出文件时请注意路径

⚠️ 重要提示:在 Linux/macOS 系统中,使用 chmod +x scf_bootstrapchmod 777 scf_bootstrap 命令设置可执行权限。

标准语言环境绝对路径

在编写启动命令时,必须使用语言对应的绝对路径。以下是常见版本路径参考:

语言版本绝对路径
Node.js 18.15/var/lang/node18/bin/node
Node.js 16.13/var/lang/node16/bin/node
Node.js 14.18/var/lang/node14/bin/node
Node.js 12.16/var/lang/node12/bin/node
Python 3.10/var/lang/python310/bin/python3.10
Python 3.9/var/lang/python39/bin/python3.9
Python 3.7/var/lang/python37/bin/python3.7
Python 3.6/var/lang/python3/bin/python3.6
PHP 8.0/var/lang/php80/bin/php
PHP 7.4/var/lang/php74/bin/php
PHP 7.2/var/lang/php7/bin/php
Java 11/var/lang/java11/bin/java
Java 8/var/lang/java8/bin/java

启动命令模板

Functions Framework(推荐)

#!/bin/bash
node node_modules/@cloudbase/functions-framework/bin/tcb-ff.js --port=9000 --logDirname=/tmp/logs --interceptOutput=false --extendedContextKey=X-Cloudbase-Context

参数说明

参数说明默认值
--port函数监听端口9000
--logDirname日志存储目录/tmp/logs
--interceptOutput是否拦截标准输出false
--extendedContextKey扩展上下文请求头键名X-Cloudbase-Context

💡 提示:需要在 package.json 中安装 @cloudbase/functions-framework 依赖。

Express 框架

#!/bin/bash
export PORT=9000
/var/lang/node18/bin/node app.js

📝 说明:请将 app.js 修改为您的实际启动文件名。

Next.js 框架

#!/bin/bash
export PORT=9000
/var/lang/node18/bin/node node_modules/next/dist/bin/next start

相关文档