如何把 ThinkPHP 5 的项目迁移到阿里云函数计算来应对流量洪峰?
点击上方图片了解活动详情!
为了帮助更多开发者们客观了解并使用阿里云函数计算(FC),阿里云开发者社区携手云原生应用平台 Serverless 团队发布 “Serverless 函数计算征集令”,7月31日前发布阿里云函数计算 FC 评测文章,即有机会获得千元好礼 + 千元函数计算资源包!
立即参加:
https://developer.aliyun.com/topic/serverless2022
哈喽各位开发者,阿 Ser 又来安利宝藏文章啦!今天推荐的是笔友 “wxf2305” 带来的阿里云函数计算 FC 测评文章;让我们一起跟着这位乘风者博主学习:如何把 ThinkPHP 5 的项目迁移到阿里云函数计算 FC 来应对流量洪峰吧!
为什么要迁移到阿里云函数
部署到阿里云函数计算 FC,还能减少运行环境搭建的成本。之前的模式需要在 ecs 安装 nginx,然后安装 php,以及安装 php 的驱动程序 redis 等。
看了下阿里云函数计算 FC 官方文档,目前 custom runtime Debian 9 内置 php7.4 并且看了下内置的 php 的扩展整好也支持到了我整好需要的 redis。
不仅省下了买服务器钱!而且还不用安装 php 环境了,更惊喜的是,每个月还有免费的算力额度。
迁移原因总结下:
成本降低了很多;
免去了环境部署;
自动扩容,天生应对高并发。
改造旧项目配适函数计算
这里还有一点要注意,我的项目不是前后端分离的,鉴权还是穿透的 session 和 cookie 模式。如果 session 是保留在服务端的文件的话也会存在上面的问题,建议存储的 redis 里面,我的项目本省就是存到 redis 里面的,所以这块不需要改动,如果你的项目存在这样的问题那就需要改进下了。
阿里云函数计算 FC 和云 msyql 、云 redis 通讯的时候一定要采用 vpc 内网互通的原则,减少链路传输的开销以及链路劫持风险。
增加 s.yml 以及启动 shell 脚本
edition: 1.0.0name: compoent-testaccess: 'default'services:cn-hangzhou-test1002-func-3i3c0f95:component: devsapp/fcprops:region: cn-hangzhouservice:logConfig:enableRequestMetrics: trueenableInstanceMetrics: truelogBeginRule: DefaultRegexproject: aliyun-fc-cn-hangzhou-ae3ef8b8-db4a-5b7a-a040-7012789ad20flogstore: function-logrole: acs:ram::1621341641365186:role/AliyunFcDefaultRoleinternetAccess: truename: test1002function:customRuntimeConfig:command:- bashargs:- '-c'- 'chmod 777 /code/start.sh && /code/start.sh'handler: index.handlerinstanceType: e1runtime: customtimeout: 5instanceConcurrency: 20memorySize: 512caPort: 9000environmentVariables: {}internetAccess: truename: func-3i3c0f95asyncConfiguration: {}codeUri: ./test1002/func-3i3c0f95triggers:- name: defaultTriggerdescription: ''type: httpqualifier: LATESTconfig:methods:- GET- POST- PUT- DELETEauthType: anonymous

codeUri: ./test1002/func-3i3c0f95这个指定的是我的项目代码的位置,会把这个目录下面的代码拷贝到 debain系统的 /code目录下面。customRuntimeConfig:command:- bashargs:- '-c'- 'chmod 777 /code/start.sh && /code/start.sh'

#!/usr/bin/env bashcd /code/tp5/publicphp -S 0.0.0.0:9000 router.php
这里我觉得我还是要说下这个启动脚本,先 cd 到 public 目录,ThinkPHP 5 的入口在 public下面这个和项目框架有关系。然后就是这个启动脚本,上面这是ThinkPHP 5 特有的写法。
其他项就不详细说了,大概看看应该能看懂。
使用客户端工具发布

绑定自己的域名

https://fcnext.console.aliyun.com/cn-hangzhou/domains/create

谈下自己的感受
戳下方,立即查看原文!
