基于 SCFCLI 快速搭建二维码生成工具-云服务器玩法在线实验

[复制链接]
查看: 445|回复: 0

6

主题

6

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2020-4-15 16:35:49 | 显示全部楼层 |阅读模式
实验内容
Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署,甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。简单来说,Serverless 即更加轻量的云原生环境。

免费在线实验地址:点击进入
实验资源:云服务器,没有云服务器的朋友推荐1折抢购:69元/年的阿里云服务器、或者99元/年的腾讯云服务器

软件环境:
Ubuntu 16.04.1 LTS 64 位

一、什么是 Serverless ?

Serverless 概述
Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署,甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速地开发软件。简单来说,Serverless 即更加轻量的云原生环境。

关于 SCF 与 SCFCLI
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。更多详情

CF CLI 是腾讯云云函数(Serverless Cloud Function,SCF)产品的命令行工具。通过 scf 命令行工具,您可以方便的实现函数打包、部署、本地调试,也可以方便的生成云函数的项目并基于 demo 项目进一步的开发。更多详情

二、安装与配置SCFCLI

安装pip
首先安装pip,在最新的Ubuntu系统中,默认集成了Python3,所以此处,安装对应的pip即可:
  1. sudo apt install python3-pip -y
复制代码
安装完成之后,可以通过下面的命令查看版本:
  1. pip3 --version
复制代码
返回结果如下:
  1. pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
复制代码
接下来通过pip3安装SCFCLI:
  1. sudo pip3 install scf
复制代码
安装完成之后,可以使用scf -v查看版本信息,返回结果如下:
  1. ubuntu@VM-16-9-ubuntu:~$ scf -v
  2. [o] Version: 0.2.3
复制代码
至此,我们完成了SCFCLI的安装。

配置SCFCLI
在腾讯云后台,找到访问管理,之后选择访问密钥,可以查看用户的个人密钥,也可以访问链接: https://console.cloud.tencent.com/cam/capi

查看密钥信息,示例密钥如下(该密钥不可直接使用,请重新获取):
  1. APPID: 1256773322
  2. SecretId: AKID1aaaaaDUbw33RbcS7mKrOl1q0kK
  3. SecretKey: cCoJncN0d22dfdf2jGvcAYlXWRI5kFZj5O
复制代码
拿到密钥后,我们可以输入指令:
  1. scf configure set
复制代码
然后按照提示输入信息:
  1. TencentCloud appid(None): 1256773370
  2. TencentCloud region(None): ap-guangzhou
  3. TencentCloud secret-id(********************************): AKID1aaaaaDUbwR9RbcS7mKrOl1q0kK
  4. TencentCloud secret-key(****************************): cCoJncN0ddfdfdf2jGvcAYlXWRI5kFZj5O
  5. Show the command information without color(cur:False). (y/n): y
  6. Deploy SCF function by COS, it will be faster(cur:False).  (y/n): y
复制代码
至此,我们完成了SCFCLI的基本配置。

三、创建并部署函数
创建函数
利用SCFCLI工具,通过如下命令可创建一个名为programerDay的PHP7项目
  1. scf init --name programerDay --runtime PHP7
复制代码
看到以下内容表示创建成功:
  1. ubuntu@VM-16-9-ubuntu:~$ scf init --name programerDay --runtime PHP7
  2.       _____  ______ ______ ______ __     ____
  3.      / ___/ / ____// ____// ____// /    /  _/
  4.      __  / /    / /_   / /    / /     / /  
  5.     ___/ // /___ / __/  / /___ / /___ _/ /   
  6.    /____/ ____//_/     ____//_____//___/
  7. [+] Initializing project...
  8. [>] Template: /usr/local/lib/python3.6/dist-packages/tcfcli/cmds/init/templates/tcf-demo-php
  9. [>] Output-Dir: .
  10. [>] Project-Name: programerDay
  11. [>] Type: Event
  12. [>] Runtime: php7
  13. [*] Project initialization is complete
  14. [*] You could 'cd programerDay', and start this project.
复制代码
编辑项目
创建成功之后,我们可以根据提示,进入到项目中
  1. cd programerDay
复制代码
之后我们可以通过vim index.php或者右侧编辑器对页面进行编辑,编写自己的代码,但是由于我们的Demo文件过于庞大,所以此处直接下载即可:
  1. wget https://others-1256773370.cos.ap-chengdu.myqcloud.com/index.php -O index.php
  2. wget https://others-1256773370.cos.ap-chengdu.myqcloud.com/phpqrcode.php -O phpqrcode.php
复制代码
下载好这三个资源之后,我们可以对Yaml文件进行编辑:

打开 template.yaml 将其中的Events部分和API网关部分的注释删掉,具体注释部分参考如下示例:

