zoukankan      html  css  js  c++  java
  • 轻松搭建基于 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 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。

  • 相关阅读:
    HDU3336 Count the string —— KMP next数组
    CodeForces
    51Nod 1627 瞬间移动 —— 组合数学
    51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
    51Nod 1225 余数之和 —— 分区枚举
    51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
    51Nod 机器人走方格 V3 —— 卡特兰数、Lucas定理
    51Nod XOR key —— 区间最大异或值 可持久化字典树
    HDU4825 Xor Sum —— Trie树
    51Nod 1515 明辨是非 —— 并查集 + 启发式合并
  • 原文地址:https://www.cnblogs.com/yunqishequ/p/12505236.html
Copyright © 2011-2022 走看看