您好,欢迎访问一九零五行业门户网

如何建立一个基于Serverless的TP框架应用

搭建基于serverless的thinkphp 应用
首先介绍下在本文出现的几个比较重要的概念:
函数计算(function compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
fun: fun 是一个用于支持 serverless 应用部署的工具,能帮助您便捷地管理函数计算、api 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。fun 的更多文档 参考。备注: 本文介绍的技巧需要 fun 版本大于等于 3.6.3。
推荐教程:《thinkphp教程》
thinkphp 是什么?thinkphp 是一个免费开源的,快速、简单的面向对象的轻量级 php 开发框架,是为了敏捷 web 应用开发和简化企业应用开发而诞生的。thinkphp 从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循 apache2 开源许可协议发布,意味着你可以免费使用 thinkphp,甚至允许把你基于 thinkphp 开发的应用开源或商业产品发布/销售。
效果预览本文涉及到的两个应用示例部署后的链接,点击预览效果:
thinkphp 官方示例:http://13492727-1986114430573743.test.functioncompute.comthinkphp 博客示例:http://13500180-1986114430573743.test.functioncompute.comthinkphp 博客示例管理后台:http://13500180-1986114430573743.test.functioncompute.com/admin环境准备首先按照 fun 的安装文档里介绍的方法将 fun 安装到本机。
ps: 本文介绍的方法,不需要安装 docker,仅仅安装 fun 即可,最简单的方式就是直接下载可执行的二进制文件。
安装完成后,可以执行 fun --version 检查 fun 是否安装成功。
第一个示例:快速初始化并部署一个 thinkphp 示例应用初始化一个 thinkphp 示例:
composer create-project topthink/think tp
将该示例在本地运行测试:
php think run
可以在本地看到效果:
传统的开发方式是,本地开发完成后,就要进行部署工作了,通常我们部署一个 php 应用可能需要如下几步:
购买一台物理机器,比如 ecs在物理机器上绑定公网 ip、安装 php、nginx、php-fpm配置 nginx、php-fpm 以及上传应用到该机器上运行测试其中最复杂的就要数第 2、3 步了,因为可能不同的环境的配置方法还不一样,会有比较多的坑。我们演示下如何将应用部署到函数计算上。
fun deploy

仅需要一个命令,fun 会自动进入部署流程,在该流程中,用户仅仅需要按下一系列的回车即可。流程细节如下:
fun 检测到这不是一个 fun 项目,会提示协助创建(直接回车或者输入 y 即可)
fun 项目自动创建成功,提示是否进行部署?可以直接回车,或者输入 y 进行确认
然后 fun 会直接将应用部署到线上了
部署完成后,我们可以根据部署成功的日志看到,函数计算为我们生成了临时域名 13492727-1986114430573743.test.functioncompute.com,我们可以通过这个临时域名直接访问我们刚刚部署的应用。
备注:临时域名仅仅用作演示以及开发,是有时效的,如果用作生产,请绑定已经备案的域名。
第二个示例:快速迁移一个已有的 thinkphp 应用这里我们拿一个开源的 thinkphp 博客做示例:https://github.com/wolf-leo/wolf-blog
首先我们需要将 blog 克隆下来:
git clone https://github.com/wolf-leo/wolf-blog.git
使用 composer 安装依赖:
composer install
在要使用的 mysql 数据库上新建一个名为 blog_test 的 database。然后编辑 config/database.php 文件,修改其中的数据库地址、用户名、密码信息。
// ... ...return [    // ... ...    // 服务器地址    'hostname' => '192.168.17.104',    // 数据库名 测试数据库名称 不用修改 否则默认安装会出错    'database' => 'blog_test',    // 用户名  需要修改的地方    'username' => 'root',    // 密码     需要修改的地方    'password' => 'root',    // ... ...];
修改完成后,就可以本地启动查看效果了:
$ php think runthinkphp development server is started on <http://127.0.0.1:8000/>you can exit with `ctrl-c`document root is: /examples/php/wolf-blog/public
然后打开 http://localhost:8000 可以直接看到效果。
本地测试没问题后,就要进行部署了。部署前,我们需要知道,由于函数计算运行时代码目录本身是不可以修改的,而 thinkphp 会在代码目录下的 runtime 这个目录写一些缓存文件,我们需要将这个缓存文件放到 /tmp 下面。在我们的例子中就是将 thinkphp/library/think/app.php 这个文件的第 174 行做如下修改:
- $this->runtimepath = $this->rootpath . 'runtime' . directory_separator;+ $this->runtimepath = directory_separator . 'tmp' . directory_separator;
修改完成后可以直接使用以下命令进行部署:
fun deploy

经历与第一个示例一样的步骤后,我们可以得到一个可以访问的临时域名进行测试:13500180-1986114430573743.test.functioncompute.com。打开该临时域名,可以预览到与本地运行一样的效果。
还可以访问 13500180-1986114430573743.test.functioncompute.com/admin 打开该应用的管理后台:
总结本文主要介绍了如何将 thinkphp 应用部署到函数计算。相比较与传统的部署方法,不仅没有更复杂,还省略了购买机器、安装配置 nginx、安装配置 php-fpm 等步骤。可以实现,将传统的 thinkphp 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。
以上就是如何建立一个基于serverless的tp框架应用的详细内容。
其它类似信息

推荐信息