部署 PHP 项目
Zeabur 除了支持传统的多文件 PHP、以 index.php
为入口的项目,还支持 Laravel、Symfony、ThinkPHP、CodeIgniter 等框架的一键部署。
PHP 环境
Zeabur 默认使用 PHP 8 的最新版本、NGINX + php-fpm 服务器来运行您的代码。
Zeabur 的 PHP 环境内置 Composer、apcu
、bcmath
、gd
、intl
、mysqli
、opcache
、pcntl
、pdo_mysql
、sysvsem
、zip
等 PHP 扩展。如果您的 composer.json
中安装了其他以 ext-
开头的扩展类型定义,Zeabur 也会自动安装对应的扩展。此外,还会默认安装 Node.js、Crontab、cURL、gettext、Git、grep、pkg-config、unzip 等工具。
Zeabur 默认会带入 APP_ENV=prod
和 APP_DEBUG=true
环境变量到您的应用程序中,您可以在 Zeabur 控制台的“环境变量”区域手动覆盖这些变量。
完整的基础镜像配置可以参考 zbpack 的代码仓库。
NPM 支持
如果您的项目有 package.json
,Zeabur 会帮您运行 npm install
安装依赖。
如果您的项目的 package.json
有 build
脚本,Zeabur 会自动帮您运行 npm run build
编译产物。
自定义编译和启动命令
Zeabur 允许您使用环境变量或配置文件自定义 PHP 的编译和启动命令。
“编译命令”适用于需要下载或编译自定义产物(如 CSS、JavaScript 等等)或配置文件的场景。例如,您希望往 /etc
文件夹写入配置文件,可以设置环境变量:
ZBPACK_BUILD_COMMAND=echo 'your-configuration' > /etc/somewhere
或者在 zbpack.json
中加入以下配置:
{
"build_command": "echo 'your-configuration' > /etc/somewhere"
}
您也可以在这里执行其他 npm 的命令:
{
"build_command": "npm run build:dist"
}
编译命令 不会 影响 Zeabur 原本的编译流程,所以您不需要手动在这里重复指定 Zeabur 默认帮您执行的命令。
“启动命令”适用于启动 PHP 服务器时的场景,比如在原有命令基础上加上 php artisan migrate
来创建数据库表。例如,您可以设置环境变量:
ZBPACK_START_COMMAND="php artisan migrate && _startup"
或者在 zbpack.json
中加入以下配置:
{
"start_command": "php artisan migrate && _startup"
}
注意:如果是持续运行的服务,则需要将启动指令放置于 ()
内,并使用 &
连接命令:
ZBPACK_START_COMMAND="(php artisan reverb:start &); _startup"
或者
{
"start_command": "(php artisan reverb:start &); _startup"
}
其中 _startup
是 Zeabur 原本的启动命令(可以在 zbpack 查阅)。如果您有自定义 start_command
,_startup
必须在您的启动命令中执行,否则不会启动 PHP 服务器。
build_command
和 start_command
均会使用 POSIX 兼容的 shell 执行,因此您可以使用 &&
连接多个命令,或者使用 ;
分隔多个命令。
自定义 PHP 版本
Zeabur 默认使用 PHP 8,但您可以使用 composer.json
或 zbpack 的配置来指定 PHP 版本。如果您的项目是 Laravel Sail,Zeabur 也会根据 docker-compose.yml
自动判断。zbpack 配置优先级最高,composer.json
次之,Laravel Sail 最低。
composer.json
在 composer.json
的 require
中设置 php
版本范围:
{
"require": {
"php": "7.4"
}
}
以上例子中,Zeabur 会使用 PHP 7.4 的最新补丁版本运行您的项目。
{
"require": {
"php": "^7.4"
}
}
以上例子中,Zeabur 会使用 PHP 7 的最新次版本运行您的项目。
Laravel Sail
如果您的项目是 Laravel Sail,Zeabur 会自动检测并使用 Laravel Sail 在 docker-compose.yml
中定义的 PHP 版本。
zbpack 配置
如果您没有使用 Laravel Sail 或 Composer,但需要更改 PHP 版本,可以使用 ZBPACK_PHP_VERSION
环境变量:
ZBPACK_PHP_VERSION=8.0
或者在 zbpack.json
中加入以下配置:
{
"php": {
"version": "8.0"
}
}
来自定义 PHP 版本。
自定义 php.ini
配置
使用 Zeabur 的配置文件编辑器,创建一个路径在 /usr/local/etc/php/conf.d
、后缀名为 ini
的配置文件,直接写上您想覆盖的 PHP 配置即可。
例如,如果想将最大上传文件大小设置为 100MB,可以创建一个文件 /usr/local/etc/php/conf.d/upload.ini
,内容如下:
upload_max_filesize = 100M
自定义 NGINX 配置
使用 Zeabur 的配置文件编辑器,创建一个路径为 /etc/nginx/sites-enabled/default
的配置文件,覆盖 Zeabur 默认的 NGINX 配置。创建后会自动带入当前的 NGINX 配置,您可以在此基础上进行修改。
例如,假如您想要禁用 gzip
压缩,可以将模板中的 gzip_static on;
改为 gzip_static off;
。
location / {
try_files $uri $uri/ /index.php$is_args$args;
gzip_static off;
}