PHP 项目部署
本篇文档介绍如何在 Rainbond 平台上通过源代码部署 PHP 项目。
Rainbond 使用 Cloud Native Buildpacks (CNB) 构建 PHP 项目,自动识别源码、解析 composer.json 中的 PHP 版本约束、安装依赖并生成容器镜像。
项目识别
Rainbond 通过以下规则识别 PHP 项目:
composer.json:源码根目录存在此文件,识别为 PHP 项目
支持的项目类型
Rainbond 当前不会对 PHP 框架做单独分流,而是统一按通用 PHP Web 项目处理。
| 类型 | 常见项目 | 说明 |
|---|---|---|
| 通用 Composer Web 项目 | Laravel、Symfony、ThinkPHP、Yii | 通常需要将 Web 根目录设置为 public |
| CMS / 原生 PHP 项目 | WordPress、Discuz!、自研 PHP 站点 | 可直接使用项目根目录或自定义 Web 根目录 |
| 简单入口项目 | 仅包含 index.php 的 PHP 应用 | 没有 composer.json 也会按 PHP 项目处理 |
构建参数
在组件的 构建源 页面或构建环境变量中,可以配置以下常用参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
| PHP 版本 | PHP 运行时版本,优先读取 composer.json 中的 require.php | 8.3 |
| Web Server | 当前源码部署页面默认使用 Nginx | nginx |
| Composer 安装参数 | 追加到 composer install 的 参数,例如 --no-dev --optimize-autoloader | 空 |
| Web 根目录 | 指定 PHP Web 根目录,例如 public | 空 |
| 启动方式 | 默认或自定义 | 默认 |
支持的 PHP 版本
Rainbond 当前代码中为 PHP CNB 构建预置了以下版本:
8.18.28.3
其中平台默认版本为 8.3。
启动命令
- APCu (
apcu; provides an apc extension for compatibility with legacy software) - Blackfire (
blackfire) - Cassandra (
cassandra) - ev (
ev) - event (
event) - ImageMagick (
imagick) - memcached (
memcached; built against a version of libmemcached with SASL support) - Mongo (
mongo) - MongoDB (
mongodb) - New Relic (
newrelic; will automatically be enabled when the New Relic Add-On is detected during a build) - OAuth (
oauth) - Phalcon (
phalcon) - pq (
pq) - rdkafka (
rdkafka) - PHPRedis (
redis)
PHP 7.0
在 Rainbond 上自动启用以下内置扩展(此列表不包括默认情况下 PHP 启用的扩展,例如 DOM,JSON,PCRE 或 PDO):
- Bzip2
- cURL
- FPM
- MySQL (PDO) (uses mysqlnd)
- MySQLi (uses mysqlnd)
- OPcache
- OpenSSL
- PostgreSQL
- PostgreSQL (PDO)
- Readline
- Sockets
- Zip
- Zlib
以下内置扩展已经构建为“共享”,可以通过 composer.json(括号中给出的内部标识符名称)启用:
- BCMath (
bcmath) - Calendar (
calendar) - Exif (
exif) - FTP (
ftp) - GD (
gd; with PNG, JPEG and FreeType support) - GMP (
gmp) - gettext (
gettext) - IMAP (
imap; with SASL and Kerberos support) - intl (
intl) - LDAP (
ldap; with SASL support) - mbstring (
mbstring) - mcrypt (
mcrypt) - PCNTL (
pcntl) - Shmop (
shmop) - SOAP (
soap) - SQLite3 (
sqlite3) - SQLite (PDO) (
pdo_sqlite) - XMLRPC (
xmlrpc) - XSL (
xsl)
可以通过 composer.json 启用以下第三方扩展(括号中给出的内部标识符名称):
- APCu (
apcu; provides an apc extension for compatibility with legacy software) - Blackfire (
blackfire) - Cassandra (
cassandra) - ev (
ev) - event (
event) - ImageMagick (
imagick) - memcached (
memcached; built against a version of libmemcached with SASL support) - MongoDB (
mongodb) - New Relic (
newrelic; will automatically be enabled when the New Relic Add-On is detected during a build) - OAuth (
oauth) - Phalcon (
phalcon) - pq (
pq) - rdkafka (
rdkafka) - PHPRedis (
redis)