すべてのプロダクト
Search
ドキュメントセンター

Serverless App Engine:PHPランタイム環境

最終更新日:Nov 01, 2024

Serverless App Engine (SAE) は複数のPHPランタイム環境をサポートしており、ビジネス要件に基づいて環境を選択できます。

概要

Webアプリケーション: NGINXおよびPHP-FPM

SAEは、ウェブアプリケーションを実行できるLNMPランタイム環境を提供する。 LNMPは、Linux、NGINX、MySQL、PHPの略です。 環境は次のコンポーネントで構成されています。

  • PHP FastCGIプロセスマネージャ (FPM) のデフォルトのベースイメージ。

  • NGINX。

  • 一般的なPHP拡張機能。

アプリケーションにさらにリソースが必要な場合は、次のAlibaba Cloudサービスを使用できます。

アプリケーションモニタリング: ARMS

Application Real-Time Monitoring Service (ARMS) を使用して、5.4と7.3の間のバージョンのPHPを実行するSAEアプリケーションを監視できます。 ARMSを使用すると、アプリケーショントレースなどのアプリケーション情報や、MySQLリソースとRedisリソースにアクセスする際のレイテンシを取得できます。 詳細については、「」をご参照ください。ARMSの概要.

PHPランタイム環境

ソフトウェアのバージョン

次の表に、使用可能なPHPランタイム環境を示します。 新しいバージョンの環境が必要な場合は、チケットを起票するか、DingTalkグループ32874633に参加してテクニカルサポートを行います。

ランタイム環境

更新された

PHPバージョン

NGINXバージョン

オペレーティングシステムのバージョン

説明

PHP-FPM 7.3

2021-12-27

7.3.32

1.18.0

Debian 11.0

  • プリセットフォントをサポートします。

  • デフォルトのPHP拡張機能をサポートします。

  • PHP拡張リポジトリPECLをサポートします。

PHP-FPM 7.2

2021-09-17

7.2.34

1.18.0

Debian 10.7

なし

PHP-FPM 7.1

2021-09-17

7.1.33

1.18.0

Debian 10.2

なし

PHP-FPM 7.0

2021-09-17

7.0.33

1.18.0

Debian 9.6

なし

PHP-FPM 5.6

2021-09-17

5.6.40

1.18.0

Debian 9.6

なし

PHP-FPM 5.5

2021-09-17

5.5.38

1.18.0

Debian 8.5

なし

PHP-FPM 5.4

2021-09-17

5.4.45

1.18.0

Debian 8.2

なし

デフォルトディレクトリ

SAEでは、次のディレクトリを使用して、PHPランタイム環境にアプリケーションパッケージをデプロイできます。

データ型

ディレクトリ

説明

ディレクトリ

/home/admin/app/

アプリケーションパッケージがデプロイされる既定のディレクトリ。

ディレクトリ

/home/admin/app/nginx/

  • NGINX仮想サーバーがデプロイされているデフォルトのディレクトリ。 ディレクトリは. /nginx /デモパッケージで。

  • server {} 形式のNGINX仮想サーバーの設定をサポートします。 詳細については、「ngx_http_core_module」をご参照ください。

ディレクトリ

/home/admin/app/php/

PHPがデプロイされるデフォルトのディレクトリ。 ディレクトリは. /php /デモパッケージで。

ファイル

/usr/local/etc/php.ini

php.ini設定ファイルが保存されている推奨ディレクトリ。 詳細については、「PHPアプリケーションの設定ファイルの設定」をご参照ください。

次の表に、PHP-FPMのデフォルト設定を示します。

データ型

ディレクトリ

説明

ディレクトリ

/usr /ローカル /etc/php

PHP_INI_DIR

ディレクトリ

/usr/local/etc/php/conf.d/

PHP拡張機能が格納されているディレクトリ。 デフォルトでは、拡張機能はに含まれています。iniファイル。

ファイル

/usr/local/etc/php-fpm.conf

PHP-FPMのデフォルト設定ファイル。詳細については、FastCGIプロセスマネージャー (FPM) の構成セクションを参照してください。

次の表に、NGINXのデフォルト設定を示します。

データ型

ディレクトリ

説明

ファイル

/usr/sbin/nginx

NGINXのディレクトリ。

ディレクトリ

