新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 程序开发 > 语言 > php

轻松搭建基于 Serverless 的 ThinkPHP 应用

时间:2020-03-09 15:00:15  来源:  作者:

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。

备注: 本文介绍的技巧需要 Fun 版本大于等于 3.6.3。

轻松搭建基于 Serverless 的 Think<a href=http://www.solves.com.cn/it/cxkf/yy/php/ target=_blank class=infotextkey>php</a> 应用

 

ThinkPHP%20是什么?

ThinkPHP%20是一个免费开源的,快速、简单的面向对象的轻量级%20PHP%20开发框架,是为了敏捷%20WEB%20应用开发和简化企业应用开发而诞生的。ThinkPHP%20从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简代码的同时,更注重易用性。遵循%20Apache2%20开源许可协议发布,意味着你可以免费使用%20ThinkPHP,甚至允许把你基于%20ThinkPHP%20开发的应用开源或商业产品发布/销售。

效果预览

本文涉及到的两个应用示例部署后的链接,点击预览效果:

  • ThinkPHP%20官方示例:http://13492727-1986114430573743.test.functioncompute.com
  • ThinkPHP%20博客示例:http://13500180-1986114430573743.test.functioncompute.com
  • ThinkPHP%20博客示例管理后台:http://13500180-1986114430573743.test.functioncompute.com/admin

环境准备

首先按照%20Fun%20的安装文档里介绍的方法将%20Fun%20安装到本机。

PS:%20本文介绍的方法,不需要安装%20Docker,仅仅安装%20Fun%20即可,最简单的方式就是直接下载可执行的二进制文件。

安装完成后,可以执行%20fun%20--version%20检查%20Fun%20是否安装成功。

第一个示例:快速初始化并部署一个%20ThinkPHP%20示例应用

初始化一个%20thinkphp%20示例:

composer%20create-project%20topthink/think%20tp

将该示例在本地运行测试:

php%20think%20run

可以在本地看到效果:

 

传统的开发方式是,本地开发完成后,就要进行部署工作了,通常我们部署一个 PHP 应用可能需要如下几步:

  1. 购买一台物理机器,比如 ECS
  2. 在物理机器上绑定公网 ip、安装 php、Nginx、php-fpm
  3. 配置 nginx、php-fpm 以及上传应用到该机器上
  4. 运行测试

其中最复杂的就要数第 2、3 步了,因为可能不同的环境的配置方法还不一样,会有比较多的坑。我们演示下如何将应用部署到函数计算上。

fun deploy

仅需要一个命令,Fun 会自动进入部署流程,在该流程中,用户仅仅需要按下一系列的回车即可。流程细节如下:

  1. Fun 检测到这不是一个 Fun 项目,会提示协助创建(直接回车或者输入 y 即可)
  2. Fun 项目自动创建成功,提示是否进行部署?可以直接回车,或者输入 y 进行确认
  3. 然后 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 run

ThinkPHP 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 可以直接看到效果。

轻松搭建基于 Serverless 的 ThinkPHP 应用

 

本地测试没问题后,就要进行部署了。部署前,我们需要知道,由于函数计算运行时代码目录本身是不可以修改的,而 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 打开该应用的管理后台:

轻松搭建基于 Serverless 的 ThinkPHP 应用

 

总结

本文主要介绍了如何将 ThinkPHP 应用部署到函数计算。相比较与传统的部署方法,不仅没有更复杂,还省略了购买机器、安装配置 Nginx、安装配置 php-fpm 等步骤。可以实现,将传统的 ThinkPHP 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。



