Al desplegar una aplicación mediante un paquete de código, Serverless App Engine (SAE) es compatible con las siguientes pilas tecnológicas y entornos de ejecución. Antes del despliegue, debe create a code package that meets SAE requirements. Si el lenguaje de su pila tecnológica y el entorno de ejecución no aparecen a continuación, necesita deploy an application using an image.
Java
Entorno de ejecución | Fecha de actualización | Versión de JDK | Versión del sistema operativo | Código abierto | Mantenimiento activo | Descripción |
Dragonwell 21 | 2024-07-18 | 21.0.3.0.3+9 | CentOS Linux release 7.9.2009 | Sí | Sí | |
Dragonwell 17 | 2022-07-11 | 17.0.3.0.3+7 | CentOS Linux release 7.9.2009 | Sí | Sí | |
Dragonwell 11 | 2021-08-27 | 11.0.10.10-AJDK | CentOS Linux release 7.9.2009 | No | Sí |
|
2020-09-27 | ||||||
Dragonwell 8 | 2021-10-18 | 1.8.0_302 | CentOS Linux release 7.9.2009 | Sí | Sí | Se corrigió el problema ocasional de alto uso de CPU. |
2021-08-27 |
| |||||
2020-09-27 | Se habilitaron funciones como la corrutina Wisp y la autocomprobación de compatibilidad con el cliente NIO Netty. Para más información, consulte Dragonwell 8 de código abierto. | |||||
OpenJDK 8 | 2019-06-19 | 1.8.0_191 | CentOS Linux release 7.6.1810 | Sí | No | Ninguna |
OpenJDK 7 | 2019-02-25 | 1.7.0_201 | CentOS Linux release 7.6.1810 | Sí | No | Ninguna |
openjdk-8u191-jdk-alpine3.9 | 2019-02-25 | 1.8.0_191 | alpine 3.9.2 | Sí | No | Algunos comandos de la imagen alpine difieren de los de CentOS. Por ejemplo:
|
openjdk-7u201-jdk-alpine3.9 | 2019-02-25 | 1.7.0_201 | alpine 3.9.2 | Sí | No | Algunos comandos de la imagen alpine difieren de los de CentOS. Por ejemplo:
|
PHP
Introducción al entorno de ejecución
Aplicaciones en producción: NGINX con PHP-FPM
SAE proporciona un entorno de ejecución LNMP (Linux+NGINX+MySQL+PHP) para aplicaciones web en PHP que incluye lo siguiente:
La imagen base predeterminada de PHP FastCGI Process Manager (FPM).
NGINX.
Extensiones comunes de PHP.
Si su aplicación requiere más recursos, utilice los siguientes servicios de Alibaba Cloud:
Monitoreo de aplicaciones: ARMS
En las aplicaciones de SAE con versiones de PHP de la 5.4 a la 7.3, habilite el monitoreo de aplicaciones para obtener información más detallada. Esto incluye el rastreo de la cadena de llamadas de la aplicación y la latencia de acceso a recursos para ApsaraDB RDS MySQL y Tair (compatible con Redis OSS).Para más información, consulte ARMS application monitoring overview.
Descripción del entorno de ejecución de PHP
Versiones de software
A continuación se describen los entornos de ejecución de PHP disponibles. Si necesita una versión superior del entorno de PHP, únase al grupo de DingTalk (número de grupo: 32874633) para consultar con los expertos técnicos del producto.
Entorno de ejecución | Fecha de actualización | Versión de PHP | Versión de NGINX | Versión del sistema operativo | Descripción |
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 | Ninguna |
PHP-FPM 7.1 | 2021-09-17 | 7.1.33 | 1.18.0 | Debian 10.2 | Ninguna |
PHP-FPM 7.0 | 2021-09-17 | 7.0.33 | 1.18.0 | Debian 9.6 | Ninguna |
PHP-FPM 5.6 | 2021-09-17 | 5.6.40 | 1.18.0 | Debian 9.6 | Ninguna |
PHP-FPM 5.5 | 2021-09-17 | 5.5.38 | 1.18.0 | Debian 8.5 | Ninguna |
PHP-FPM 5.4 | 2021-09-17 | 5.4.45 | 1.18.0 | Debian 8.2 | Ninguna |
Directorios del sistema
El entorno PHP de SAE utiliza de forma predeterminada los siguientes directorios para el despliegue del paquete de la aplicación:
Tipo | Ruta | Descripción |
Directorio | /home/admin/app/ | Directorio predeterminado donde se despliegan los paquetes de la aplicación. |
Directorio | /home/admin/app/nginx/ |
|
Directorio | /home/admin/app/php/ | Directorio predeterminado de la aplicación PHP. Corresponde al directorio ./php/ del paquete de demostración. |
Archivo | /usr/local/etc/php.ini | Ruta de configuración recomendada de php.ini para SAE. |
A continuación se describen las configuraciones predeterminadas de PHP-FPM:
|
Tipo |
Ruta |
Descripción |
|
Directorio |
/usr/local/etc/php |
|
|
Directorio |
/usr/local/etc/php/conf.d/ |
Directorio donde se almacenan las extensiones de PHP. De forma predeterminada, las extensiones se incluyen en archivos .ini. |
|
Archivo |
/usr/local/etc/php-fpm.conf |
Archivo de configuración predeterminado de PHP-FPM. Para más información, consulte FastCGI Process Manager (FPM). Para saber cómo modificar la configuración, consulte Manage and use configuration items (K8s ConfigMap). |
A continuación se describen las configuraciones predeterminadas de NGINX:
|
Tipo |
Ruta |
Descripción |
|
Archivo |
/usr/sbin/nginx |
Directorio de NGINX. |
|
Directorio |
/etc/nginx/ |
Directorio de las configuraciones predeterminadas de NGINX. |
|
Archivo |
/etc/nginx/nginx.conf |
Archivo de configuración predeterminado nginx.conf de NGINX, que incluye la configuración |
Extensiones integradas
El entorno PHP proporcionado por SAE es compatible con las siguientes extensiones:
Extensiones predeterminadas de PHP: se publican junto con las actualizaciones de versión de PHP.
Extensiones de la comunidad PECL de PHP: se publican de forma independiente y la comunidad las mantiene.
Permisos relacionados
De forma predeterminada, PHP-FPM y NGINX utilizan el usuario www-data para ejecutar las aplicaciones. En la siguiente tabla se describen los permisos.
Servicio | Permiso USUARIO GRUPO | Descripción |
PHP-FPM | Proceso | Valor predeterminado de PHP; la ruta del archivo de configuración es /usr/local/etc/php-fpm.conf. |
NGINX | Proceso | Valor predeterminado de NGINX; la ruta del archivo de configuración es /etc/nginx/nginx.conf. |
Directorio de archivos | Directorio | Directorio donde se despliegan los paquetes de código. El directorio de configuración es /home/admin/app/. Consulte el siguiente ejemplo: |
Se recomienda conservar este usuario para evitar fallos en la aplicación.
Compatibilidad con extensiones de PHP
Extensiones predeterminadas y de PECL
Configure el archivo php.ini para especificar las extensiones integradas cuando despliegue una aplicación. Esto incluye las extensiones predeterminadas de PHP y las de PECL.
Ejecute el siguiente comando en webshell para consultar las extensiones integradas. Para saber cómo abrir webshell, consulte View the webshell.
php -m
A continuación se muestran ejemplos de las extensiones integradas compatibles con distintos entornos de ejecución:
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
Instalación de extensiones mediante la consola y la API
Habilite las extensiones predeterminadas de PHP o instale versiones específicas de extensiones de PECL desde la consola de SAE o mediante la API. Para más información, consulte Deploy a PHP application.
Instalación de extensiones de terceros
En esta sección se explica cómo instalar una extensión de terceros mediante la compilación del archivo YAML que contiene el código fuente en PHP-FPM 7.3.
Cree una aplicación de SAE con PHP 7.3 como entorno de ejecución.
Habilite el acceso a Internet.
-
Inicie sesión en la instancia mediante webshell y ejecute los siguientes comandos para compilar e instalar la extensión:
# 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 -
Descargue la extensión a su máquina local. Para más información, consulte Upload and download files to diagnose applications through logs.
Directorio de la extensión:
/home/admin/yaml-2.2.2/modules/yaml.so -
Incluya la extensión en el paquete ZIP de la aplicación. Estructura del paquete ZIP:
. ├── nginx │ ├── default.conf │ ├── fastcgi_params │ ├── global │ └── root.dir ├── php │ ├── index.php └── extensions └── yaml.so -
Despliegue la aplicación, cargue el paquete ZIP que contiene la extensión y agregue la configuración de la extensión al archivo php.ini para habilitarla.
extension=/home/admin/app/extensions/yaml.so -
Inicie sesión en la instancia mediante webshell y compruebe si la extensión se cargó correctamente.
# php -m | grep yaml yaml
Configuraciones comunes
Puertos de servicio predeterminados
A continuación se describen los puertos de servicio predeterminados de NGINX y PHP-FPM que configura SAE:
|
Programa |
Puerto |
|
NGINX |
|
|
PHP-FPM |
|
Registros de PHP-FPM: salida estándar
-
Los registros de PHP-FPM se incluyen en los registros en tiempo real. El siguiente fragmento de código muestra un ejemplo de la configuración de registros en el archivo /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 -
Los registros de errores de PHP no se muestran. El siguiente fragmento de código muestra un ejemplo de la configuración de registros en el archivo php.ini.
error_log => no value => no value log_errors => Off => Off log_errors_max_len => 1024 => 1024 -
Si desea incluir los registros de errores en los registros en tiempo real, configure el archivo php.ini al crear o desplegar una aplicación. Especifique el siguiente directorio para almacenar los registros de errores:
log_errors = on error_log = /proc/self/fd/2
Registros de NGINX: salida estándar
-
Los registros de NGINX se incluyen en los registros en tiempo real. El siguiente fragmento de código muestra un ejemplo de la configuración de registros en el archivo ./nginx/default.conf:
#access_log /dev/stdout; error_log stderr; Habilite
access_log. De forma predeterminada, los registros se incluyen en los registros en tiempo real.
Caché de archivos: archivos estáticos, imágenes y contenido multimedia
Configure el archivo php.ini para determinar si habilita OPcache para PHP. SAE habilita OPcache de forma predeterminada. Para más información sobre la configuración, consulte Configuración de ejecución de OPcache.
Habilitar OPcache: esta opción es adecuada para sitios web en producción, ya que acelera la ejecución del código y reduce las operaciones de entrada/salida (E/S) de disco.
Deshabilitar OPcache: esta opción es adecuada para escenarios de depuración. Las modificaciones en el código surten efecto de inmediato.
El siguiente fragmento de código muestra un ejemplo de la configuración de php.ini:
; Enable OPcache
opcache.enable=1
; Disable OPcache
;opcache.enable=0
Caché de archivos: código PHP
Habilite o deshabilite la caché en NGINX para diversos archivos estáticos, como imágenes, videos, archivos CSS (Cascading Style Sheets) y archivos JavaScript. Para más información sobre la configuración, consulte Módulo ngx_http_headers_module.
Habilitar la caché de recursos estáticos: esta opción es adecuada para servicios y sitios web en producción que cargan muchos archivos multimedia. Mejora el rendimiento del tráfico y reduce las operaciones de lectura de entrada/salida por segundo (IOPS).
Deshabilitar la caché de recursos estáticos: esta opción es adecuada para depuración remota, carga y descarga de archivos, y otros escenarios de uso. Permite acceder a los archivos en tiempo real.
El siguiente fragmento de código muestra un ejemplo de la configuración de ./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;
}
Funciones avanzadas
Reinicio en caliente de servicios
ConfigMap le permite modificar las configuraciones sin interrumpir los servicios.
-
Webshell le permite reiniciar los servicios sin interrumpirlos.
-
Reinicio en caliente de NGINX
# Test the validity of the configuration file nginx -t # Restart NGINX without service interruptions nginx -s reload -
Reinicio en caliente de PHP-FPM (existe cierta probabilidad de interrupción del flujo; debe comprobar la configuración de php.ini).
ps uax | grep 'php-fpm: master' | grep -v grep | awk '{print $2}' | xargs kill -USR2
-
Carga y descarga
SAE ofrece varios métodos para cargar y descargar archivos. Seleccione uno de los siguientes métodos según sus necesidades de negocio:
Mediante la consola de SAE: cargue y descargue archivos para depuración. El tamaño del archivo no puede superar los 10 MB. Para obtener más información, consulte Upload and download files via webshell.
Mediante la consola de SAE: ejecute la depuración remota.
-
Mediante el almacenamiento persistente: Apsara File Storage NAS u Object Storage Service (OSS).
Al desplegar una aplicación, monte NAS u OSS y comparta directorios de archivos.
Carga y descarga en NAS: herramienta Serverless Devs.
Carga y descarga en OSS: consola de OSS.
Carga y descarga en OSS: ossutil tool.
Python
|
Entorno de ejecución |
Fecha de actualización |
Versión del sistema operativo |
Descripción |
|
Python 3.9.15 |
2022-10-11 |
Debian 11.0 |
.NET Core
Para facilitar el desarrollo y el despliegue, las imágenes base de SAE se construyen a partir de las imágenes base oficiales de .NET. Además, incluyen herramientas comunes de solución de problemas y paquetes de fuentes preconfigurados.
Versión | Imagen base | Sistema operativo | 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) |
|