/etc/nginx/

デフォルトのNGINX設定のディレクトリ。

ファイル

/etc/nginx/nginx.conf

デフォルトの設定ファイルnginx.conf。 ファイルにhttp {} 設定が含まれています。 デフォルトでは、http {} 設定は /home/admin/app/nginx/ ディレクトリの設定を参照します。

組み込み拡張機能

SAEが提供するPHPランタイム環境は、次の拡張機能をサポートします。

関連する権限

デフォルトでは、PHP-FPMとNGINXはwww-dataユーザーを使用してアプリケーションを実行します。 次の表に、権限を示します。

サービス

特定の権限が付与されているユーザーグループ

説明

PHP-FPM

処理中

www-data www-data

PHPのデフォルトのユーザーまたはユーザーグループ。 ユーザーまたはユーザーグループは、/usr/local/etc/php-fpm.confディレクトリの設定ファイルで指定されます。

Nginx

処理中

www-data www-data

NGINXのデフォルトのユーザーまたはユーザーグループ。 ユーザーまたはユーザーグループは、/etc/nginx/nginx.confディレクトリの設定ファイルで指定されています。

ファイルディレクトリ

ディレクトリ

root root

アプリケーションパッケージがデプロイされるディレクトリ。 ディレクトリに /home/admin/app/ を指定します。 例:

drwxrwxrwx 2 root root 4096 May 13  2021 nginx
drwxrwxrwx 1 root root 4096 Apr  8 11:45 php
重要

アプリケーションの失敗を防ぐために、ユーザーを保持することを推奨します。

PHP拡張機能のサポート

デフォルトおよびPECL拡張

デフォルトのphp拡張機能やPECL拡張機能など、アプリケーションのデプロイ時に組み込み拡張機能を指定するようにPHP. iniファイルを設定できます。 詳細については、「PHPアプリケーションの設定ファイルの設定」をご参照ください。

webshellで次のコマンドを実行して、組み込みの拡張機能を表示します。 webshellの使用方法については、「webshellウィンドウをフルスクリーンで表示する」をご参照ください。

php -m

さまざまなランタイム環境でサポートされている組み込み拡張機能の例:

PECL 7.3

[PHP Modules]
amqp
ARMS
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
igbinary
imagick
json
libxml
mbstring
mcrypt
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
redis
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
swoole
sysvmsg
sysvsem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zend Modules]
Xdebug
Zend OPcache

PECL 7.2

[PHPモジュール]
amqp
腕
bcmath
bz2
カレンダー
コア
ctype
カール
日付
dom
exif
fileinfo
フィルター
ftp
gettext
gmp
ハッシュ
iconv
igbinary
イマジック
json
libxml
mbstring
mcrypt
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
ファー
posix
readline
redis
反射
セッション
shmop
SimpleXML
石鹸
ソケット
ナトリウム
SPL
sqlite3
標準
swoole
sysvmsg
sysvssem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zendモジュール]
Xdebug
Zend OPcache 

PECL 7.1

[PHPモジュール]
amqp
腕
bcmath
bz2
カレンダー
コア
ctype
カール
日付
dom
exif
fileinfo
フィルター
ftp
gettext
gmp
ハッシュ
iconv
igbinary
イマジック
json
libxml
mbstring
mcrypt
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
ファー
posix
readline
redis
反射
セッション
shmop
SimpleXML
石鹸
ソケット
ナトリウム
SPL
sqlite3
標準
swoole
sysvmsg
sysvssem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zendモジュール]
Xdebug
Zend OPcache 

PECL 7.0

[PHPモジュール]
amqp
腕
bcmath
bz2
カレンダー
コア
ctype
カール
日付
dom
exif
fileinfo
フィルター
ftp
gettext
gmp
ハッシュ
iconv
igbinary
イマジック
json
libxml
mbstring
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
ファー
posix
readline
redis
反射
セッション
shmop
SimpleXML
石鹸
ソケット
ナトリウム
SPL
sqlite3
標準
swoole
sysvmsg
sysvssem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zendモジュール]
Xdebug
Zend OPcache 

PECL 5.6

