通過程式碼封裝部署應用時,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 21 | 2023-09-19 | 21 | Debian 11 | 是 | 是 | 無 |
OpenJDK 17 | 2021-09-14 | 17.0.2 | Debian 11 | 是 | 是 | ARMS服務建議使用JDK 17.0.9+ |
OpenJDK 11 | 2018-09-25 | 11.0.16 | Debian 11 | 是 | 是 | ARMS服務建議使用JDK 11.0.17+ |
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 | 是 | 否 | ARMS服務已不再支援此版本 |
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)的資源訪問延遲等更詳細的監控資訊。更多資訊,請參見ARMS應用監控概覽。
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 OPcachePECL 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 OPcachePECL 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 OPcachePECL 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 OPcachePECL 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 OPcachePECL 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 OPcachePECL 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應用。
開通公網訪問。
通過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/2PHP錯誤記錄檔,預設未配置展示。配置如下,來源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) |
|
9.0 | mcr.microsoft.com/dotnet/aspnet:9.0 | Debian GNU/Linux 12 (bookworm) |
|
HTML
運行環境 | Nginx版本 | 基礎鏡像 | 作業系統版本 |
nginx 1.20 | 1.20.2 | nginx:1.20 | Debian GNU/Linux 11 (bullseye) |
nginx 1.22 | 1.22.1 | nginx:1.22 | Debian GNU/Linux 11 (bullseye) |
nginx 1.24 | 1.24.0 | nginx:1.24 | Debian GNU/Linux 11 (bullseye) |
nginx 1.26 | 1.26.3 | nginx:1.26 | Debian GNU/Linux 12 (bookworm) |
nginx 1.28 | 1.28.0 | nginx:1.28 | Debian GNU/Linux 12 (bookworm) |