跳到主要内容

PHP 规范

php 规范旨为你提供 php 服务如何部署到腾讯云托管的部署规范,该规范主要包含项目目录结构规范、开发环境规范、依赖管理规范等,以满足接入要求。

php 项目的示例可参考创建一个Laravel应用

项目规范

项目目录下必须包含以下文件:

.
|-- Dockerfile
|-- app
| |-- Http
| |-- Models
| `-- Providers
|-- nginx
| |-- default.conf
| `-- supervisord.conf
|-- public
| |-- favicon.ico
| |-- index.php
| `-- robots.txt

Dockerfile: 是一个文本文件,包含了一系列指令,用于定义如何构建一个 Docker 镜像。通过编写 Dockerfile,可以自动化地创建包含应用程序及其运行环境的镜像,实现环境一致性和快速部署。

composer.json: 依赖管理配置文件。

composer.lock: 依赖管理配置文件。

nginx/default.conf: nginx 访问 php cgi 配置文件。

nginx/supervisord.conf: linux 进程管理配置文件,用来同时管理 php-fpm`` 和 nginx``` 进程。

app/: Laravel 源码目录。

public/: Laravel public 目录。

nginx/default.conf

server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/html/public;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}

location ~ /\.ht {
deny all;
}
}

nginx/supervisord.conf

[supervisord]
nodaemon=true

[program:php-fpm]
command=/usr/local/sbin/php-fpm

[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"

Dockerfile

# 1. 构建阶段,安装依赖,composer install
FROM php:8.2-fpm-alpine AS build

# 安装系统依赖和 PHP 扩展
RUN apk add --no-cache \
bash \
git \
unzip \
libzip-dev \
oniguruma-dev \
curl \
&& docker-php-ext-install pdo_mysql mbstring zip bcmath

# 安装 composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

# 复制项目代码
COPY . .

RUN composer install --no-dev --optimize-autoloader --no-interaction


# 生成优化的自动加载文件
RUN composer dump-autoload -o

# 2. 运行阶段,PHP-FPM 镜像
FROM php:8.2-fpm-alpine

# 安装 PHP 扩展
RUN apk add --no-cache libzip oniguruma-dev libpng libjpeg-turbo libwebp freetype \
&& apk add --no-cache --virtual .build-deps $PHPIZE_DEPS libzip-dev oniguruma-dev \
&& docker-php-ext-configure zip \
&& docker-php-ext-install pdo_mysql mbstring zip bcmath gd \
&& apk del .build-deps

WORKDIR /var/www/html

# 复制 build 阶段的代码和依赖
COPY --from=build /var/www/html /var/www/html

# 设置权限(根据需要调整)
RUN chown -R www-data:www-data /var/www/html/storage /var/www/html/bootstrap/cache

# 3. 安装并配置 supervisord 以同时启动 php-fpm 和 nginx
RUN apk add --no-cache supervisor nginx

# 复制 nginx 配置
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

# 复制 supervisord 配置
COPY nginx/supervisord.conf /etc/supervisord.conf

# 暴露端口
EXPOSE 80

# 启动 supervisord,管理 php-fpm 和 nginx
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]

配置规范

配置一般放到项目目录中, 或者使用环境变量配置。

端口

服务部署时,在云托管上指定服务端口即可,这里是 80。