[PHPモジュール]
amqp
腕
bcmath
bz2
カレンダー
コア
ctype
カール
日付
dom
exif
fileinfo
フィルター
ftp
gettext
gmp
ハッシュ
iconv
igbinary
イマジック
json
libxml
mbstring
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
ファー
posix
readline
redis
反射
セッション
shmop
SimpleXML
石鹸
ソケット
ナトリウム
SPL
sqlite3
標準
swoole
sysvmsg
sysvssem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zendモジュール]
Xdebug
Zend OPcache 

PECL 5.5

[PHPモジュール]
amqp
腕
bcmath
bz2
カレンダー
コア
ctype
カール
日付
dom
exif
fileinfo
フィルター
ftp
gettext
gmp
ハッシュ
iconv
igbinary
イマジック
json
libxml
mbstring
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
ファー
posix
readline
redis
反射
セッション
shmop
SimpleXML
石鹸
ソケット
ナトリウム
SPL
sqlite3
標準
swoole
sysvmsg
sysvssem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zendモジュール]
Xdebug
Zend OPcache 

PECL 5.4

[PHPモジュール]
amqp
腕
bcmath
bz2
カレンダー
コア
ctype
カール
日付
dom
ereg
exif
fileinfo
フィルター
ftp
gettext
gmp
ハッシュ
iconv
igbinary
イマジック
json
libxml
mbstring
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
ファー
posix
readline
recode
redis
反射
セッション
shmop
SimpleXML
石鹸
ソケット
SPL
sqlite3
標準
swoole
sysvmsg
sysvssem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
zip
zlib

[Zendモジュール]
Xdebug 

コンソールまたはAPIを使用した拡張機能のインストール

デフォルトのPHP拡張機能を有効にするか、SAEコンソールで特定のPECL拡張機能をインストールするか、ビジネス要件に基づいてAPIを呼び出すことができます。 詳細については、「SAEコンソールでZIPパッケージを使用したPHPアプリケーションのデプロイ」をご参照ください。

サードパーティの拡張機能のインストール

このセクションでは、PHP-FPM 7.3のソースコードを含むYAMLファイルをコンパイルしてサードパーティ拡張機能をインストールする方法について説明します。

  1. PHP 7.3で実行されるSAEアプリケーションを作成します。

  2. アプリケーションがインターネットにアクセスできるようにします。

  3. webshellを使用してインスタンスにログインし、次のコマンドを実行して拡張機能をコンパイルしてインストールします。

    # Obtain the source code.
    wget https://pecl.php.net/get/yaml-2.2.2.tgz
    tar -zxvf yaml-2.2.2.tgz
    # Compile and install the extension.
    cd yaml-2.2.2 && \
    phpize && \
    ./configure && \
    make && make install
  4. オンプレミスマシンに拡張機能をダウンロードします。 詳細については、「ログのアップロードとダウンロードによるアプリケーションのヘルスステータスの確認」をご参照ください。

    拡張子のディレクトリ:

    /home/admin/yaml-2.2.2/modules/yaml.so
  5. アプリケーションのZIPパッケージに拡張機能を含めます。 ZIPパッケージ構造:

    .
    ├── nginx
    │   ├── default.conf
    │   ├── fastcgi_params
    │ ├── global
    │ └── root.dir
    ├── php
    │   ├── index.php
    └── extensions
        └── yaml.so
  6. アプリケーションをデプロイし、拡張子を含むZIPパッケージをアップロードしてから、拡張子設定をphp.iniファイルに追加して拡張子を有効にします。

    extension=/home/admin/app/extensions/yaml.so
  7. webshellを使用してインスタンスにログインし、拡張機能がロードされているかどうかを確認します。

    # php -m | grep yaml
    yaml

拡張機能強化

PHPは、WebP、JPEG、PNG、zlib、XPM、およびFreeTypeの拡張機能を最適化できます。 詳細については、「画像処理とGD」をご参照ください。

一般的な設定

デフォルトのサービスポート

次の表に、NGINXおよびPHP-FPM用にSAEで設定されているデフォルトのサービスポートを示します。

項目

ポート

Nginx

80

PHP-FPM

127.0.0.1:9000

