>  기사  >  PHP 프레임워크  >  서버리스 기반 TP 프레임워크 애플리케이션을 구축하는 방법

서버리스 기반 TP 프레임워크 애플리케이션을 구축하는 방법

藏色散人
藏色散人앞으로
2021-08-05 16:13:451873검색

먼저 이 문서에 나오는 몇 가지 중요한 개념을 소개하겠습니다.

Function Compute: Function Compute는 이벤트 중심 서비스입니다. 서버 및 기타 운영 조건을 관리할 필요가 없으며 코드를 작성하고 업로드하기만 하면 됩니다. Function Compute는 컴퓨팅 리소스를 준비하고 탄력적으로 확장 가능한 방식으로 사용자 코드를 실행하며, 사용자는 실제 코드 실행에 소비된 리소스에 대해서만 비용을 지불합니다. 함수 계산에 대한 자세한 내용은 을 참조하십시오.
Fun: Fun은 서버리스 애플리케이션 배포를 지원하는 데 사용되는 도구로, 함수 컴퓨팅, API 게이트웨이, 로그 서비스 등의 리소스를 쉽게 관리하는 데 도움이 됩니다. 리소스 구성 파일(template.yml)을 통해 작업을 개발, 구축 및 배포하는 데 도움이 됩니다. Fun에 대한 추가 문서 참조.

참고: 이 문서에 소개된 기술을 사용하려면 3.6.3 이상의 Fun 버전이 필요합니다.

추천 튜토리얼: "thinkphp 튜토리얼"

ThinkPHP란 무엇인가요?

ThinkPHP는 민첩한 웹 애플리케이션 개발과 단순화된 엔터프라이즈 애플리케이션 개발을 위해 탄생한 빠르고 간단한 무료 오픈 소스 객체 지향 경량 PHP 개발 프레임워크입니다. 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을 설치하는 설치 문서 방법.

PS: 이 글에서 소개하는 방법은 Docker를 설치할 필요가 없으며, 가장 간단한 방법은 실행 가능한 바이너리 파일을 직접 다운로드하는 것입니다.

설치가 완료된 후 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단계입니다. 서로 다를 수 있기 때문입니다. 환경 구성 방법이 다르며 더 많은 함정이 있습니다. Function Compute에 애플리케이션을 배포하는 방법을 보여줍니다.

fun deploy

명령은 하나만 필요하며 Fun은 자동으로 배포 프로세스에 들어갑니다. 이 과정에서 사용자는 Enter 키만 누르면 됩니다. 프로세스 세부 사항은 다음과 같습니다.

  1. Fun은 이것이 Fun 프로젝트가 아님을 감지하고 이를 생성하는 데 도움을 요청하는 메시지를 표시합니다(Enter 또는 y를 누르기만 하면 됩니다).
  2. Fun 프로젝트가 자동으로 성공적으로 생성됩니다. 배포할지 여부를 묻는 메시지가 표시됩니다. Enter를 직접 누르거나 y를 입력하여 확인할 수 있습니다
  3. Fun이 애플리케이션을 온라인으로 직접 배포합니다

배포가 완료된 후 성공적인 배포 로그인 Function Calculation에 따라 확인할 수 있습니다. 임시 도메인 이름 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 应用在本地开发完成后,一键部署到远端直接用于生产,并拥有了弹性伸缩、按量付费、免运维等特性。

위 내용은 서버리스 기반 TP 프레임워크 애플리케이션을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제