部署 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 控制台的「環境變數」區塊中手動覆蓋這些變數。
完整的基礎 Image 設定可以參考 zbpack 的程式碼儲存庫。
NPM 支援
如果您的專案有 package.json
,Zeabur 會幫您執行 npm install
安裝依賴。
如果您的專案的 package.json
有 build
script,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
來建立資料庫的 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 設定,你可以在此基礎上進行修改。
舉例來說,假如你想要停用 gzip
壓縮,可以將範本的 gzip_static on;
改成 gzip_static off;
。
location / {
try_files $uri $uri/ /index.php$is_args$args;
gzip_static off;
}