FrankenPHP生产环境部署指南:从Docker到服务器配置

FrankenPHP生产环境部署指南:从Docker到服务器配置

frankenphp The modern PHP app server frankenphp 项目地址: https://gitcode.com/gh_mirrors/fr/frankenphp

前言

在现代PHP应用部署中,容器化技术已经成为标准实践。本文将详细介绍如何使用FrankenPHP这一创新的PHP运行时,将你的PHP应用部署到生产环境。我们将从Docker配置开始,逐步讲解服务器准备、域名设置到最终部署的全过程。

一、应用容器化准备

1.1 创建Dockerfile

首先需要在项目根目录创建Dockerfile,这是容器化的基础配置文件:

FROM dunglas/frankenphp

# 设置服务器域名(替换为你的实际域名)
ENV SERVER_NAME=your-domain.com

# 使用PHP生产环境配置
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

# 复制项目文件到容器
COPY . /app/public

对于不同的框架,复制策略可能不同:

  • 普通PHP项目:复制到/public目录
  • Symfony/Laravel项目:需要复制整个项目目录

1.2 配置Docker 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证书存储
      - caddy_config:/config # Caddy配置存储

volumes:
  caddy_data:
  caddy_config:

这个配置实现了:

  • 自动重启保证服务可用性
  • 暴露HTTP/HTTPS标准端口
  • 支持HTTP/3协议
  • 持久化存储证书和配置

二、服务器准备

2.1 服务器选择建议

虽然教程以云服务提供商为例,但任何满足以下条件的Linux服务器均可:

  • 支持Docker和Docker Compose
  • 至少1GB内存(生产环境建议2GB以上)
  • 稳定的网络连接

2.2 服务器初始化步骤

  1. 通过SSH连接服务器:

    ssh root@服务器IP
    
  2. 验证Docker环境:

    docker --version
    docker-compose --version
    
  3. 确保服务器防火墙开放了80和443端口

三、域名与HTTPS配置

3.1 DNS记录设置

必须为服务器IP添加A记录:

your-domain.com.  IN  A  服务器IP

3.2 HTTPS证书自动获取

FrankenPHP内置了以下HTTPS特性:

  • 自动从Let's Encrypt获取证书
  • 自动续期证书
  • 默认启用HTTP/2和HTTP/3

注意:Let's Encrypt不支持裸IP地址,必须配置域名

四、应用部署流程

4.1 代码上传方式

有多种方式可以将代码部署到服务器:

  1. Git直接克隆(推荐有版本控制的项目)

    git clone 你的项目仓库
    
  2. 使用SCP上传(适合简单项目)

    scp -r ./project root@服务器IP:/path
    
  3. CI/CD自动化部署(生产环境推荐)

4.2 启动服务

进入项目目录后执行:

docker compose up -d --wait

这个命令会:

  • 在后台(-d)启动服务
  • 等待服务就绪(--wait)
  • 自动构建镜像(如果需要)

4.3 部署后验证

  1. 检查服务状态:

    docker compose ps
    
  2. 查看日志:

    docker compose logs
    
  3. 访问你的域名验证是否正常工作

五、高级部署场景

5.1 多节点部署

对于高可用需求,可以考虑:

  1. Docker Swarm集群部署

    • 兼容现有compose.yaml
    • 提供基础的服务发现和负载均衡
  2. Kubernetes部署

    • 使用专为FrankenPHP优化的Helm图表
    • 适合大规模生产环境

5.2 性能优化建议

  1. 调整PHP-FPM配置:

    pm.max_children = 50
    pm.start_servers = 5
    
  2. 启用OPcache:

    opcache.enable=1
    opcache.memory_consumption=128
    
  3. 考虑使用Redis等缓存方案

六、常见问题解决

  1. HTTPS证书问题

    • 确认DNS解析已生效
    • 检查服务器80/443端口可访问
    • 查看Caddy日志获取具体错误
  2. 部署缓存问题

    docker compose build --no-cache
    
  3. 文件权限问题

    • 确保项目文件对Docker进程可读
    • 必要时调整volume权限

结语

通过本文的指导,你应该已经掌握了使用FrankenPHP部署PHP应用到生产环境的完整流程。从Docker配置到服务器部署,FrankenPHP提供了开箱即用的现代化PHP运行环境,大大简化了部署复杂度。对于特定框架如Symfony或Laravel,可能需要根据框架特点进行适当调整,但核心原理是相通的。

frankenphp The modern PHP app server frankenphp 项目地址: https://gitcode.com/gh_mirrors/fr/frankenphp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁姣晗Nessia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值