示例代码:/home/ubuntu/programerDay/template.yaml
  1. Resources:
  2.   default:
  3.     Type: TencentCloud::Serverless::Namespace
  4.     programerDay:
  5.       Type: TencentCloud::Serverless::Function
  6.       Properties:
  7.         CodeUri: ./
  8.         Type: Event
  9.         Description: This is a template function
  10.         Role: QCS_SCFExcuteRole
  11.         Environment:
  12.           Variables:
  13.             ENV_FIRST: env1
  14.             ENV_SECOND: env2
  15.         Handler: index.main_handler
  16.         MemorySize: 128
  17.         Runtime: Php7
  18.         Timeout: 3
  19.         #VpcConfig:
  20.         #    VpcId: 'vpc-qdqc5k2p'
  21.         #    SubnetId: 'subnet-pad6l61i'
  22.         Events:
  23.         #    timer:
  24.         #        Type: Timer
  25.         #        Properties:
  26.         #            CronExpression: '*/5 * * * *'
  27.         #            Enable: True
  28.         #    cli-appid.cos.ap-beijing.myqcloud.com: # full bucket name
  29.         #        Type: COS
  30.         #        Properties:
  31.         #            Bucket: cli-appid.cos.ap-beijing.myqcloud.com
  32.         #            Filter:
  33.         #                Prefix: filterdir/
  34.         #                Suffix: .jpg
  35.         #            Events: cos:ObjectCreated:*
  36.         #            Enable: True
  37.         #    topic:            # topic name
  38.         #        Type: CMQ
  39.         #        Properties:
  40.         #            Name: qname
  41.             hello_world_apigw:  # ${FunctionName} + '_apigw'
  42.                 Type: APIGW
  43.                 Properties:
  44.                     StageName: release
  45.                     ServiceId:
  46.                     HttpMethod: ANY
  47.                     IntegratedResponse: TRUE

  48. Globals:
  49.   Function:
  50.     Timeout: 10
复制代码
部署函数
完成之后,保存退出。可通过如下命令进行函数部署
  1. scf deploy
复制代码
部署成功之后的提示如下:

示例代码:提示信息
  1. ubuntu@VM-16-9-ubuntu:~/programerDay$ scf deploy
  2. [*] By default, this time will be uploaded packages to COS-Bucket.
  3. [*] Region: ap-guangzhou, COS-Bucket: scf-deploy-ap-guangzhou-1256773370
  4. [*] If you don't want to upload packages to COS-Bucket by default, you can use the close command: scf configure set --using-cos N
  5. [>] Checking ap-guangzhou COS-Bucket: scf-deploy-ap-guangzhou-1256773370.
  6. [>] default - programerDay: Package name: default-programerDay-latest.zip, package size: 63.413 kb
  7. [o] default - programerDay: Upload function zip file /default-programerDay-latest-2019-10-22-23-47-43.zip success.
  8. [o] default - programerDay: Deploy function success
  9. [o] default - programerDay: Deploy default programerDay trigger hello_world_apigw success
  10. [>] Namespace: default
  11.      Package result:
  12.        Success: 1
  13.          programerDay
  14.        Faild: 0
  15.      Function result:
  16.        Success: 1
  17.          programerDay
  18.        Faild: 0
  19.      Trigger result:
  20.        programerDay:
  21.          hello_world_apigw: success
  22. [*] Deployment is complete and can be triggered by scf remote invoke
  23. [*] For example: scf remote invoke -r ap-guangzhou -ns default -n programerDay
  24. [+] ap-guangzhou - default - programerDay:
  25.      Name: programerDay
  26.      Version: $LATEST
  27.      Status: Active
  28.      FunctionId: lam-2i4jj5pk
  29.      Region: ap-guangzhou
  30.      Namespace: default
  31.      Runtime: Php7
  32.      Trigger Information:
  33.       > APIGW - programerDay_apigw:
  34.            ModTime: 2019-10-22 23:47:52
  35.            Type: apigw
  36.            TriggerDesc:
  37.              api:
  38.                apiId: api-cjfc9tc2
  39.                authRequired: FALSE
  40.                isIntegratedResponse: FALSE
  41.                requestConfig:
  42.                  method: ANY
  43.              release:
  44.                environmentName: release
  45.              service:
  46.                serviceId: service-qokh6e3y
  47.                serviceName: SCF_API_SERVICE
  48.                subDomain: https://service-qokh6e3y-1256773370.gz.apigw.tencentcs.com/release/programerDay
  49.            TriggerName: programerDay_apigw
  50.            AddTime: 2019-10-22 23:47:52
  51.            Enable: 1
  52.            CustomArgument:
复制代码
此时完成函数部署即已完成。

验证结果
打开部署之后,即返回给我们一个 subDomain 值:
  1. https://service-qokh6e3y-1256773370.gz.apigw.tencentcs.com/release/programerDay
复制代码
在网页中,可以看到输入框,我们输入:程序员日快乐

点击"生成二维码"按钮就可以看到二维码生成,此时亲爱的你,拿出手机微信扫一扫,就可以扫描二维码,获取程序员的专属快乐。

另外,另外,另外,在女朋友过生日的时候,可以用这个生成祝女朋友生日快乐的的二维码,一定会很浪漫哦,这是程序员专属的浪漫。


腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )