Lors du déploiement d'une application via un package de code, Serverless App Engine (SAE) prend en charge les piles technologiques et environnements d'exécution suivants. Avant le déploiement, vous devez créer un package de code conforme aux exigences de SAE. Si votre langage ou environnement d'exécution ne figure pas dans la liste ci-dessous, déployez l'application à l'aide d'une image.
Java
Environnement d'exécution | Date de mise à jour | Version JDK | Version du système d'exploitation | Open source | Maintenu | Description |
Dragonwell 21 | 2024-07-18 | 21.0.3.0.3+9 | CentOS Linux release 7.9.2009 | Oui | Oui | |
Dragonwell 17 | 2022-07-11 | 17.0.3.0.3+7 | CentOS Linux release 7.9.2009 | Oui | Oui | |
Dragonwell 11 | 2021-08-27 | 11.0.10.10-AJDK | CentOS Linux release 7.9.2009 | Non | Oui |
|
2020-09-27 | ||||||
Dragonwell 8 | 2021-10-18 | 1.8.0_302 | CentOS Linux release 7.9.2009 | Oui | Oui | Correction d'un problème occasionnel d'utilisation élevée du CPU. |
2021-08-27 |
| |||||
2020-09-27 | Activation de fonctionnalités telles que la coroutine Wisp et l'auto-vérification de compatibilité avec le client NIO Netty. Pour plus d'informations, consultez Dragonwell 8 open source. | |||||
OpenJDK 8 | 2019-06-19 | 1.8.0_191 | CentOS Linux release 7.6.1810 | Oui | Non | Aucune |
OpenJDK 7 | 2019-02-25 | 1.7.0_201 | CentOS Linux release 7.6.1810 | Oui | Non | Aucune |
openjdk-8u191-jdk-alpine3.9 | 2019-02-25 | 1.8.0_191 | alpine 3.9.2 | Oui | Non | Certaines commandes de l'image alpine diffèrent de celles de CentOS. Par exemple :
|
openjdk-7u201-jdk-alpine3.9 | 2019-02-25 | 1.7.0_201 | alpine 3.9.2 | Oui | Non | Certaines commandes de l'image alpine diffèrent de celles de CentOS. Par exemple :
|
PHP
Présentation de l'environnement d'exécution
Applications en ligne : NGINX avec PHP-FPM
SAE fournit un environnement d'exécution LNMP (Linux+NGINX+MySQL+PHP) pour les applications web PHP, comprenant :
L'image de base par défaut de PHP FastCGI Process Manager (FPM).
NGINX.
Des extensions PHP courantes.
Si votre application nécessite davantage de ressources, utilisez les services Alibaba Cloud suivants :
Surveillance des applications : ARMS
Pour les applications SAE utilisant des versions PHP comprises entre 5,4 et 7,3, activez la surveillance applicative afin d'obtenir des informations détaillées, telles que le traçage de la chaîne d'appels et la latence d'accès aux ressources pour ApsaraDB RDS MySQL et Tair (compatible Redis OSS).Pour plus d'informations, consultez Présentation de la surveillance des applications ARMS.
Description de l'environnement d'exécution PHP
Versions logicielles
Le tableau suivant détaille les environnements d'exécution PHP disponibles. Si vous avez besoin d'une version supérieure de PHP, rejoignez le groupe DingTalk (numéro de groupe : 32874633) pour consulter les experts techniques du produit.
Environnement d'exécution | Date de mise à jour | Version PHP | Version NGINX | Version du système d'exploitation | Description |
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 | Aucune |
PHP-FPM 7.1 | 2021-09-17 | 7.1.33 | 1.18.0 | Debian 10.2 | Aucune |
PHP-FPM 7.0 | 2021-09-17 | 7.0.33 | 1.18.0 | Debian 9.6 | Aucune |
PHP-FPM 5.6 | 2021-09-17 | 5.6.40 | 1.18.0 | Debian 9.6 | Aucune |
PHP-FPM 5.5 | 2021-09-17 | 5.5.38 | 1.18.0 | Debian 8.5 | Aucune |
PHP-FPM 5.4 | 2021-09-17 | 5.4.45 | 1.18.0 | Debian 8.2 | Aucune |
Répertoires système
L'environnement PHP de SAE utilise par défaut les répertoires suivants pour le déploiement des packages d'application :
Type | Chemin | Description |
Répertoire | /home/admin/app/ | Répertoire par défaut où sont déployés les packages d'application. |
Répertoire | /home/admin/app/nginx/ |
|
Répertoire | /home/admin/app/php/ | Répertoire d'application PHP par défaut, correspondant au répertoire ./php/ du package de démonstration. |
Fichier | /usr/local/etc/php.ini | Chemin de configuration php.ini recommandé pour SAE. |
Le tableau suivant décrit les configurations par défaut de PHP-FPM :
|
Type |
Chemin |
Description |
|
Répertoire |
/usr/local/etc/php |
|
|
Répertoire |
/usr/local/etc/php/conf.d/ |
Répertoire contenant les extensions PHP. Par défaut, les extensions sont incluses dans des fichiers .ini. |
|
Fichier |
/usr/local/etc/php-fpm.conf |
Fichier de configuration par défaut pour PHP-FPM. Pour plus d'informations, consultez FastCGI Process Manager (FPM). Pour savoir comment modifier la configuration, reportez-vous à Gérer et utiliser les éléments de configuration (K8s ConfigMap). |
Le tableau suivant présente les configurations par défaut de NGINX :
|
Type |
Chemin |
Description |
|
Fichier |
/usr/sbin/nginx |
Répertoire de NGINX. |
|
Répertoire |
/etc/nginx/ |
Répertoire des configurations NGINX par défaut. |
|
Fichier |
/etc/nginx/nginx.conf |
Fichier de configuration NGINX par défaut nginx.conf, qui inclut la configuration |
Extensions intégrées
L'environnement PHP fourni par SAE prend en charge les extensions suivantes :
Extensions PHP par défaut : publiées avec les mises à jour de version PHP.
Extensions communautaires PHP PECL : publiées indépendamment et maintenues par la communauté.
Permissions associées
Par défaut, PHP-FPM et NGINX utilisent l'utilisateur www-data pour exécuter les applications. Le tableau suivant détaille les permissions.
Service | Permission USER GROUP | Description |
PHP-FPM | Processus | Configuration PHP par défaut, le chemin du fichier de configuration est /usr/local/etc/php-fpm.conf. |
NGINX | Processus | Configuration NGINX par défaut, le chemin du fichier de configuration est /etc/nginx/nginx.conf. |
Répertoire de fichiers | Répertoire | Répertoire où sont déployés les packages de code ; le répertoire de configuration est /home/admin/app/. Consultez l'exemple suivant : |
Il est recommandé de conserver cet utilisateur afin d'éviter tout dysfonctionnement de l'application.
Prise en charge des extensions PHP
Extensions par défaut et PECL
Lors du déploiement d'une application, configurez le fichier php.ini pour spécifier les extensions intégrées, y compris les extensions PHP par défaut et les extensions PECL.
Exécutez la commande suivante dans le webshell pour afficher les extensions intégrées. Pour savoir comment ouvrir le webshell, consultez Afficher le webshell.
php -m
Exemples d'extensions intégrées prises en charge par les différents environnements d'exécution :
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 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.1
[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.0
[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
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 5.6
[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
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 5.5
[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
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 5.4
[PHP Modules]
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 Modules]
Xdebug
Installer des extensions via la console et l'API
Activez les extensions PHP par défaut ou installez des versions spécifiques d'extensions PECL via la console SAE ou l'API. Pour plus d'informations, consultez Déployer une application PHP.
Installer des extensions tierces
Cette section explique comment installer une extension tierce en compilant le fichier YAML contenant le code source dans PHP-FPM 7.3.
Créez une application SAE avec PHP 7.3 comme environnement d'exécution.
Activez l'accès Internet.
-
Connectez-vous à l'instance via le webshell, puis exécutez les commandes suivantes pour compiler et installer l'extension :
# Get 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 -
Téléchargez l'extension sur votre machine locale. Pour plus d'informations, consultez Charger et télécharger des fichiers pour diagnostiquer les applications via les journaux.
Répertoire de l'extension :
/home/admin/yaml-2.2.2/modules/yaml.so -
Incluez l'extension dans le package ZIP de l'application. Structure du package ZIP :
. ├── nginx │ ├── default.conf │ ├── fastcgi_params │ ├── global │ └── root.dir ├── php │ ├── index.php └── extensions └── yaml.so -
Déployez l'application, chargez le package ZIP contenant l'extension, puis ajoutez la configuration de l'extension au fichier php.ini pour l'activer.
extension=/home/admin/app/extensions/yaml.so -
Connectez-vous à l'instance via le webshell et vérifiez si l'extension est chargée.
# php -m | grep yaml yaml
Configurations courantes
Ports de service par défaut
Le tableau suivant indique les ports de service par défaut de NGINX et PHP-FPM configurés par SAE :
|
Programme |
Port |
|
NGINX |
|
|
PHP-FPM |
|
Journaux PHP-FPM : sortie standard
-
Les journaux PHP-FPM sont inclus dans les journaux en temps réel. L'exemple de code suivant illustre la configuration des journaux dans le fichier /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 -
Les journaux d'erreurs PHP non affichés. L'exemple de code suivant montre la configuration des journaux dans le fichier php.ini.
error_log => no value => no value log_errors => Off => Off log_errors_max_len => 1024 => 1024 -
Pour inclure les journaux d'erreurs dans les journaux en temps réel, configurez le fichier php.ini lors de la création ou du déploiement de l'application. Spécifiez le répertoire suivant pour stocker les journaux d'erreurs :
log_errors = on error_log = /proc/self/fd/2
Journaux NGINX : sortie standard
-
Les journaux NGINX sont inclus dans les journaux en temps réel. L'exemple de code suivant présente la configuration des journaux dans le fichier ./nginx/default.conf :
#access_log /dev/stdout; error_log stderr; Activez
access_log. Par défaut, les journaux sont inclus dans les journaux en temps réel.
Mise en cache de fichiers : fichiers statiques, images et médias
Configurez le fichier php.ini pour déterminer s'il faut activer OPcache pour PHP. SAE active OPcache par défaut. Pour plus d'informations sur la configuration, consultez Configuration d'exécution d'OPcache.
Activer OPcache : cette option convient aux sites web en ligne pour accélérer l'exécution du code et réduire les entrées/sorties disque (I/O).
Désactiver OPcache : cette option est adaptée aux scénarios de débogage. Les modifications du code prennent effet immédiatement.
L'exemple de code suivant illustre la configuration de php.ini :
; Enable OPcache
opcache.enable=1
; Disable OPcache
;opcache.enable=0
Mise en cache de fichiers : code PHP
Activez ou désactivez la mise en cache dans NGINX pour divers fichiers statiques, tels que les images, vidéos, fichiers CSS (Cascading Style Sheets) et fichiers JavaScript. Pour plus d'informations sur la configuration, consultez Module ngx_http_headers_module.
Activer la mise en cache des ressources statiques : recommandée pour les services en ligne et les sites web chargeant de nombreux fichiers multimédias. Cela améliore le débit du trafic et réduit les opérations d'entrée/sortie de lecture par seconde (IOPS).
Désactiver la mise en cache des ressources statiques : utile pour le débogage à distance, les chargements et téléchargements, ainsi que d'autres cas d'usage. Permet d'accéder aux fichiers en temps réel.
L'exemple de code suivant montre une configuration type du fichier ./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;
}
Fonctionnalités avancées
Redémarrage à chaud des services
ConfigMap permet de modifier les configurations sans interrompre les services.
-
Webshell permet de redémarrer les services sans interruption.
-
Redémarrage à chaud de NGINX
# Test the validity of the configuration file nginx -t # Restart NGINX without service interruptions nginx -s reload -
Redémarrage à chaud de PHP-FPM (risque d'interruption de flux ; il est nécessaire de vérifier la configuration php.ini.)
ps uax | grep 'php-fpm: master' | grep -v grep | awk '{print $2}' | xargs kill -USR2
-
Chargement et téléchargement
SAE offre plusieurs méthodes pour charger et télécharger des fichiers. Choisissez celle qui correspond le mieux à vos besoins métier :
Via la console SAE : chargez et téléchargez des fichiers pour le débogage. La taille maximale du fichier est de 10 Mo. Pour plus d'informations, consultez Charger et télécharger des fichiers via le webshell.
Via la console SAE : effectuez un débogage à distance.
-
Via le stockage persistant : Apsara File Storage NAS ou Object Storage Service (OSS).
Lors du déploiement d'une application, montez NAS ou OSS et partagez des répertoires de fichiers.
Chargement et téléchargement NAS : Outil Serverless Devs.
Chargement et téléchargement OSS : Console OSS.
Chargement et téléchargement OSS : Outil ossutil.
Python
|
Environnement d'exécution |
Date de mise à jour |
Version du système d'exploitation |
Description |
|
Python 3.9.15 |
2022-10-11 |
Debian 11.0 |
.NET Core
Pour faciliter le développement et le déploiement, les images de base de SAE sont construites à partir des images de base officielles .NET et préconfigurées avec des outils de dépannage courants ainsi que des packages de polices.
Version | Image de base | Système d'exploitation | Runtime |
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) |
|