Tags:ThinkPHP   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
ThinkPHP5的环境要求如下:PHP >= 5.4.0PDO PHP ExtensionMBstring PHP ExtensionCURL PHP Extension严格来说,ThinkPHP无需安装过程,这里所说的安装其实就是把ThinkPHP框架放入...【详细内容】
2020-03-17   ThinkPHP  点击:(5)  评论:(0)  加入收藏
thinkphp6环境要求php >= 7.1.0,而且必须通过composer方式安装和更新,当然,上一篇教程我们已经安装好了,而且默认安装的php版本是php7.3.4,符合环境要求。那么什么是composer呢?co...【详细内容】
2020-03-15   ThinkPHP  点击:(2)  评论:(0)  加入收藏
首先介绍下在本文出现的几个比较重要的概念:函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计...【详细内容】
2020-03-09   ThinkPHP  点击:(1)  评论:(0)  加入收藏
ThinkPHP6正式发布已有一小段时间,按照官方文档实操了一遍。中间也遇到些小问题,在网上找解决方案花费了一些时间。本次分享整理了ThinkPHP6从头开始部署的详细操作步骤,希...【详细内容】
2020-01-06   ThinkPHP  点击:(115)  评论:(0)  加入收藏
Thinkphp是目前最主流的php轻量型框架之一,作为一个功能完备的php框架,它里面内置了许多的配置,通过修改这些系统的设置可以很方便的对thinkphp的一些内容进行修改,本文总结了一...【详细内容】
2019-11-27   ThinkPHP  点击:(30)  评论:(0)  加入收藏
一 、前言ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的轻量级PHP开发框架,具有免费开源、快速、简单且面向对象等特点。 在ThinkPHP的5.*版本中存在安全隐患,...【详细内容】
2019-11-15   ThinkPHP  点击:(52)  评论:(0)  加入收藏
作为一名Web工作者,我想PHP对大家来说是家常便饭。作为一名“懒”程序员,并不想做大量枯燥无味的工作。于是乎,框架这词语就融入了我的世界。web比较流行的服务器语言这篇文章...【详细内容】
2019-11-07   ThinkPHP  点击:(18)  评论:(0)  加入收藏
一、漏洞介绍2019年1月11日,ThinkPHP团队发布了一个补丁更新,修复了一处由于不安全的动态函数调用导致的远程代码执行漏洞。该漏洞危害程度非常高,默认条件下即可执行远程代码...【详细内容】
2019-11-01   ThinkPHP  点击:(59)  评论:(0)  加入收藏
php中Session默认都是用文件存储的,thinkphp是提供了redis和Memcache的存储类,但是没有提供Mysql的储存类,现在修改为用数据库的方式储存,直接上代码:<?php/** * session 存mysql...【详细内容】
2019-10-24   ThinkPHP  点击:(98)  评论:(0)  加入收藏
thinkphp5多语言进行切换的步骤:第一步,在配置文件中开启多语言配置。 第二步,创建多语言目录。 相关推荐:《ThinkPHP教程》第三步,编写语言包。 视图代码: 控制器代码: 效果如...【详细内容】
2019-10-14   ThinkPHP  点击:(96)  评论:(0)  加入收藏
SQL注入简介SQL 注入漏洞(SQL Injection)是 Web 开发中最常见的一种安全漏洞。可以用它来从数据库获取敏感信息,或者利用数据库的特性执行添加用户,导出文件等一系列恶意操作,甚...【详细内容】
2019-10-14   ThinkPHP  点击:(44)  评论:(0)  加入收藏
DophinPHP(海豚PHP)是一个基于ThinkPHP5.1.34 LTS开发的一套开源PHP快速开发框架,DophinPHP秉承极简、极速、极致的开发理念,为开发集成了基于数据-角色的权限管理机制,集成多种...【详细内容】
2019-10-11   ThinkPHP  点击:(51)  评论:(0)  加入收藏
(1)、 插入数据并且返回当前插入的自增ID $db = Db::name(&#39;user&#39;); $id = $db->insertGetId([&#39;password&#39;=>&#39;123&#39;,&#39;username&#39;=>&#39;888&#...【详细内容】
2019-10-10   ThinkPHP  点击:(102)  评论:(0)  加入收藏
ThinkAdmin V5 是一个基于 ThinkPHP 5.1 开发的后台管理系统。我们致力于二次开发底层框架,提供完整的组件及API,基于此框架可以快速开发应用。另外项目安装及二次开发可以参...【详细内容】
2019-10-09   ThinkPHP  点击:(75)  评论:(0)  加入收藏
ThinkPHP的宗旨是简化开发、提高效率、易于扩展,其在对数据库的支持方面已经包括MySQL、MSSQL、Sqlite、PgSQL、 Oracle,以及PDO的支持。ThinkPHP有着丰富的文档和示例,框架的...【详细内容】
2019-08-26   ThinkPHP  点击:(189)  评论:(0)  加入收藏
首先要下载thinkphp最新版本3.2.2版本,下载地址http://www.thinkphp.cn/donate/download/id/502.html。建立一个项目,将压缩包解压后的所有文件放到项目中,然后配置apach服务...【详细内容】
2019-08-07   ThinkPHP  点击:(55)  评论:(0)  加入收藏
两者共同点都是实例化模型的,而两者不同点呢?一起来看一下:$User = D(&#39;User&#39;);括号中的参数User,对应的模型类文件的 HomeModelUserModel.class.php(我们假设当前模块为H...【详细内容】
2019-07-03   ThinkPHP  点击:(86)  评论:(0)  加入收藏
需要摒弃的3.X旧思想URL的变动首先对3.X的不严谨给开发者们带来的不正确的引导表示歉意,在5.0版本正式废除类似/id/1方式 可以通过&lsquo;get&rsquo;获取到&lsquo;id&rsquo;...【详细内容】
2019-07-03   ThinkPHP  点击:(102)  评论:(0)  加入收藏
TP框架:ThinkPHP简单、快速,基于MVC和面向对象,易用性较高,是一款简洁实用的轻量级框架。Laravel框架:Lavavel一直秉承着优雅的原则,很好的支持了composer,实现了更丰富的扩展,社区...【详细内容】
2019-06-18   ThinkPHP  点击:(159)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条