函數計算(Function Compute): 函數計算是一個事件驅動的服務,透過函數計算,使用者無需管理伺服器等運行情況,只需編寫程式碼並上傳。函數計算準備計算資源,並以彈性伸縮的方式運行使用者程式碼,而使用者只需根據實際程式碼運行所消耗的資源進行付費。函數計算更多資訊 參考。
Fun: Fun 是用來支援 Serverless 應用程式部署的工具,可協助您便利地管理函式運算、API 閘道、日誌服務等資源。它透過一個資源設定檔(template.yml),協助您進行開發、建置、部署作業。 Fun 的更多文件 參考。
備註: 本文介紹的技巧需要 Fun 版本大於等於 3.6.3。
推薦教學:《thinkphp教學- 》
- ThinkPHP 是什麼?
ThinkPHP 官方範例:http://13492727- 1986114430573743.test.functioncompute.com
ThinkPHP 部落格範例:http://13500180-1986114430573743.test.functioncompute.com
14430573743.test.functioncompute.com
ThinkPHP 13743.test.functioncompute.com
ThinkPHP 13743.5031350313821313213031321303132130313213032138213303137303132138233032138213303213821303130313231373003722133037221333722333337部分。 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 即可)
备注:临时域名仅仅用作演示以及开发,是有时效的,如果用作生产,请绑定已经备案的域名。
第二个示例:快速迁移一个已有的 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 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。