コードパッケージを使用してアプリケーションをデプロイする場合、Serverless App Engine (SAE) は以下のテクノロジスタックとランタイム環境をサポートしています。デプロイ前に、SAE 要件を満たすコードパッケージを作成する必要があります。テクノロジスタック言語とランタイム環境が以下にリストされていない場合は、イメージを使用してアプリケーションをデプロイする必要があります。
Java
ランタイム環境 | 更新時間 | JDK バージョン | オペレーティングシステムバージョン | オープンソース | メンテナンス済み | 説明 |
Dragonwell 21 | 2024-07-18 | 21.0.3.0.3+9 | CentOS Linux release 7.9.2009 | はい | はい | |
Dragonwell 17 | 2022-07-11 | 17.0.3.0.3+7 | CentOS Linux release 7.9.2009 | はい | はい | |
Dragonwell 11 | 2021-08-27 | 11.0.10.10-AJDK | CentOS Linux release 7.9.2009 | いいえ | はい |
|
2020-09-27 | ||||||
Dragonwell 8 | 2021-10-18 | 1.8.0_302 | CentOS Linux release 7.9.2009 | はい | はい | CPU 使用率が高くなるという散発的な問題を修正しました。 |
2021-08-27 |
| |||||
2020-09-27 | Wisp コルーチンや NIO クライアント Netty との互換性の自己チェックなどの機能を有効にしました。詳細については、「オープンソース Dragonwell 8」をご参照ください。 | |||||
OpenJDK 8 | 2019-06-19 | 1.8.0_191 | CentOS Linux release 7.6.1810 | はい | いいえ | なし |
OpenJDK 7 | 2019-02-25 | 1.7.0_201 | CentOS Linux release 7.6.1810 | はい | いいえ | なし |
openjdk-8u191-jdk-alpine3.9 | 2019-02-25 | 1.8.0_191 | alpine 3.9.2 | はい | いいえ | alpine イメージの一部のコマンドは CentOS のコマンドとは異なります。次に例を示します。
|
openjdk-7u201-jdk-alpine3.9 | 2019-02-25 | 1.7.0_201 | alpine 3.9.2 | はい | いいえ | alpine イメージの一部のコマンドは CentOS のコマンドとは異なります。次に例を示します。
|
PHP
ランタイムの概要
オンラインアプリケーション: NGINX with PHP-FPM
SAE は、PHP Web アプリケーション用に LNMP (Linux+NGINX+MySQL+PHP) ランタイム環境を提供します。これには以下が含まれます。
PHP FastCGI Process Manager (FPM) のデフォルトベースイメージ。
NGINX。
一般的な PHP 拡張機能。
アプリケーションでより多くのリソースが必要な場合は、次の Alibaba Cloud サービスを使用できます。
アプリケーションモニタリング: ARMS
PHP バージョン 5.4 から 7.3 の SAE アプリケーションでは、アプリケーションモニタリングを有効にして、ApsaraDB RDS MySQL および Tair (Redis OSS 互換) のアプリケーション呼び出しチェーントレーシングやリソースアクセスレイテンシなどのより詳細なモニタリング情報を取得できます。詳細については、「ARMS アプリケーションモニタリングの概要」をご参照ください。
PHP ランタイムの説明
ソフトウェアバージョン
次の表は、使用可能な PHP ランタイム環境について説明しています。より高いバージョンの PHP 環境が必要な場合は、DingTalk グループ (グループ番号: 32874633) に参加して、製品の技術専門家に相談してください。
ランタイム環境 | 更新時間 | PHP バージョン | NGINX バージョン | オペレーティングシステムバージョン | 説明 |
PHP-FPM 7.3 | 2021-12-27 | 7.3.32 | 1.18.0 | Debian 11.0 |
|
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/ |
|
ディレクトリ | /home/admin/app/php/ | デフォルトの PHP アプリケーションディレクトリ。デモパッケージの ./php/ ディレクトリに対応します。 |
ファイル | /usr/local/etc/php.ini | SAE の推奨 php.ini 構成パス。詳細については、「PHP アプリケーション構成ファイルの構成」をご参照ください。 |
次の表は、PHP-FPM のデフォルト構成について説明しています。
タイプ | パス | 説明 |
ディレクトリ | /usr/local/etc/php |
|
ディレクトリ | /usr/local/etc/php/conf.d/ | PHP 拡張機能が格納されているディレクトリ。デフォルトでは、拡張機能は .ini ファイルに含まれています。 |
ファイル | /usr/local/etc/php-fpm.conf | PHP-FPM のデフォルト構成ファイル。詳細については、「FastCGI Process Manager (FPM)」をご参照ください。構成の変更方法については、「構成項目の管理と使用 (K8s ConfigMap)」をご参照ください。 |
次の表は、NGINX のデフォルト構成について説明しています。
タイプ | パス | 説明 |
ファイル | /usr/sbin/nginx | NGINX のディレクトリ。 |
ディレクトリ | /etc/nginx/ | デフォルトの NGINX 構成のディレクトリ。 |
ファイル | /etc/nginx/nginx.conf | デフォルトの NGINX 構成ファイル nginx.conf。 |
組み込み拡張機能
SAE が提供する PHP 環境は、次の拡張機能をサポートしています。
デフォルトの PHP 拡張機能: PHP バージョンの更新とともにリリースされます。
PHP PECL コミュニティ拡張機能: 独立してリリースされ、コミュニティによってメンテナンスされています。
関連する権限
デフォルトでは、PHP-FPM と NGINX は www-data ユーザーを使用してアプリケーションを実行します。次の表は、権限について説明しています。
サービス | 権限 USER GROUP | 説明 |
PHP-FPM | プロセス | PHP デフォルト。構成ファイルのパスは /usr/local/etc/php-fpm.conf です。 |
NGINX | プロセス | NGINX デフォルト。構成ファイルのパスは /etc/nginx/nginx.conf です。 |
ファイルディレクトリ | ディレクトリ | コードパッケージがデプロイされるディレクトリ。構成ディレクトリは /home/admin/app/ です。次の例を参照してください。 |
アプリケーションの障害を防ぐために、ユーザーを保持することをお勧めします。
PHP 拡張機能のサポート
デフォルトおよび PECL 拡張機能
アプリケーションをデプロイするときに、php.ini ファイルを構成して組み込み拡張機能を指定できます。これには、デフォルトの PHP 拡張機能と PECL 拡張機能が含まれます。詳細については、「PHP アプリケーション構成ファイルの構成」をご参照ください。
webshell で次のコマンドを実行して、組み込み拡張機能を表示します。webshell を開く方法については、「webshell の表示」をご参照ください。
php -mさまざまなランタイム環境でサポートされている組み込み拡張機能の例:
PECL 7.3
/*[PHP モジュール]*/
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 モジュール]*/
Xdebug
Zend OPcachePECL 7.2
/*[PHP モジュール]*/
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 モジュール]*/
Xdebug
Zend OPcachePECL 7.1
/*[PHP モジュール]*/
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 モジュール]*/
Xdebug
Zend OPcachePECL 7.0
/*[PHP モジュール]*/
amqp
ARMS
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
igbinary
imagick
json
libxml
mbstring
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 モジュール]*/
Xdebug
Zend OPcachePECL 5.6
/*[PHP モジュール]*/
amqp
ARMS
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
igbinary
imagick
json
libxml
mbstring
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 モジュール]*/
Xdebug
Zend OPcachePECL 5.5
/*[PHP モジュール]*/
amqp
ARMS
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
igbinary
imagick
json
libxml
mbstring
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 モジュール]*/
Xdebug
Zend OPcachePECL 5.4
/*[PHP モジュール]*/
amqp
ARMS
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gettext
gmp
hash
iconv
igbinary
imagick
json
libxml
mbstring
memcached
mongodb
msgpack
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
recode
redis
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
swoole
sysvmsg
sysvsem
sysvshm
timezonedb
tokenizer
xdebug
xml
xmlreader
xmlrpc
xmlwriter
yaml
zip
zlib
/*[Zend モジュール]*/
Xdebugコンソールと API を介した拡張機能のインストール
SAE コンソールまたは API を使用して、デフォルトの PHP 拡張機能を有効にしたり、特定のバージョンの PECL 拡張機能をインストールしたりできます。詳細については、「PHP アプリケーションのデプロイ」をご参照ください。
サードパーティ製拡張機能のインストール
このセクションでは、PHP-FPM 7.3 でソースコードを含む YAML ファイルをコンパイルして、サードパーティ製拡張機能をインストールする方法について説明します。
ランタイム環境として PHP 7.3 を使用して SAE アプリケーションを作成します。
インターネットアクセスを有効にします。
webshell を使用してインスタンスにログオンし、次のコマンドを実行して拡張機能をコンパイルおよびインストールします。
/*# ソースコードを取得する*/ wget https://pecl.php.net/get/yaml-2.2.2.tgz tar -zxvf yaml-2.2.2.tgz /*# 拡張機能をコンパイルしてインストールする*/ cd yaml-2.2.2 && \ phpize && \ ./configure && \ make && make install拡張機能をオンプレミスマシンにダウンロードします。詳細については、「ログを通じてアプリケーションを診断するためにファイルをアップロードおよびダウンロードする」をご参照ください。
拡張機能のディレクトリ:
/home/admin/yaml-2.2.2/modules/yaml.so拡張機能をアプリケーションの ZIP パッケージに含めます。ZIP パッケージの構造:
. ├── nginx │ ├── default.conf │ ├── fastcgi_params │ ├── global // グローバル │ └── root.dir // ルートディレクトリ ├── php │ ├── index.php // インデックスファイル └── extensions └── yaml.soアプリケーションをデプロイし、拡張機能を含む ZIP パッケージをアップロードしてから、拡張機能の構成を php.ini ファイルに追加して拡張機能を有効にします。
extension=/home/admin/app/extensions/yaml.sowebshell を使用してインスタンスにログオンし、拡張機能がロードされているかどうかを確認します。
# php -m | grep yaml // php モジュールを確認し、yaml が存在するかチェック yaml
一般的な構成
デフォルトのサービスポート
次の表は、SAE によって構成された NGINX および PHP-FPM のデフォルトのサービスポートについて説明しています。
プログラム | ポート |
NGINX |
|
PHP-FPM |
|
PHP-FPM ログ: 標準出力
PHP-FPM ログはリアルタイムログに含まれています。次のサンプルコードは、/usr/local/etc/php-fpm.d/docker.conf ファイルのログ構成の例を示しています。
/*[グローバル]*/ 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 /*ログエラーの最大長 => 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.ini ファイルを構成して、PHP の OPcache を有効にするかどうかを決定できます。SAE はデフォルトで OPcache を有効にします。構成の詳細については、「OPcache ランタイム構成」をご参照ください。
OPcache を有効にする: このオプションは、コードの実行を高速化し、ディスク入出力 (I/O) を削減するために、オンライン Web サイトに適しています。
OPcache を無効にする: このオプションは、デバッグシナリオに適しています。コードの変更はすぐに有効になります。
次のサンプルコードは、php.ini 構成の例を示しています。
; OPcache を有効にする
opcache.enable=1
; OPcache を無効にする
;opcache.enable=0ファイルキャッシング: PHP コード
NGINX で、イメージ、ビデオ、カスケードスタイルシート (CSS) ファイル、JavaScript ファイルなど、多くの静的ファイルのキャッシングを有効または無効にすることができます。構成の詳細については、「モジュール ngx_http_headers_module」をご参照ください。
静的リソースのキャッシングを有効にする: このオプションは、多くのメディアファイルをロードするオンラインサービスや Web サイトに適しています。これにより、トラフィックスループットが向上し、1 秒あたりの読み取り入出力操作 (IOPS) が削減されます。
静的リソースのキャッシングを無効にする: このオプションは、リモートデバッグ、アップロードとダウンロード、その他の使用シナリオに適しています。ファイルにリアルタイムでアクセスできます。
次のサンプルコードは、./nginx/default.conf 構成の例を示しています。
/* 静的リソースのキャッシング */
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
/*# キャッシングを無効にする */
/*#expires off;*/
/*# キャッシングを有効にする */
expires 1s;
}拡張機能
ホットリスタートサービス
ConfigMap を使用すると、サービスを中断することなく構成を変更できます。
Webshell を使用すると、サービスを中断することなくサービスを再起動できます。
NGINX のホットリスタート
/*# 構成ファイルの有効性をテストする*/ nginx -t /*# サービスを中断することなく NGINX を再起動する*/ nginx -s reloadPHP-FPM のホットリスタート (ストリームの中断の可能性があります。php.ini 構成を確認する必要があります。)
ps uax | grep 'php-fpm: master' | grep -v grep | awk '{print $2}' | xargs kill -USR2
アップロードとダウンロード
SAE は、ファイルをアップロードおよびダウンロードするための複数の方法を提供します。ビジネス要件に基づいて、次のいずれかの方法を選択できます。
SAE コンソールの使用: デバッグ用にファイルをアップロードおよびダウンロードできます。ファイルサイズは 10 MB を超えることはできません。詳細については、「webshell 機能を使用してファイルをアップロードおよびダウンロードする」をご参照ください。
SAE コンソールの使用: リモートデバッグを実行できます。
永続ストレージの使用: Apsara File Storage NAS または Object Storage Service (OSS)。
アプリケーションをデプロイするときに、NAS または OSS をマウントしてファイルディレクトリを共有できます。
NAS のアップロードとダウンロード: Serverless Devs ツール。
OSS のアップロードとダウンロード: OSS コンソール。
OSS のアップロードとダウンロード: ossutil ツール。
Python
ランタイム環境 | 更新時間 | オペレーティングシステムバージョン | 説明 |
Python 3.9.15 | 2022-10-11 | Debian 11.0 |
.NET Core
開発とデプロイを容易にするために、SAE のベースイメージは公式の .NET ベースイメージに基づいて構築されており、一般的なトラブルシューティングツールとフォントパッケージが事前に構成されています。
バージョン | ベースイメージ | オペレーティングシステム | ランタイム |
3.1 | mcr.microsoft.com/dotnet/aspnet:3.1 | Debian GNU/Linux 10 (buster) |
|
5.0 | mcr.microsoft.com/dotnet/aspnet:5.0 | Debian GNU/Linux 10 (buster) |
|
6.0 | mcr.microsoft.com/dotnet/aspnet:6.0 | Debian GNU/Linux 11 (bullseye) |
|
7.0 | mcr.microsoft.com/dotnet/aspnet:7.0 | Debian GNU/Linux 11 (bullseye) |
|
8.0 | mcr.microsoft.com/dotnet/aspnet:8.0 | Debian GNU/Linux 12 (bookworm) |
|