tencent cloud

文档反馈

启动文件说明

最后更新时间:2024-03-21 18:35:11
    Web 函数基于函数内置的标准语言镜像环境中,您需要创建一个可执行文件 scf_bootstrap 以启动 Web Server,并将该文件和您的代码文件一起打包部署,完成 Web 函数创建。实际处理请求时,您的 Web Server 通过监听指定的9000端口接收 HTTP 请求,并转发给后端服务完成逻辑处理并返回给用户。

    启动文件作用

    scf_bootstrap 为 Web Server 的启动文件,保证您的 Web 服务正常启动并监听请求。除此之外,您还可以根据需要在 scf_bootstrap 中自定义实现更多个性化操作:
    设定运行时依赖库的路径及环境变量等。
    加载自定义语言及版本依赖的库文件及扩展程序等,如仍有依赖文件需要实时拉取,可下载至 /tmp 目录。
    解析函数文件,并执行函数调用前所需的全局操作或初始化程序(如开发工具包客户端 HTTP CLIENT 等初始化、数据库连接池创建等),便于调用阶段复用。
    启动安全、监控等插件。
    注意:
    云函数 SCF 仅支持读取 scf_bootstrap 作为启动文件名称,其它名称将无法正常启动服务。
    在腾讯云标准环境下,仅 /tmp 目录可读可写,输出文件时请注意选择 /tmp 路径,否则会导致服务因缺少写权限而异常退出。

    使用前提

    需具有可执行权限,请确保您的 scf_bootstrap 文件具备777或755权限,否则会因为权限不足而无法执行。
    能够在 SCF 系统环境(CentOS 7.6)中运行。
    如果启动命令文件是 shell 脚本,第一行需有 #!/bin/bash
    启动命令必须为绝对路径 /var/lang/${specific_lang}${version}/bin/${specific_lang},否则无法正常调用,详情请参见 标准语言环境绝对路径
    建议使用监听地址为 0.0.0.0,不可以使用内部回环地址 127.0.0.1
    结尾必须以 LF 回车结束。

    创建方式

    本地打包上传
    控制台快速创建
    您可以本地编写您的 scf_bootstrap 启动文件,确保文件权限满足要求后,和项目代码一起打包部署在 Web 函数上。
    您可以在 Serverless 控制台 中创建 Web 函数。 创建函数 流程中,在高级配置 > 启动命令中编辑您的启动文件,云函数 SCF 为常用 Web 框架提供了通用启用模板,您也可以根据实际情况进行修改。如下图所示:
    
    函数创建完成后,控制台将自动把您的代码和 scf_bootstrap 一起打包部署。
    注意:
    控制台配置仅在上传的代码里未检测到 scf_bootstrap 时生效,如果您的项目里有 scf_bootstrap 文件,系统会以项目里的 scf_bootstrap 为准进行部署。
    部署完成后,您可以在代码编辑器中查看 scf_bootstrap 文件并进行编辑。如下图所示:
    
    

    常见错误定位

    执行文件 scf_bootstrap 作为容器启动命令,必须保证容器可以正常启动运行,执行代码逻辑,因此,请确保您的启动命令写法正确。如遇到 405 错误码信息,通常为执行文件无法正常运行导致,请确保您的启动文件写法正确。

    标准语言环境绝对路径

    语言版本
    绝对路径
    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
    Node.js 10.15
    /var/lang/node10/bin/node
    Python 3.7
    /var/lang/python37/bin/python3
    Python 3.6
    /var/lang/python3/bin/python3
    Python 2.7
    /var/lang/python2/bin/python
    PHP 8.0
    /var/lang/php80/bin/php
    PHP 7.4
    /var/lang/php74/bin/php
    PHP 7.2
    /var/lang/php7/bin/php
    PHP 5.6
    /var/lang/php5/bin/php
    JAVA 11
    /var/lang/java11/bin/java
    JAVA 8
    /var/lang/java8/bin/java

    常见 Web Server 启动命令模板

    Nodejs
    Python
    PHP
    #!/bin/bash
    export PORT=9000
    /var/lang/node12/bin/node app.js # 改为您自己的启动函数名
    #!/bin/bash
    export PORT=9000
    /var/lang/python3/bin/python3 app.py # 改为您自己的启动文件名
    #!/bin/bash
    /var/lang/php7/bin/php -c /var/runtime/php7 -S 0.0.0.0:9000 hello.php # 改为您自己的入口函数名
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持