FrankenPHP项目生产环境部署指南
frankenphp The modern PHP app server 项目地址: https://gitcode.com/gh_mirrors/fr/frankenphp
前言
在现代Web开发中,PHP应用的部署方式已经发生了巨大变化。本文将详细介绍如何使用FrankenPHP项目将PHP应用部署到生产环境,涵盖从Docker镜像构建到服务器配置的完整流程。
准备工作
1. 创建Dockerfile
首先需要在项目根目录创建Dockerfile,这是构建容器的基础:
FROM dunglas/frankenphp
# 设置服务器域名(替换为你的实际域名)
ENV SERVER_NAME=your-domain.com
# 如需禁用HTTPS,可使用以下配置:
# ENV SERVER_NAME=:80
# 启用PHP生产环境配置
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# 复制项目文件到容器
COPY . /app/public
对于Symfony或Laravel框架项目,复制命令需要调整:
COPY . /app
2. 配置Compose文件
创建compose.yaml
文件定义服务:
services:
php:
image: dunglas/frankenphp
restart: always
ports:
- "80:80" # HTTP端口
- "443:443" # HTTPS端口
- "443:443/udp" # HTTP/3支持
volumes:
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:
服务器准备
1. 服务器选择
推荐使用支持Docker的Linux服务器,如Ubuntu。对于初学者,云服务商提供的预装Docker的镜像是不错的选择。
2. 服务器配置要点
- 确保已安装Docker和Docker Compose
- 配置SSH密钥访问
- 设置防火墙规则开放80/443端口
域名配置
1. DNS记录设置
在域名注册商处添加A记录,指向服务器IP:
your-domain.com. IN A your.server.ip
2. HTTPS证书说明
FrankenPHP默认使用Let's Encrypt自动管理TLS证书,但需要注意:
- Let's Encrypt不支持直接IP地址
- 必须配置有效域名才能自动获取证书
部署流程
1. 上传项目代码
可通过多种方式将代码部署到服务器:
# 使用Git克隆
git clone your-repo-url
2. 启动服务
进入项目目录执行:
docker compose up -d --wait
此命令将:
- 拉取FrankenPHP镜像
- 启动容器
- 自动配置HTTPS
- 保持服务运行
3. 验证部署
访问https://your-domain.com
确认应用正常运行。
高级部署方案
1. 多节点部署
对于高可用需求,可考虑:
- Docker Swarm:兼容现有Compose配置
- Kubernetes:使用专为API Platform设计的Helm Chart
2. 性能优化建议
- 调整PHP-FPM进程数
- 配置OPcache
- 启用HTTP/3提升性能
- 设置适当的资源限制
常见问题处理
- 缓存问题:构建时添加
--no-cache
避免旧缓存影响 - 端口冲突:检查服务器上80/443端口是否被占用
- 证书问题:确认域名解析已生效,服务器时间正确
结语
通过FrankenPHP项目,PHP应用的部署变得简单高效。本文涵盖了从基础部署到生产环境优化的完整流程,帮助开发者快速将应用上线。根据实际需求,可以进一步探索负载均衡、自动扩展等高级特性。
frankenphp The modern PHP app server 项目地址: https://gitcode.com/gh_mirrors/fr/frankenphp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考