部署 PHP 项目
Zeabur 不仅支持传统的多文件 PHP 项目,以 index.php
作为入口的项目,还支持 Laravel、ThinkPHP、CodeIgniter 等框架的一键部署。
NPM 支持
如果你的项目根目录有 package.json
,Zeabur 会自动帮您安装 Node.js 和 NPM;如果你的 package.json
有 build
脚本,Zeabur 会自动帮你运行 npm install && npm run build
编译产物。
如果需要更改编译的命令(如改运行 npm run build:dist
),请参阅〈自定义编译与启动命令〉。
自定义编译和启动命令
Zeabur 允许你使用环境变量或配置文件自定义 PHP 的编译和启动命令。
“编译命令”适合用在需要下载或编译自定义产物(如 CSS、JavaScript 等等),或者是写入配置文件的情境。举例来说,你想往 /etc
文件夹写入配置文件,你可以设置环境变量
ZBPACK_BUILD_COMMAND=echo 'your-configuration' > /etc/somewhere
或者是在 zbpack.json
中加入以下设置:
{
"build_command": "echo 'your-configuration' > /etc/somewhere"
}
你亦可以在这里运行 npm 的命令。注意 Zeabur 只会在 项目根目录 有 package.json
的情况下安装 Node.js 和 NPM,如果你的项目没有 package.json
,则不会有 npm
命令可用:
{
"build_command": "npm install && npm run build:dist"
}
“启动命令”则适合用在启动 PHP 服务器时运行的情境,如在原有的命令基础上加上 php artisan migrate
来建立数据库的 tables。举例来说,你可以设置环境变量
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 的最新 patch 版本来运行你的项目。
{
"require": {
"php": "^7.4"
}
}
以上例来说,Zeabur 会使用 PHP 7 的最新 minor 版本来运行你的项目。
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 配置,您可以从 zbpack 的 NGINX 配置文件仓库 下载 Zeabur 当前使用的 NGINX 配置文件,并在此基础上进行修改。例如,如果您想禁用 gzip
压缩,可以将模板中的 gzip_static on;
修改为 gzip_static off;
。
server {
# 参见 https://github.com/zeabur/zbpack/blob/main/internal/php/nginx-conf/default.conf
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static off; // 禁用 gzip 压缩
}
}