使用代码包部署应用
通过代码包部署应用时,SAE支持的技术栈语言和运行环境如下,部署前需要先制作符合SAE要求的代码包。如果以下列表不包含您使用的技术栈语言和运行环境,则需要使用镜像部署应用。
Java
运行环境 | 更新时间 | JDK版本 | 操作系统版本 | 是否开源 | 是否维护 | 说明 |
Dragonwell 21 | 2024-07-18 | 21.0.3.0.3+9 | CentOS Linux release 7.9.2009 | 是 | 是 | 更多信息,请见:开源版Dragonwell 21。 |
Dragonwell 17 | 2022-07-11 | 17.0.3.0.3+7 | CentOS Linux release 7.9.2009 | 是 | 是 | 更多信息,请参见开源版Dragonwell 17。 |
Dragonwell 11 | 2021-08-27 | 11.0.10.10-AJDK | CentOS Linux release 7.9.2009 | 否 | 是 |
|
2020-09-27 | 更多信息,请参见开源版Dragonwell 11。 | |||||
Dragonwell 8 | 2021-10-18 | 1.8.0_302 | CentOS Linux release 7.9.2009 | 是 | 是 | 修复小概率CPU占用高的情况。 |
2021-08-27 |
| |||||
2020-09-27 | 默认开启Wisp协程,Netty NIO兼容性问题自查等。更多信息,请参见开源版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结合PHP-FPM
SAE针对PHP Web应用,默认提供LNMP(Linux+Nginx+MySQL+PHP)的运行时环境,包含如下内容:
使用官方PHP-FPM基础镜像。
内置官方Nginx。
内置常见PHP扩展。
若您的应用依赖其他资源,可使用如下阿里云其他产品:
应用监控:ARMS
针对PHP 5.4~7.3版本的SAE应用,您可以通过开启应用监控,获得应用间调用链Tracing、云数据库RDS MySQL和云数据库 Tair(兼容 Redis)的资源访问延迟等更详细的监控信息。更多信息,请参见以下文档:
PHP运行时说明
软件版本
当前公开可用的PHP环境说明如下。如果您需要更高版本的PHP环境,请加入钉群(钉群号: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应用程序默认目录,默认对应Demo包中./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进程管理器(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文件来扩展内置,包括官方与PECL扩展。具体操作,请参见设置PHP应用配置文件。
在Webshell内执行以下命令,获取具体的内置扩展。关于如何打开Webshell,请参见查看Webshell。
php -m
不同运行环境的扩展内置支持,输出示例如下:
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
通过控制台与API安装扩展
安装第三方扩展
本文以PHP-FPM 7.3环境,源码编译安装YAML扩展为例,演示如何安装第三方扩展。
创建一个运行环境为PHP 7.3的SAE应用。
开通公网访问。具体操作,请参见配置NAT网关使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.so
通过Webshell登录实例,确认扩展加载成功。
# php -m | grep yaml yaml
常见配置说明
默认服务端口
SAE配置的Nginx、PHP-FPM程序默认的服务端口值如下:
程序 | 端口 |
Nginx |
|
PHP-FPM |
|
PHP-FPM日志:标准输出
PHP-FPM日志,默认输出到实时日志。配置如下,配置文件路径为/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
PHP错误日志,默认未配置展示。配置如下,来源php.ini文件:
error_log => no value => no value log_errors => Off => Off log_errors_max_len => 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代码,您可以配置php.ini开启或关闭OPcache。SAE默认开启OPcache。具体配置,请参考OPcache运行时配置。
开启OPcache:适用于在线网站,提升代码执行速度,降低磁盘IO。
关闭OPcache:适用于调试场景,代码变更可实时生效。
php.ini
配置如下:
; 开启 OPcache
opcache.enable=1
; 关闭 OPcache
;opcache.enable=0
文件缓存:PHP代码
针对大量静态文件,例如图片、视频、CSS和JS文件等,您可以开启或关闭Nginx静态文件缓存。具体配置,请参见Demo和Module ngx_http_headers_module。
开启静态资源缓存:适用于在线服务、大量媒体文件站点等场景,提升带宽吞吐能力、降低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 -s reload
热重启php-fpm(有一定概率断流,需要检查php.ini配置)
ps uax | grep 'php-fpm: master' | grep -v grep | awk '{print $2}' | xargs kill -USR2
上传下载
SAE支持多种上传下载文件的方式,您可以按需选择:
控制台:小文件调试上传下载(文件大小不超过10 MB)。
上传下载:SAE控制台。具体操作,请参见使用Webshell实现文件上传下载。
控制台:远程调试。
持久化存储:NAS或OSS。
部署应用时,可挂载NAS或OSS ,共享文件目录。
上传下载NAS:Serverless Devs工具。
上传下载OSS:OSS控制台。
上传下载OSS:ossutil工具。
Python
运行环境 | 更新时间 | 操作系统版本 | 说明 |
Python 3.9.15 | 2022-10-11 | Debian 11.0 | 更多信息,请见:Python 3.9.15。 |
.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) |
|