一文读懂云函数 SCF 如何进行依赖安装(下)

2021-07-22 11:10:43 浏览数 (1)

在《一文读懂云函数 SCF 如何进行依赖安装》一文中为大家介绍了对 Node.js 和 Python 运行时的依赖安装方法,本文将继续为大家讲解 PHP、Java、Go 的依赖安装方法。

03.

PHP 运行时

1. 安装自定义库

通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。

  • 依赖库同代码一起打包上传 通过依赖管理工具,例如 composer,在本地安装依赖后同函数代码一同打包上传。
  • 打包时函数入口文件需要在 zip 包的根目录下。如果打包整个文件夹并上传 zip 包,则会因解压后无法在根目录找到入口文件而导致函数创建失败。

本文以 PHP7 安装 requests 库为例:

1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。

2. 在 test-package 下创建 conposer.json 并指定需要安装的依赖库及版本。

代码语言:javascript复制
{"require": { "requests": ">=1.0"  }}

3. 执行以下命令,在该目录下安装 requests 依赖库。

代码语言:javascript复制
cd test-packagecomposer install

4. 在该目录下创建函数入口文件 index.php 并在代码中引用 requests 库。

代码语言:javascript复制
<?phprequire 'vendor/autoload.php';function main_handler($event, $context) {    return "hello world";}?>

5. 将函数代码及依赖库一同压缩为 zip 包,在云函数控制台中上传打包的 zip 包并创建一个新函数。操作步骤如下:

i. 登录云函数控制台,单击左侧导航栏的「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。

iii. 在「新建函数」页面,填写函数基本信息,单击「完成」即可创建函数。如下图所示:

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「Php7」。
  • 提交方法:选择「本地上传zip包」。

2. 安装自定义扩展

在函数入口文件的同级目录下创建扩展文件夹 php_extension 并添加自定义扩展文件 .so 和配置文件 php.ini,同函数代码一起打包上传。

本文以 PHP7 安装自定义扩展 swoole.so 为例。

1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。

2. 执行以下命令在 test-package 创建文件夹 php_extension,并将扩展对应的配置文件 php.ini 和扩展文件 .so 放在该目录下,目录结构如下:

  • 扩展文件夹 php_extension 和配置文件 php.ini 为固定命名,如使用其他命名可能导致扩展加载失败。
  • 扩展文件夹 php_extension 和配置文件 php.ini 以及自定义扩展 .so 文件需要具备可执行权限。
代码语言:javascript复制
|____php_extension| |____php.ini| |____swoole.so|____index.php

3. 自定义扩展支持从代码中或层中加载,如果扩展以层的形式上传,请确保上传到层的 zip 解压后的目录格式如下:

代码语言:javascript复制
|____php_extension| |____swoole.so

4. php.ini 写法:

  • 扩展在代码目录下:
代码语言:javascript复制
extension=/var/user/php_extension/swoole.so
  • 扩展在层目录下:
代码语言:javascript复制
extension=/opt/php_extension/swoole.so

5. 在该目录下创建函数入口文件 index.php,可通过 extension_loaded( ) 函数检查扩展是否加载成功,加载成功返回 true,否则返回 false

代码语言:javascript复制
<?phpfunction main_handler($event, $context) {    var_dump(extension_loaded('swoole'));    return "hello world";}?>

6. 将函数代码及依赖库一同压缩为 zip 包,在云函数控制台中上传打包的 zip 包并创建一个新函数。操作步骤如下:

i. 登录云函数控制台,单击左侧导航栏的「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。

iii. 在「新建函数」页面,填写函数基本信息,单击「完成」即可创建函数。如下图所示:

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「Php7」。
  • 提交方法:选择「本地上传zip包」。

04.

Java 运行时

通过依赖管理工具,例如 maven,在本地安装依赖后同函数代码一同打包上传。

1. 在本地终端中执行 mkdir test-package 命令,创建一个目录用于存放函数代码和依赖库。

2. 在该目录下创建 pom.xml,并在 pom.xml 中配置依赖信息。

3. 在项目文件夹根目录下执行 mvn package 命令,编译输出如下:

代码语言:javascript复制
[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building java-example 1.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO]...[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.785 s[INFO] Finished at: 2017-08-25T10:53:54 08:00[INFO] Final Memory: 17M/214M[INFO] ------------------------------------------------------------------------

4. 将函数代码及依赖库一同压缩为 jar 包,在云函数控制台中上传打包的 jar 包并创建一个新函数。操作步骤如下:

i. 登录云函数控制台,单击左侧导航栏的「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

ii. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。

iii. 在「新建函数」页面,填写函数基本信息,点击「完成」即可创建函数,如下图所示:

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「Java8」。
  • 提交方法:选择「本地上传zip包」。

05.

Go 运行时

使用方法:打包时上传最终的二进制文件。

Go 运行时的依赖库同代码一起编译后得到二进制文件,在云函数控制台中上传打包的二进制文件并创建一个新函数。操作步骤如下:

1. 登录云函数控制台,单击左侧导航栏的「函数服务」。

  • 云函数控制台:https://console.cloud.tencent.com/scf

2. 在主界面上方选择期望创建函数的地域,并单击「新建」,进入函数创建流程。

3. 在「新建函数」页面,填写函数基本信息,单击「完成」即可创建函数,如下图所示:

  • 创建方式:选择使用「自定义创建」来新建函数。
  • 运行环境:选择「Go1」。
  • 提交方法:选择「本地上传zip包」。


推荐阅读

One More Thing


欢迎进入千人 QQ 群 (871445853) 交流 Serverless!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」,轻松体验 Serverless 应用部署。

0 人点赞