SAE, dağıtımdan önce kod paketlerinin belirli bir dizin yapısına uygun olmasını gerektirir. Bu konuda Java, PHP, Python ve .NET Core uygulamaları için uyumlu paketlerin nasıl oluşturulacağı açıklanmaktadır.
| Çalışma zamanı | Paket biçimi | Temel gereksinim |
|---|---|---|
| Java | JAR veya WAR | Özel yapı gerekmez |
| PHP | ZIP | nginx/ ve php/ dizinleri ZIP dosyasının kökünde bulunmalıdır |
| Python | ZIP | Dosyalar ZIP dosyasının kökünde yer almalıdır; dışta bir dizin olmamalıdır |
| .NET Core | ZIP | start.sh ve derleme çıktısı ZIP dosyasının kökünde bulunmalıdır |
Java
SAE için JAR veya WAR paketleri oluşturmak standart Java paketleme işlemiyle aynıdır; özel bir adım gerekmez.
Dağıtım yapmak için WAR veya JAR paketlerini kullanarak Java uygulamalarını dağıtma konusuna bakın.
PHP
Paketleme gereksinimleri
ZIP paketinizin aşağıdaki gereksinimleri karşılaması gerekir:
nginx/vephp/dizinleri ZIP dosyasının kökünde yer almalıdır; bunlar üst bir klasörün içinde iç içe geçmiş olmamalıdır. Dizinler iç içe geçerse SAE yapılandırma dosyalarını veya giriş noktasını bulamaz ve dağıtım başarısız olur.php/içindeki kod dosyalarını kendi uygulama kodunuzla değiştirin.nginx/içindeki yapılandırma dosyalarını gerektiği gibi değiştirin.
Adım 1: Örnek paketi indirip ayıklayın
hello-sae-php.zip dosyasını indirin ve ayıklayın. Dizin yapısı şu şekildedir:
.
├── nginx
│ ├── default.conf
│ ├── fastcgi_params
│ └── root.dir
└── php # Program directory
├── index.php # Entry point
└── phpinfo.php
Adım 2: Kodunuzu değiştirin ve yapılandırmayı güncelleyin
php/ içindeki dosyaları kendi uygulama kodunuzla değiştirin.
Uygulamanız varsayılan olmayan ayarlar kullanıyorsa nginx yapılandırmasını güncelleyin:
| Yapılandırma öğesi | Varsayılan değer | Nasıl değiştirilir |
|---|---|---|
| Bağlantı noktası | 80 | default.conf dosyasında, server{ } bloğunun ilk satırına listen <port>; (örneğin listen 8080;) ekleyin. |
| Giriş noktası dosya adı | index.php |
default.conf dosyasında index index.php index.html index.htm; ifadesini index <your-entry-filename>; olarak ve fastcgi_index index.php; ifadesini fastcgi_index <your-entry-filename>; olarak güncelleyin. |
| Program dizini adı | php |
root.dir dosyasında root /home/admin/app/php; ifadesini root /home/admin/app/<your-directory-name>; olarak güncelleyin. |
Adım 3: ZIP dosyası olarak paketleyin
Geçerli dizinin içeriğini — dizinin kendisini değil — ZIP dosyası olarak paketleyin:
zip -r my-php-app.zip nginx php
Üst klasör eklemeyin. nginx ve php dizinleri ZIP dosyasının kökünde görünmelidir.
Adım 4: Dağıtın
Python
Paketleme gereksinimleri
ZIP paketinizin aşağıdaki gereksinimleri karşılaması gerekir:
Proje kökünün içindeki dosya ve klasörleri paketleyin; proje kökü dizinini doğrudan paketlemeyin. Dıştaki dizini dahil ederseniz SAE uygulama dosyalarınızı bulamaz ve dağıtım başarısız olur.
Uygulamanızda bir
requirements.txtdosyası varsa bunu ZIP dosyasının köküne yerleştirin. SAE, dağıtım sırasında yazılım bağımlılıklarını otomatik olarak yükler.
Adım 1: Örnek paketi indirip ayıklayın
hello-sae-python.zip dosyasını indirin. Örnek uygulama Flask, Gunicorn ve requirements.txt dosyasında listelenen diğer paketlere bağımlıdır. Dizin yapısı şu şekildedir:
.
├── app
│ └── hello.py
└── requirements.txt (optional; must be in the root directory)
Adım 2: Örneği kendi uygulamanızla değiştirin
Örnek kodu kendi kodunuzla değiştirmek için aşağıdaki komutları çalıştırın:
# Download and extract the sample
wget https://sae-demo-cn-shenzhen.oss-cn-shenzhen.aliyuncs.com/demo/1.0/hello-sae-python.zip
unzip hello-sae-python.zip -d hello-sae-python && rm -rf hello-sae-python.zip && cd hello-sae-python
# Replace the sample code with your Python project
# Replace /path/to/your-python-project/ with your actual project path
rm -rf app/* requirements.txt
cp -r /path/to/your-python-project/. app/
cp -r /path/to/your-python-project/requirements.txt ./
# Package into a ZIP file
zip -r my-python-app.zip app requirements.txt
Adım 3: Dağıtın
.NET Core
Paketleme gereksinimleri
ZIP paketinizin aşağıdaki gereksinimleri karşılaması gerekir:
Derleme çıktı dizininin içindeki dosya ve klasörleri paketleyin; dizinin kendisini doğrudan paketlemeyin. Dıştaki dizini dahil ederseniz SAE uygulama dosyalarını veya başlatma betiğini bulamaz ve dağıtım başarısız olur.
Uygulamanın bir başlatma betiği (örneğin
start.sh) varsa bunu ZIP dosyasının köküne yerleştirin. SAE, dağıtım sırasında bu betiği otomatik olarak çalıştırır.
ZIP dosyası yapısı SAE örneğinde aşağıdaki şekilde eşlenir:
| ZIP yolu | SAE örnek yolu | Açıklama |
|---|---|---|
./start.sh |
/home/admin/start.sh |
Uygulama başlatma betiği |
./your-dotnet-project |
/home/admin/app/nginx/*.conf |
.NET uygulama dosyaları |
Adım 1: .NET SDK'yı kurun
.NET SDK'yı indirin ve yükleyin. SAE tarafından desteklenen bir .NET Core sürümü seçin, ardından kurulumu doğrulayın:
dotnet --version
Komut bir hata döndürürse hata çıktısında listelenen bağımlılık paketlerini yükleyin.
Adım 2: Projeyi derleyin
Bağımlılıkları geri yüklemek ve kaynak kodu derlemek için proje dizininizden aşağıdaki komutları çalıştırın:
# Navigate to your project directory
# Replace /path/to/your-dotnet-project/ with your actual project path
cd /path/to/your-dotnet-project/
# Restore project dependencies
dotnet restore
# Compile the source code
# -c Release: optimizes for production — improves runtime performance and strips debugging information
# -o demo: outputs the build artifacts to the demo/ directory
dotnet build -c Release -o demo
Adım 3: Bir başlatma betiği yazın
Derleme çıktı dizininde bir start.sh dosyası oluşturun ve dosyayı çalıştırılabilir hale getirin:
chmod +x ./start.sh
Adım 4: Dizin yapısını gözden geçirin
Paketlemeden önce derleme çıktısının aşağıdakine benzer olduğunu doğrulayın:
.
├── appsettings.Development.json
├── appsettings.json
├── appsettings.Production.json
├── your-dotnet-project
...
└── start.sh
Adım 5: ZIP dosyası olarak paketleyin
Geçerli dizindeki tüm dosyaları paketleyin:
# demo.zip: the name of the ZIP file to create
# *: packages all files and folders in the current directory
zip -r demo.zip *
Adım 6: Dağıtın
ZIP paketlerini kullanarak .NET Core uygulamalarını dağıtma.