Bref项目本地开发环境搭建指南
bref Serverless PHP on AWS Lambda 项目地址: https://gitcode.com/gh_mirrors/br/bref
前言
Bref是一个将PHP应用部署到无服务器环境的工具,但在实际开发过程中,我们经常需要在本地进行开发和调试。本文将详细介绍如何在本地环境中运行基于Bref的PHP应用,包括简单方式和Docker方式,以及相关的高级配置技巧。
本地开发方式概览
对于基于Bref的PHP应用,主要有两种本地开发方式:
- 简单方式:使用常规PHP开发环境
- Docker方式:使用Bref提供的Docker镜像,更接近生产环境
简单开发方式
对于Web应用(使用FPM运行时),可以直接使用常规PHP开发环境运行:
Laravel项目
- 使用
php artisan serve
启动开发服务器 - 使用Laravel Valet或Laravel Sail进行本地开发
- 命令行工具直接使用
php artisan 命令名
运行
Symfony项目
- 使用
symfony server:start
启动开发服务器 - 命令行工具使用
bin/console 命令名
运行
普通PHP项目
- 可以使用Apache、WAMP等环境
- 或使用PHP内置服务器:
php -S localhost:8000
Docker开发方式(推荐)
为了更接近生产环境,建议使用Bref提供的Docker镜像进行本地开发。
基础配置
创建docker-compose.yml
文件:
version: "3.5"
services:
app:
image: bref/php-81-fpm-dev:2
ports: [ '8000:8000' ]
volumes:
- .:/var/task
environment:
HANDLER: public/index.php
DOCUMENT_ROOT: public
启动命令:
docker-compose up
应用将在http://localhost:8000/
可用。
关键配置说明
- HANDLER环境变量:指定处理HTTP请求的PHP文件,应与
serverless.yml
中的配置一致 - DOCUMENT_ROOT:指定静态资源目录
文件系统权限处理
Lambda环境中/var/task
是只读的,本地开发时有两种处理方式:
-
整个目录可写(简单但不推荐):
volumes: - .:/var/task
-
仅特定目录可写(推荐):
volumes: - .:/var/task:ro - ./storage:/var/task/storage
静态资源处理
通过DOCUMENT_ROOT
指定静态资源目录,例如:
environment:
DOCUMENT_ROOT: public
这样public/assets/style.css
可通过http://localhost:8000/assets/style.css
访问。
注意:生产环境中静态资源需要通过S3等存储服务提供,不能直接通过这种方式访问。
命令行工具使用
在Docker中运行命令行工具:
# Laravel
docker-compose run app php artisan ...
# Symfony
docker-compose run app php bin/console ...
高级调试配置
Xdebug配置
Bref开发容器已预装Xdebug,启用步骤:
-
创建
php/conf.dev.d/php.ini
文件:zend_extension=xdebug.so
-
在浏览器中触发调试会话
MacOS特殊配置
由于Docker for Mac使用虚拟机,需要特殊配置:
zend_extension=xdebug.so
[xdebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 0
xdebug.remote_host = 'host.docker.internal'
Blackfire性能分析
Bref开发容器已预装Blackfire扩展,配置步骤:
-
添加Blackfire服务:
services: blackfire: image: blackfire/blackfire environment: BLACKFIRE_SERVER_ID: server-id BLACKFIRE_SERVER_TOKEN: server-token
-
启用Blackfire扩展:
extension=blackfire blackfire.agent_socket=tcp://blackfire:8707
最佳实践建议
- 开发阶段使用Docker方式,更接近生产环境
- 生产环境静态资源务必使用S3等存储服务
- 文件系统权限尽量模拟Lambda环境,避免开发与生产环境差异
- 性能分析工具只在需要时启用,避免影响开发效率
通过以上配置,开发者可以在本地高效地开发和调试基于Bref的PHP应用,同时保持与生产环境的高度一致性。
bref Serverless PHP on AWS Lambda 项目地址: https://gitcode.com/gh_mirrors/br/bref
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考