通過程式碼封裝部署應用前,您需要先按照SAE的要求製作程式碼封裝。
Java
製作SAE應用的JAR包或WAR包的方式與您日常打包代碼的方式沒有任何差異。
PHP
下載範例程式碼包hello-sae-php.zip並解壓,目錄結構如下:
. ├── nginx │ ├── default.conf │ ├── fastcgi_params │ └── root.dir ├── php # 程式所在目錄 │ ├── index.php # 程式入口檔案 │ └── phpinfo.php將
php/中的代碼替換為您的業務代碼。按需修改
nginx/中的設定檔。配置項
預設值
如何修改
服務連接埠
80
修改
default.conf檔案,在server{ }中的首行添加listen <port>;(例如listen 8080;)。程式入口檔案名稱
index.php(如範例程式碼所示)
如果您修改了程式入口檔案名稱,請同步執行以下操作:
修改
default.conf檔案,將index index.php index.html index.htm;改為index <程式入口檔案名稱>;,將fastcgi_index index.php;改為fastcgi_index <程式入口檔案名稱>;。程式所在目錄名稱
php(如範例程式碼所示)
如果您修改了程式所在目錄名稱,請同步執行以下操作:
修改
root.dir檔案,將root /home/admin/app/php;改為root /home/admin/app/<程式所在目錄名稱>;將目前的目錄中的內容打包為ZIP包,注意
nginx和php需位於ZIP包的根路徑。
Python
瞭解ZIP打包規範。
打包代碼根目錄檔案或者檔案夾,切勿打包外層目錄。
如果應用存在requirements.txt,需要將其置於根目錄下一同打包,便於部署時SAE自動安裝軟體依賴。
基於樣本hello-sae-python.zip,將您的Python應用打包為ZIP包。樣本的目錄結構如下(範例程式碼依賴Flask、Gunicorn等,詳見requirements.txt):
. ├── app │ └── hello.py └── requirements.txt (需在根目錄,可選)執行如下命令:
# 擷取樣本 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 # 將範例程式碼替換為您的Python程式(將/path/to/your-python-project/替換為您的專案路徑) rm -rf app/* requirements.txt cp -r /path/to/your-python-project/. app/ cp -r /path/to/your-python-project/requirements.txt ./ # 打包成ZIP包 zip -r my-python-app.zip app requirements.txt
.NET Core
瞭解ZIP打包規範。
ZIP目錄
對應SAE執行個體運行時目錄
描述
./start.sh
/home/admin/start.sh
存放應用啟動指令碼。
./your-dotnet-project
/home/admin/app/nginx/*.conf
存放.NET程式。
打包代碼根目錄檔案或者檔案夾,切勿打包外層目錄。
如果應用存在啟動指令碼,如
start.sh檔案等,需要將其置於根目錄下一同打包,便於部署時SAE自動執行啟動指令碼。
下載並安裝.NET SDK,確保選擇SAE支援的.NET Core版本。可以通過執行
dotnet --version驗證是否安裝成功。如果報錯,請按照報錯資訊安裝對應的依賴包。編譯和構建專案,執行如下命令:
# 進入專案路徑(將/path/to/your-dotnet-project/替換為您的專案路徑) cd /path/to/your-dotnet-project/ # 還原專案依賴 dotnet restore # 編譯源碼 dotnet build -c Release -o demo # -c Release:表示最佳化代碼以提高運行時效能,並去除調試資訊,適宜於生產環境部署。 # -o demo:表示構建輸出的目錄為demo。編寫專案的啟動指令碼(如:
start.sh)並為其添加可執行許可權chmod +x ./start.sh。通過tree命令查看目前的目錄結構。
. ├── appsettings.Development.json ├── appsettings.json ├── appsettings.Production.json ├── your-dotnet-project ... └── start.sh打包為ZIP包。
zip -r demo.zip * # demo.zip:表示需要打包成的zip檔案。 # *:表示打包目前的目錄中的所有檔案及檔案夾。