Ao implantar um aplicativo usando um pacote de código, o Serverless App Engine (SAE) oferece suporte às seguintes pilhas de tecnologia e ambientes de execução. Antes da implantação, você precisa {{XREF_0}}. Se a linguagem da sua pilha de tecnologia e o ambiente de execução não estiverem listados abaixo, você precisa {{XREF_1}}.
Java
Ambiente de execução | Data de atualização | Versão do JDK | Versão do sistema operacional | Código aberto | Mantido | Descrição |
Dragonwell 21 | 2024-07-18 | 21.0.3.0.3+9 | CentOS Linux release 7.9.2009 | Sim | Sim | |
Dragonwell 17 | 2022-07-11 | 17.0.3.0.3+7 | CentOS Linux release 7.9.2009 | Sim | Sim | |
Dragonwell 11 | 2021-08-27 | 11.0.10.10-AJDK | CentOS Linux release 7.9.2009 | Não | Sim |
|
2020-09-27 | ||||||
Dragonwell 8 | 2021-10-18 | 1.8.0_302 | CentOS Linux release 7.9.2009 | Sim | Sim | Problema ocasional de alto uso de CPU corrigido. |
2021-08-27 |
| |||||
2020-09-27 | Recursos habilitados, como a corrotina Wisp e a verificação automática de compatibilidade com o cliente NIO Netty. Para obter mais informações, consulte Dragonwell 8 de código aberto. | |||||
OpenJDK 8 | 2019-06-19 | 1.8.0_191 | CentOS Linux release 7.6.1810 | Sim | Não | Nenhum |
OpenJDK 7 | 2019-02-25 | 1.7.0_201 | CentOS Linux release 7.6.1810 | Sim | Não | Nenhum |
openjdk-8u191-jdk-alpine3.9 | 2019-02-25 | 1.8.0_191 | alpine 3.9.2 | Sim | Não | Alguns comandos na imagem alpine diferem dos usados no CentOS. Por exemplo:
|
openjdk-7u201-jdk-alpine3.9 | 2019-02-25 | 1.7.0_201 | alpine 3.9.2 | Sim | Não | Alguns comandos na imagem alpine diferem dos usados no CentOS. Por exemplo:
|
PHP
Introdução ao ambiente de execução
Aplicativos online: NGINX com PHP-FPM
SAE fornece um ambiente de execução LNMP (Linux+NGINX+MySQL+PHP) para aplicativos web PHP, que inclui:
A imagem base padrão do PHP FastCGI Process Manager (FPM).
NGINX.
Extensões comuns do PHP.
Se o seu aplicativo exigir mais recursos, você pode utilizar os seguintes services da Alibaba Cloud:
Monitoramento de aplicativos: ARMS
Para aplicativos do SAE com versões do PHP de 5.4 a 7.3, ative o monitoramento de aplicativos para obter informações mais detalhadas, como o rastreamento da cadeia de chamadas do aplicativo e a latência de acesso a recursos para o ApsaraDB RDS MySQL e Tair (compatível com Redis OSS-compatible).Para obter mais informações, consulte {{XREF_4}}.
Descrição do ambiente de execução PHP
Versões de software
A tabela a seguir descreve os ambientes de execução PHP disponíveis. Se você precisar de uma versão superior do ambiente PHP, entre no grupo do DingTalk (Número do grupo: 32874633) para consultar os especialistas técnicos do product.
Ambiente de execução | Data de atualização | Versão do PHP | Versão do NGINX | Versão do sistema operacional | Descrição |
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 | Nenhum |
PHP-FPM 7.1 | 2021-09-17 | 7.1.33 | 1.18.0 | Debian 10.2 | Nenhum |
PHP-FPM 7.0 | 2021-09-17 | 7.0.33 | 1.18.0 | Debian 9.6 | Nenhum |
PHP-FPM 5.6 | 2021-09-17 | 5.6.40 | 1.18.0 | Debian 9.6 | Nenhum |
PHP-FPM 5.5 | 2021-09-17 | 5.5.38 | 1.18.0 | Debian 8.5 | Nenhum |
PHP-FPM 5.4 | 2021-09-17 | 5.4.45 | 1.18.0 | Debian 8.2 | Nenhum |
Diretórios do sistema
O ambiente PHP do SAE usa os seguintes diretórios por padrão para a implantação do pacote de aplicativos:
Tipo | Caminho | Descrição |
Diretório | /home/admin/app/ | Diretório padrão onde os pacotes de aplicativos são implantados. |
Diretório | /home/admin/app/nginx/ |
|
Diretório | /home/admin/app/php/ | Diretório padrão de aplicativos PHP, que corresponde ao diretório ./php/ no pacote de demonstração. |
Arquivo | /usr/local/etc/php.ini | Caminho de configuração php.ini recomendado para o SAE. |
A tabela a seguir descreve as configurações padrão do PHP-FPM:
|
Tipo |
Caminho |
Descrição |
|
Diretório |
/usr/local/etc/php |
|
|
Diretório |
/usr/local/etc/php/conf.d/ |
Diretório onde as extensões do PHP são armazenadas. Por padrão, as extensões são incluídas em arquivos .ini. |
|
Arquivo |
/usr/local/etc/php-fpm.conf |
Arquivo de configuração padrão para o PHP-FPM. Para obter mais informações, consulte FastCGI Process Manager (FPM). Para saber como modificar a configuração, consulte {{XREF_7}}. |
A tabela a seguir descreve as configurações padrão do NGINX:
|
Tipo |
Caminho |
Descrição |
|
Arquivo |
/usr/sbin/nginx |
Diretório do NGINX. |
|
Diretório |
/etc/nginx/ |
Diretório das configurações padrão do NGINX. |
|
Arquivo |
/etc/nginx/nginx.conf |
Arquivo de configuração padrão do NGINX nginx.conf, que inclui a configuração |
Extensões integradas
O ambiente PHP fornecido pelo SAE oferece suporte às seguintes extensões:
Extensões padrão do PHP: Lançadas com as atualizações de versão do PHP.
Extensões da comunidade PHP PECL: Lançadas de forma independente e mantidas pela comunidade.
Permissões relacionadas
Por padrão, o PHP-FPM e o NGINX usam o usuário www-data para executar aplicativos. A tabela a seguir descreve as permissões.
Service | Permissão de usuário e grupo | Descrição |
PHP-FPM | Processo | Padrão do PHP, o caminho do arquivo de configuração é /usr/local/etc/php-fpm.conf. |
NGINX | Processo | Padrão do NGINX, o caminho do arquivo de configuração é /etc/nginx/nginx.conf. |
Diretório de arquivos | Diretório | Diretório onde os pacotes de código são implantados, o diretório de configuração é /home/admin/app/. Veja o seguinte exemplo: |
Recomendamos que você mantenha o usuário para evitar falhas no aplicativo.
Suporte a extensões PHP
Extensões padrão e PECL
Ao implantar um aplicativo, configure o arquivo php.ini para especificar as extensões integradas, incluindo as extensões padrão do PHP e as extensões PECL.
Execute o seguinte comando no webshell para visualizar as extensões integradas. Para saber como abrir o webshell, consulte {{XREF_9}}.
php -m
Exemplos de extensões integradas com suporte em diferentes ambientes de execução:
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
Instalar extensões pelo console e API
Ative as extensões padrão do PHP ou instale versões específicas de extensões PECL pelo console do SAE ou pela API. Para obter mais informações, consulte {{XREF_10}}.
Instalar extensões de terceiros
Esta seção descreve como instalar uma extensão de terceiros compilando o código-fonte da extensão YAML no PHP-FPM 7.3.
Crie um aplicativo do SAE com o PHP 7.3 como ambiente de execução.
Ative o acesso à Internet.
-
Acesse a instância usando o webshell e execute os seguintes comandos para compilar e instalar a extensão:
# 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 -
Baixe a extensão para a sua máquina local. Para obter mais informações, consulte {{XREF_12}}.
Diretório da extensão:
/home/admin/yaml-2.2.2/modules/yaml.so -
Inclua a extensão no pacote ZIP do aplicativo. Estrutura do pacote ZIP:
. ├── nginx │ ├── default.conf │ ├── fastcgi_params │ ├── global │ └── root.dir ├── php │ ├── index.php └── extensions └── yaml.so -
Implante o aplicativo, faça o upload do pacote ZIP que contém a extensão e adicione a configuração da extensão ao arquivo php.ini para ativá-la.
extension=/home/admin/app/extensions/yaml.so -
Acesse a instância usando o webshell e verifique se a extensão foi carregada.
# php -m | grep yaml yaml
Configurações comuns
Portas de service padrão
A tabela a seguir descreve as portas de service padrão do NGINX e do PHP-FPM configuradas pelo SAE:
|
Programa |
Porta |
|
NGINX |
|
|
PHP-FPM |
|
Logs do PHP-FPM: saída padrão
-
Os logs do PHP-FPM estão contidos nos logs em tempo real. O código de exemplo a seguir mostra a configuração de log no arquivo /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 -
Os logs de erro do PHP que não são exibidos. O código de exemplo a seguir mostra a configuração de log no arquivo php.ini.
error_log => no value => no value log_errors => Off => Off log_errors_max_len => 1024 => 1024 -
Para incluir os logs de erro nos logs em tempo real, configure o arquivo php.ini ao criar ou implantar um aplicativo. Especifique o seguinte diretório para armazenar os logs de erro:
log_errors = on error_log = /proc/self/fd/2
Logs do NGINX: saída padrão
-
Os logs do NGINX estão contidos nos logs em tempo real. O código de exemplo a seguir mostra a configuração de log no arquivo ./nginx/default.conf:
#access_log /dev/stdout; error_log stderr; Ative o
access_log. Por padrão, os logs estão contidos nos logs em tempo real.
Cache de arquivos: arquivos estáticos, imagens e mídias
Configure o arquivo php.ini para definir se o OPcache será ativado para o PHP. SAE ativa o OPcache por padrão. Para obter mais informações sobre a configuração, consulte Configuração de tempo de execução do OPcache.
Ativar o OPcache: adequado para sites online, pois acelera a execução do código e reduz a entrada/saída (I/O) do disco.
Desativar o OPcache: adequado para cenários de depuração. As modificações no código entram em vigor imediatamente.
O código de exemplo a seguir mostra a configuração do php.ini:
; Enable OPcache
opcache.enable=1
; Disable OPcache
;opcache.enable=0
Cache de arquivos: código PHP
Ative ou desative o cache no NGINX para vários arquivos estáticos, como imagens, vídeos, arquivos CSS (Cascading Style Sheets) e arquivos JavaScript. Para obter mais informações sobre a configuração, consulte Módulo ngx_http_headers_module.
Ativar o cache de recursos estáticos: adequado para services e sites online que carregam muitos arquivos de mídia. Melhora o throughput de tráfego e reduz as operações de leitura de entrada/saída por segundo (IOPS).
Desativar o cache de recursos estáticos: adequado para depuração remota, upload e download, e outros cenários de uso. Permite o acesso aos arquivos em tempo real.
O código de exemplo a seguir mostra a configuração do ./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;
}
Recursos avançados
Reinicialização a quente de services
O ConfigMap permite modificar as configurações sem interromper os services.
-
O Webshell permite reiniciar os services sem interrupções.
-
Reinicialização a quente do NGINX
# Test the validity of the configuration file nginx -t # Restart NGINX without service interruptions nginx -s reload -
Reinicialização a quente do PHP-FPM (Há uma certa probabilidade de interrupção do fluxo. Verifique a configuração do php.ini.)
ps uax | grep 'php-fpm: master' | grep -v grep | awk '{print $2}' | xargs kill -USR2
-
Upload e download
O SAE oferece vários métodos para upload e download de arquivos. Selecione um dos seguintes métodos de acordo com os requisitos do seu negócio:
Console do SAE: faça o upload e o download de arquivos para depuração. O tamanho do arquivo não pode exceder 10 MB. Para obter mais informações, consulte {{XREF_13}}.
Console do SAE: realize a depuração remota.
-
Armazenamento persistente: Apsara File Storage NAS ou Object Storage Service (OSS).
Ao implantar um aplicativo, monte o NAS ou o OSS e compartilhe diretórios de arquivos.
Upload e download no NAS: ferramenta Serverless Devs.
Upload e download no OSS: console do OSS.
Upload e download no OSS: {{XREF_14}}.
Python
|
Ambiente de execução |
Data de atualização |
Versão do sistema operacional |
Descrição |
|
Python 3.9.15 |
2022-10-11 |
Debian 11.0 |
.NET Core
Para facilitar o desenvolvimento e a implantação, as imagens base do SAE são construídas com base nas imagens base oficiais do .NET e vêm pré-configuradas com ferramentas comuns de solução de problemas e pacotes de fontes.
Versão | Imagem base | Sistema operacional | Ambiente de execução |
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) |
|