Bir kod paketi kullanarak uygulama dağıtırken Serverless App Engine (SAE), aşağıdaki teknoloji yığınlarını ve çalışma zamanı ortamlarını destekler. Dağıtımdan önce, SAE gereksinimlerini karşılayan bir kod paketi oluşturmanız gerekir. Teknoloji yığını diliniz ve çalışma zamanı ortamınız aşağıda listelenmemişse, görüntü kullanarak uygulama dağıtmanız gerekir.
Java
Çalışma zamanı ortamı | Güncelleme tarihi | JDK sürümü | İşletim sistemi sürümü | Açık kaynak | Bakımı yapılıyor | Açıklama |
Dragonwell 21 | 2024-07-18 | 21.0.3.0.3+9 | CentOS Linux release 7.9.2009 | Evet | Evet | |
Dragonwell 17 | 2022-07-11 | 17.0.3.0.3+7 | CentOS Linux release 7.9.2009 | Evet | Evet | |
Dragonwell 11 | 2021-08-27 | 11.0.10.10-AJDK | CentOS Linux release 7.9.2009 | Hayır | Evet |
|
2020-09-27 | ||||||
Dragonwell 8 | 2021-10-18 | 1.8.0_302 | CentOS Linux release 7.9.2009 | Evet | Evet | Yüksek CPU kullanımına neden olan ara sıra ortaya çıkan sorun giderildi. |
2021-08-27 |
| |||||
2020-09-27 | Wisp coroutine gibi özellikler ve NIO istemcisi Netty ile uyumluluğun kendi kendini denetleme özelliği etkinleştirildi. Daha fazla bilgi için bkz. Açık kaynak Dragonwell 8. | |||||
OpenJDK 8 | 2019-06-19 | 1.8.0_191 | CentOS Linux release 7.6.1810 | Evet | Hayır | Yok |
OpenJDK 7 | 2019-02-25 | 1.7.0_201 | CentOS Linux release 7.6.1810 | Evet | Hayır | Yok |
openjdk-8u191-jdk-alpine3.9 | 2019-02-25 | 1.8.0_191 | alpine 3.9.2 | Evet | Hayır | Alpine görüntüsündeki bazı komutlar CentOS'takilerden farklıdır. Örneğin:
|
openjdk-7u201-jdk-alpine3.9 | 2019-02-25 | 1.7.0_201 | alpine 3.9.2 | Evet | Hayır | Alpine görüntüsündeki bazı komutlar CentOS'takilerden farklıdır. Örneğin:
|
PHP
Çalışma zamanı tanıtımı
Çevrimiçi uygulamalar: NGINX ile PHP-FPM
SAE, PHP web uygulamaları için Linux+NGINX+MySQL+PHP (LNMP) çalışma zamanı ortamı sağlar. Bu ortam şunları içerir:
PHP FastCGI Process Manager (FPM) varsayılan temel görüntüsü.
NGINX.
Yaygın PHP uzantıları.
Uygulamanız daha fazla kaynağa ihtiyaç duyuyorsa aşağıdaki Alibaba Cloud hizmetlerini kullanabilirsiniz:
Uygulama izleme: ARMS
PHP sürümleri 5,4 ile 7,3 arasında olan SAE uygulamaları için, ApsaraDB RDS MySQL ve Tair (Redis OSS uyumlu) gibi kaynaklara erişim gecikmesi ve uygulama çağrı zinciri izleme gibi daha ayrıntılı izleme bilgilerini elde etmek amacıyla uygulama izlemeyi etkinleştirebilirsiniz.Daha fazla bilgi için bkz. ARMS uygulama izlemeye genel bakış.
PHP çalışma zamanı açıklaması
Yazılım sürümleri
Aşağıdaki tabloda kullanılabilir PHP çalışma zamanı ortamları açıklanmaktadır. Daha yüksek bir PHP ortam sürümüne ihtiyacınız varsa ürün teknik uzmanlarına danışmak için DingTalk grubuna (Grup numarası: 32874633) katılın.
Çalışma zamanı ortamı | Güncelleme tarihi | PHP sürümü | NGINX sürümü | İşletim sistemi sürümü | Açıklama |
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 | Yok |
PHP-FPM 7.1 | 2021-09-17 | 7.1.33 | 1.18.0 | Debian 10.2 | Yok |
PHP-FPM 7.0 | 2021-09-17 | 7.0.33 | 1.18.0 | Debian 9.6 | Yok |
PHP-FPM 5.6 | 2021-09-17 | 5.6.40 | 1.18.0 | Debian 9.6 | Yok |
PHP-FPM 5.5 | 2021-09-17 | 5.5.38 | 1.18.0 | Debian 8.5 | Yok |
PHP-FPM 5.4 | 2021-09-17 | 5.4.45 | 1.18.0 | Debian 8.2 | Yok |
Sistem dizinleri
SAE PHP ortamı, uygulama paketi dağıtımı için varsayılan olarak aşağıdaki dizinleri kullanır:
Tür | Yol | Açıklama |
Dizin | /home/admin/app/ | Uygulama paketlerinin dağıtıldığı varsayılan dizin. |
Dizin | /home/admin/app/nginx/ |
|
Dizin | /home/admin/app/php/ | Demo paketindeki ./php/ dizinine karşılık gelen varsayılan PHP uygulama dizini. |
Dosya | /usr/local/etc/php.ini | SAE için önerilen php.ini yapılandırma yolu. |
Aşağıdaki tabloda PHP-FPM'nin varsayılan yapılandırmaları açıklanmaktadır:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aşağıdaki tabloda NGINX'in varsayılan yapılandırmaları açıklanmaktadır:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yerleşik uzantılar
SAE tarafından sağlanan PHP ortamı aşağıdaki uzantıları destekler:
Varsayılan PHP uzantıları: PHP sürüm güncellemeleriyle birlikte yayımlanır.
PHP PECL topluluk uzantıları: Bağımsız olarak yayımlanır ve topluluk tarafından bakımı yapılır.
İlgili izinler
Varsayılan olarak PHP-FPM ve NGINX uygulamaları www-data kullanıcısı ile çalıştırır. Aşağıdaki tabloda izinler açıklanmaktadır.
Hizmet | İzin KULLANICI GRUBU | Açıklama |
PHP-FPM | İşlem | PHP varsayılanı, yapılandırma dosyası yolu /usr/local/etc/php-fpm.conf. |
NGINX | İşlem | NGINX varsayılanı, yapılandırma dosyası yolu /etc/nginx/nginx.conf. |
Dosya dizini | Dizin | Kod paketlerinin dağıtıldığı dizin, yapılandırma dizini /home/admin/app/. Aşağıdaki örneğe bakın: |
Uygulama hatalarını önlemek için kullanıcıyı korumanızı öneririz.
PHP uzantı desteği
Varsayılan ve PECL uzantıları
Bir uygulama dağıtırken, varsayılan PHP uzantıları ve PECL uzantıları dahil olmak üzere yerleşik uzantıları belirtmek için php.ini dosyasını yapılandırabilirsiniz.
Web kabuğunda yerleşik uzantıları görüntülemek için aşağıdaki komutu çalıştırın. Web kabuğunu açma hakkında bilgi için bkz. Web kabuğunu görüntüleme.
php -m
Farklı çalışma zamanı ortamları tarafından desteklenen yerleşik uzantılara örnekler:
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
Konsol ve API aracılığıyla uzantıları yükleme
SAE konsolu veya API aracılığıyla varsayılan PHP uzantılarını etkinleştirebilir veya belirli sürümlerdeki PECL uzantılarını yükleyebilirsiniz. Daha fazla bilgi için bkz. PHP uygulaması dağıtma.
Üçüncü taraf uzantıları yükleme
Bu bölümde, PHP-FPM 7.3'te kaynak kodunu içeren YAML dosyasını derleyerek üçüncü taraf bir uzantının nasıl yükleneceği açıklanmaktadır.
Çalışma zamanı ortamı olarak PHP 7.3 kullanan bir SAE uygulaması oluşturun.
İnternet erişimini etkinleştirin.
-
Web kabuğunu kullanarak örnekte oturum açın ve uzantıyı derleyip yüklemek için aşağıdaki komutları çalıştırı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 -
Uzantıyı yerel makinenize indirin. Daha fazla bilgi için bkz. Günlükler aracılığıyla uygulamaları tanılamak için dosya yükleme ve indirme.
Uzantı dizini:
/home/admin/yaml-2.2.2/modules/yaml.so -
Uzantıyı uygulamanın ZIP paketine ekleyin. ZIP paketi yapısı:
. ├── nginx │ ├── default.conf │ ├── fastcgi_params │ ├── global │ └── root.dir ├── php │ ├── index.php └── extensions └── yaml.so -
Uygulamayı dağıtın, uzantıyı içeren ZIP paketini yükleyin ve ardından uzantıyı etkinleştirmek için php.ini dosyasına uzantı yapılandırmasını ekleyin.
extension=/home/admin/app/extensions/yaml.so -
Web kabuğunu kullanarak örnekte oturum açın ve uzantının yüklenip yüklenmediğini kontrol edin.
# php -m | grep yaml yaml
Yaygın yapılandırmalar
Varsayılan hizmet bağlantı noktaları
Aşağıdaki tabloda SAE tarafından yapılandırılan NGINX ve PHP-FPM'nin varsayılan hizmet bağlantı noktaları açıklanmaktadır:
|
|
|
|
|
|
|
|
|
PHP-FPM günlükleri: standart çıkış
-
PHP-FPM günlükleri gerçek zamanlı günlüklerde bulunur. Aşağıdaki örnek kod, /usr/local/etc/php-fpm.d/docker.conf dosyasındaki günlük yapılandırmasına örnek teşkil eder:
[global] error_log = /proc/self/fd/2 log_limit = 8192 [www] access.log = /proc/self/fd/2 -
Görüntülenmeyen PHP hata günlükleri. Aşağıdaki örnek kod, php.ini dosyasındaki günlük yapılandırmasına örnek teşkil eder.
error_log => no value => no value log_errors => Off => Off log_errors_max_len => 1024 => 1024 -
Hata günlüklerini gerçek zamanlı günlüklere dahil etmek istiyorsanız bir uygulama oluştururken veya dağıtırken php.ini dosyasını yapılandırmanız gerekir. Hata günlüklerini depolamak için aşağıdaki dizini belirtmeniz gerekir:
log_errors = on error_log = /proc/self/fd/2
NGINX günlükleri: standart çıkış
-
NGINX günlükleri gerçek zamanlı günlüklerde bulunur. Aşağıdaki örnek kod, ./nginx/default.conf dosyasındaki günlük yapılandırmasına örnek teşkil eder:
#access_log /dev/stdout; error_log stderr; access_logözelliğini etkinleştirebilirsiniz. Varsayılan olarak günlükler gerçek zamanlı günlüklerde bulunur.
Dosya önbelleğe alma: statik dosyalar, resimler ve medya
PHP için OPcache'in etkinleştirilip etkinleştirilmeyeceğini belirlemek üzere php.ini dosyasını yapılandırabilirsiniz. SAE varsayılan olarak OPcache'i etkinleştirir. Yapılandırma hakkında daha fazla bilgi için bkz. OPcache çalışma zamanı yapılandırması.
OPcache'i etkinleştirin: Bu seçenek, kod yürütmeyi hızlandırmak ve disk giriş/çıkış (G/Ç) işlemlerini azaltmak için çevrimiçi web sitelerine uygundur.
OPcache'i devre dışı bırakın: Bu seçenek hata ayıklama senaryolarına uygundur. Kod değişiklikleri hemen etkili olur.
Aşağıdaki örnek kod, php.ini yapılandırmasına örnek teşkil eder:
; Enable OPcache
opcache.enable=1
; Disable OPcache
;opcache.enable=0
Dosya önbelleğe alma: PHP kodu
Resimler, videolar, Cascading Style Sheets (CSS) dosyaları ve JavaScript dosyaları gibi birçok statik dosya için NGINX'te önbelleğe almayı etkinleştirebilir veya devre dışı bırakabilirsiniz. Yapılandırma hakkında daha fazla bilgi için bkz. Module ngx_http_headers_module.
Statik kaynak önbelleğe almayı etkinleştirin: Bu seçenek, çok sayıda medya dosyası yükleyen çevrimiçi hizmetlere ve web sitelerine uygundur. Bu, trafik aktarım hızını artırır ve saniye başına okuma giriş/çıkış işlemi sayısını (IOPS) azaltır.
Statik kaynak önbelleğe almayı devre dışı bırakın: Bu seçenek, uzaktan hata ayıklama, yükleme ve indirme gibi diğer kullanım senaryolarına uygundur. Dosyalara gerçek zamanlı olarak erişebilirsiniz.
Aşağıdaki örnek kod, ./nginx/default.conf yapılandırmasına örnek teşkil eder:
# 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;
}
Gelişmiş özellikler
Hizmetlerin sıcak yeniden başlatılması
ConfigMap, hizmetleri kesintiye uğratmadan yapılandırmaları değiştirmenize olanak tanır.
-
Webshell, hizmetleri kesintiye uğratmadan yeniden başlatmanıza olanak tanır.
-
NGINX'in sıcak yeniden başlatılması
# Test the validity of the configuration file nginx -t # Restart NGINX without service interruptions nginx -s reload -
PHP-FPM'nin sıcak yeniden başlatılması (Akış kesintisi oluşma olasılığı vardır. php.ini yapılandırmasını kontrol etmeniz gerekir.)
ps uax | grep 'php-fpm: master' | grep -v grep | awk '{print $2}' | xargs kill -USR2
-
Yükleme ve indirme
SAE, dosya yüklemenize ve indirmenize olanak tanıyan birden çok yöntem sağlar. İş gereksinimlerinize göre aşağıdaki yöntemlerden birini seçebilirsiniz:
SAE konsolunu kullanın: Hata ayıklama için dosya yükleyebilir ve indirebilirsiniz. Dosya boyutu 10 MB'ı aşamaz. Daha fazla bilgi için bkz. Web kabuğu aracılığıyla dosya yükleme ve indirme.
SAE konsolunu kullanın: Uzaktan hata ayıklama yapabilirsiniz.
-
Kalıcı depolamayı kullanın: Apsara File Storage NAS veya Object Storage Service (OSS).
Bir uygulama dağıtırken NAS veya OSS bağlayabilir ve dosya dizinlerini paylaşabilirsiniz.
NAS yükleme ve indirme: Serverless Devs aracı.
OSS yükleme ve indirme: OSS konsolu.
OSS yükleme ve indirme: ossutil aracı.
Python
|
|
|
|
|
|
|
|
|
.NET Core
Geliştirme ve dağıtımı kolaylaştırmak için SAE temel görüntüleri resmi .NET temel görüntülerine dayalı olarak oluşturulmuş ve yaygın sorun giderme araçları ile yazı tipi paketleri önceden yapılandırılmıştır.
Sürüm | Temel görüntü | İşletim sistemi | Çalışma zamanı |
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) |
|