• 轻松搭建基于 Serverless 的 ThinkPHP 应用


    ThinkPHP 是什么?

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

    效果预览

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

    1. ThinkPHP 官方示例:https://fc-thinkphp-demo.functioncompute.com
    2. ThinkPHP 博客示例:https://fc-thinkphp-blog.functioncompute.com
    3. ThinkPHP 博客示例管理后台:https://fc-thinkphp-blog.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 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。

  • 相关阅读:
    学习软件工程的个人总结
    结对编程——黄金点游戏
    读取程序字符,行数,单词的个人程序
    c#代码分析
    Visual Studio2013的安装过程及练习测试
    小学三年级出题程序
    超级课程表的个人评价
    对软件工程的个人困惑
    个人附加作业
    个人最终总结
  • 原文地址:https://www.cnblogs.com/yunqishequ/p/12505236.html
Copyright © 2020-2023  润新知