Tous les produits
Search
Centre de documentation

Serverless App Engine:Déployer une application à l'aide d'un package de code

Dernière mise à jour :Aug 12, 2026

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 21 open source

Dragonwell 17

2022-07-11

17.0.3.0.3+7

CentOS Linux release 7.9.2009

Oui

Oui

Dragonwell 17 open source

Dragonwell 11

2021-08-27

11.0.10.10-AJDK

CentOS Linux release 7.9.2009

Non

Oui

  • Mise à jour de Dragonwell et d'OpenJDK.

  • Mise à jour du système d'exploitation.

  • Ajout de la prise en charge des polices chinoises et anglaises.

  • Optimisation significative de la vitesse de démarrage.

2020-09-27

Dragonwell 11 open source

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

  • Mise à jour de Dragonwell et d'OpenJDK.

  • Mise à jour du système d'exploitation.

  • Ajout de la prise en charge des polices chinoises et anglaises.

  • Optimisation significative de la vitesse de démarrage.

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 :

  • telnet : la commande telnet dans l'image alpine ne prend pas en charge le paramètre -e.

  • curl

  • wget

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 :

  • telnet : la commande telnet dans l'image alpine ne prend pas en charge le paramètre -e.

  • curl

  • wget

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

  • Prise en charge des polices prédéfinies.

  • Prise en charge des extensions PHP par défaut.

  • Prise en charge du dépôt d'extensions PHP PECL.

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 de site NGINX par défaut, correspondant au répertoire ./nginx/ du package de démonstration.

  • Prend en charge la configuration NGINX server {}. Pour plus d'informations, consultez ngx_http_core_module.

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

PHP_INI_DIR.

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 http {}. Par défaut, la configuration http {} fait référence à la configuration /home/admin/app/nginx/. Pour savoir comment modifier la configuration, reportez-vous à Gérer et utiliser les éléments de configuration (K8s ConfigMap).

Extensions intégrées

L'environnement PHP fourni par SAE prend en charge les extensions suivantes :

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

www-data www-data

Configuration PHP par défaut, le chemin du fichier de configuration est /usr/local/etc/php-fpm.conf.

NGINX

Processus

www-data www-data

Configuration NGINX par défaut, le chemin du fichier de configuration est /etc/nginx/nginx.conf.

Répertoire de fichiers

Répertoire

root root

Répertoire où sont déployés les packages de code ; le répertoire de configuration est /home/admin/app/. Consultez l'exemple suivant :

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

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.

  1. Créez une application SAE avec PHP 7.3 comme environnement d'exécution.

  2. Activez l'accès Internet.

  3. 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
  4. 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
  5. 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
  6. 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
  7. 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

80

PHP-FPM

127.0.0.1:9000

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

Python 3.9.15

.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)

  • Microsoft.AspNetCore.App 3.1.32

  • Microsoft.NETCore.App 3.1.32

5,0

mcr.microsoft.com/dotnet/aspnet:5.0

Debian GNU/Linux 10 (buster)

  • Microsoft.AspNetCore.App 5.0.17

  • Microsoft.NETCore.App 5.0.17

6,0

mcr.microsoft.com/dotnet/aspnet:6.0

Debian GNU/Linux 11 (bullseye)

  • Microsoft.AspNetCore.App 6.0.33

  • Microsoft.NETCore.App 6.0.33

7,0

mcr.microsoft.com/dotnet/aspnet:7.0

Debian GNU/Linux 11 (bullseye)

  • Microsoft.AspNetCore.App 7.0.20

  • Microsoft.NETCore.App 7.0.20

8,0

mcr.microsoft.com/dotnet/aspnet:8.0

Debian GNU/Linux 12 (bookworm)

  • Microsoft.AspNetCore.App 8.0.8

  • Microsoft.NETCore.App 8.0.8