PHP-FPMログ: 標準出力

  • PHP-FPMログはリアルタイムログに含まれます。 次のサンプルコードは、ログ設定の例を示しています。 設定ファイルは、/usr/local/etc/php-fpm.d/docker.confディレクトリに保存されます。

    [global]
    error_log = /proc/self/fd/2
    log_limit = 8192
    
    [www]
    access.log = /proc/self/fd/2
  • 表示されないPHPエラーログ。 次のサンプルコードは、php.iniファイルのログ設定の例を示しています。

    error_log => no value => no value
    log_errors => Off => Off
    log_errors_max_len => 1024 => 1024
  • エラーログをリアルタイムログに含める場合は、アプリケーションを作成またはデプロイするときにphp.iniファイルを設定する必要があります。 エラーログを保存するには、次のディレクトリを指定する必要があります。

    log_errors = on
    error_log = /proc/self/fd/2 

NGINXログ: 標準出力

  • NGINXログはリアルタイムログに含まれます。 次のサンプルコードは、ログ設定の例を示しています。 構成ファイルは、. /nginx/default.confディレクトリに移動します。

    #access_log /dev/stdout;
    error_log stderr; 
  • access_logを設定して、リアルタイムログにアクセスログを含めるかどうかを決定できます。

ファイルキャッシング: 静的ファイル、画像、およびメディア

phpのOPcacheを有効にするかどうかを決定するために、PHP. iniファイルを設定できます。 デフォルトでは、OPcacheはSAEで有効になっています。 詳細については、「ランタイム設定のOPcache設定オプション」をご参照ください。

  • OPcacheを有効にする: このオプションは、オンラインWebサイトでコードの実行を高速化し、ディスクの入出力 (I/O) を減らすのに適しています。

  • OPcacheを無効にする: このオプションはシナリオのデバッグに適しています。 コードの変更はすぐに有効になります。

php.iniファイル内の設定:

; Enable OPcache.
opcache.enable=1
; Disable OPcache.
;opcache.enable=0

ファイルキャッシュ: PHPコード

NGINXでは、画像、ビデオ、カスケードスタイルシート (CSS) ファイル、JavaScriptファイルなどの多数の静的ファイルのキャッシュを有効または無効にできます。 詳細については、サンプルコードおよびModule ngx_http_headers_moduleをご参照ください。

  • 静的リソースキャッシュの有効化: このオプションは、多数のメディアファイルを読み込むオンラインサービスやWebサイトに適しています。 これにより、トラフィックスループットが向上し、1秒あたりの読み取り入力 /出力操作 (IOPS) が削減されます。

  • 静的リソースキャッシュの無効化: このオプションは、リモートデバッグ、アップロード、ダウンロード、およびその他の使用シナリオに適しています。 リアルタイムでファイルにアクセスできます。

の構成. /nginx/default.confディレクトリ:

    # Static resource caching
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
        # Disable caching.
        #expires off;
        # Enable caching.
        expires 1s;
    }

強化

ホット再起動

  • ConfigMapを使用すると、サービスを中断することなく設定を変更できます。

  • Webshellを使用すると、サービスを中断せずにサービスを再起動できます。

    • NGINXのホットリスタート

      # Check the validity of the configuration file.
      nginx -t
      # Restart NGINX without service interruptions.
      nginx -s reload
    • PHP-FPMのホットリスタート (サービスが中断される可能性があります。 php.iniファイルが有効であることを確認する必要があります。

      ps uax | grep 'php-fpm: master' | grep -v grep | awk '{print $2}' | xargs kill -USR2

アップロードとダウンロード

SAEは、ファイルをアップロードおよびダウンロードするための複数の方法を提供します。 ビジネス要件に基づいて、次のいずれかの方法を選択できます。

  • SAEコンソールを使用する: サイズが10 MBを超えないファイルをアップロードおよびダウンロードしてデバッグできます。

    詳細については、「webshell機能を使用したファイルのアップロードとダウンロード」をご参照ください。

  • SAEコンソールを使用する: リモートデバッグを実行できます。

  • 永続化ストレージ: File Storage NASまたはObject Storage Service (OSS) を使用します。

    • アプリケーションをデプロイするときに、NASまたはOSSをマウントし、ファイルディレクトリを共有できます。

    • NASでファイルをアップロードおよびダウンロードする: Serverless Devsを使用できます。

    • OSSでファイルをアップロードおよびダウンロードする: OSSコンソールを使用できます。

    • OSSでファイルをアップロードおよびダウンロードする: ossutilを使用できます。