zoukankan      html  css  js  c++  java
  • 轻松搭建基于 Serverless 的 ThinkPHP 应用

    函数计算.jpg

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

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

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

    ThinkPHP 是什么?

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

    效果预览

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

    1. ThinkPHP 官方示例:http://13492727-1986114430573743.test.functioncompute.com
    2. ThinkPHP 博客示例:http://13500180-1986114430573743.test.functioncompute.com
    3. ThinkPHP 博客示例管理后台: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 应用可能需要如下几步:

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

    本地测试没问题后,就要进行部署了。部署前,我们需要知道,由于函数计算运行时代码目录本身是不可以修改的,而 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 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。

    如果您在迁移您的应用过程中遇到了问题,欢迎加入我们的 dingding 群 11721331 反馈。

    阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,做最懂云原生开发者的技术圈。”

  • 相关阅读:
    SharePoint缓存配置
    修改默认的个人站点
    生成代码工具
    Ext 布局(layout)
    编程网站
    EXT 4.0 上传文件
    修改Ext grid 单元格
    Ext.tip.Tooltip 提示
    EXT iframe 应用
    EXT 4.0 TreeGrid 使用
  • 原文地址:https://www.cnblogs.com/alisystemsoftware/p/12462972.html
Copyright © 2011-2022 走看看