Cara menyiapkan lingkungan Python di Azure App Service (Windows)
Berlaku untuk:
Visual Studio
Visual Studio untuk Mac
Azure App Service adalah penawaran platform-sebagai-layanan untuk aplikasi web, baik itu situs yang diakses melalui browser, REST API yang digunakan oleh klien Anda sendiri, atau pemrosesan yang dipicu peristiwa. App Service sepenuhnya mendukung penggunaan Python untuk mengimplementasikan aplikasi.
Dukungan Python yang dapat disesuaikan untuk Azure App Service disediakan sebagai sekumpulan ekstensi situs App Service yang masing-masing berisi versi tertentu dari runtime Python. Anda kemudian dapat menginstal paket yang diinginkan langsung ke lingkungan tersebut, seperti yang dijelaskan dalam artikel ini. Dengan menyesuaikan lingkungan di App Service itu sendiri, Anda tidak perlu memelihara paket di proyek aplikasi web Anda atau mengunggahnya dengan kode aplikasi.
Pilih versi Python melalui portal Azure
Buat App Service untuk aplikasi web Anda di portal Azure.
Pada halaman App Service, gulir ke bagian Alat Pengembangan, pilih Ekstensi, lalu pilih + Tambahkan.
Gulir ke bawah dalam daftar ke ekstensi yang berisi versi Python yang Anda inginkan:

Tip
Jika Anda memerlukan versi Python yang lebih lama dan tidak melihatnya tercantum di ekstensi situs, Anda masih dapat menginstalnya melalui Azure Resource Manager seperti yang dijelaskan di bagian berikutnya.
Pilih ekstensi, terima ketentuan hukum, lalu pilih OK.
Sebuah pemberitahuan akan muncul di portal saat penginstalan selesai.
Memilih versi Python melalui Azure Resource Manager
Jika Anda menyebarkan App Service dengan template Azure Resource Manager, tambahkan ekstensi situs sebagai sumber daya. Secara khusus, ekstensi muncul sebagai sumber daya berlapis (objek resources di bawah resources) dengan jenis siteextensions.
Misalnya, setelah menambahkan referensi ke python361x64 (Python 3.6.1 x64), templat Anda mungkin terlihat seperti berikut ini (beberapa properti dihilangkan):
"resources": [
{
"apiVersion": "2015-08-01",
"name": "[parameters('siteName')]",
"type": "Microsoft.Web/sites",
// ...
"resources": [
{
"apiVersion": "2015-08-01",
"name": "python361x64",
"type": "siteextensions",
"properties": { },
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('siteName'))]"
]
},
// ...
]
}
Mengatur web.config untuk menunjuk ke penerjemah Python
Setelah menginstal ekstensi situs (melalui portal atau templat Azure Resource Manager), Anda selanjutnya mengarahkan file web.config aplikasi Anda ke penerjemah Python. File web.config menginstruksikan server web IIS (7+) yang berjalan di App Service tentang bagaimana seharusnya menangani permintaan Python melalui HttpPlatform.
Mulailah dengan menemukan jalur lengkap ke python.exeekstensi situs, lalu buat dan ubah file web.config yang sesuai.
Menemukan jalur ke python.exe
Ekstensi situs Python diinstal pada server di bawah d:\home di folder yang sesuai dengan versi dan arsitektur Python (kecuali untuk beberapa versi yang lebih lama). Misalnya, Python 3.6.1 x64 diinstal di d:\home\python361x64. Jalur lengkap ke penerjemah Python kemudian menjadi d:\home\python361x64\python.ex.
Untuk melihat jalur tertentu di App Service Anda, pilih Ekstensi di halaman App Service, lalu pilih ekstensi dalam daftar.

Tindakan ini membuka halaman deskripsi ekstensi yang berisi jalur:

Jika Anda kesulitan melihat jalur ekstensi, Anda dapat menemukannya secara manual menggunakan konsol:
- Pada halaman App Service Anda, pilih Alat Pengembangan>Konsol.
- Masukkan perintah
ls ../homeataudir ..\homeuntuk melihat folder ekstensi tingkat atas, seperti Python361x64. - Masukkan perintah seperti
ls ../home/python361x64ataudir ..\home\python361x64untuk memverifikasi bahwa perintah tersebut berisi python.exe dan file penerjemah lainnya.
Mengonfigurasi penanganan HttpPlatform
Modul HttpPlatform meneruskan koneksi soket langsung ke proses Python mandiri. Pass-through ini memungkinkan Anda untuk menjalankan server web apa pun yang Anda suka, tetapi memerlukan skrip startup yang menjalankan server web lokal. Tentukan skrip di elemen <httpPlatform>web.config, di mana atribut processPath mengarah ke interpreter Python ekstensi situs dan atribut arguments mengarah ke skrip dan argumen apa pun yang ingin Anda berikan:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="D:\home\Python361x64\python.exe"
arguments="D:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile="D:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
Variabel lingkungan HTTP_PLATFORM_PORT yang ditampilkan di sini berisi port yang harus didengarkan oleh server lokal Anda untuk koneksi dari localhost. Contoh ini juga menunjukkan cara membuat variabel lingkungan lain, jika diinginkan, dalam hal ini SERVER_PORT.
Instal paket
Penerjemah Python yang diinstal melalui ekstensi situs hanyalah satu bagian dari lingkungan Python Anda. Anda mungkin juga perlu menginstal paket yang berbeda di lingkungan tersebut.
Untuk menginstal paket secara langsung di lingkungan server, gunakan salah satu metode berikut:
| Metode | Penggunaan |
|---|---|
| Konsol Kudu Azure App Service | Menginstal paket secara interaktif. Paket harus python murni atau harus menerbitkan roda. |
| REST API Kudu | Dapat digunakan untuk mengotomatiskan penginstalan paket. Paket harus python murni atau harus menerbitkan roda. |
| Bundel dengan aplikasi | Instal paket langsung ke proyek Anda, lalu terapkan ke App Service seolah-olah itu adalah bagian dari aplikasi Anda. Bergantung pada berapa banyak dependensi yang Anda miliki dan seberapa sering Anda memperbaruinya, metode ini mungkin merupakan cara termudah untuk menjalankan penerapan yang berfungsi. Harap diperhatikan bahwa pustaka harus cocok dengan versi Python di server, jika tidak, Anda akan melihat kesalahan yang tidak jelas setelah penyebaran. Meskipun demikian, karena versi Python di ekstensi situs App Service sama persis dengan versi yang dirilis di python.org, Anda dapat dengan mudah mendapatkan versi yang kompatibel untuk pengembangan lokal. |
| Lingkungan virtual | Tidak didukung. Sebagai gantinya, gunakan bundling dan setel variabel lingkungan PYTHONPATH untuk menunjuk ke lokasi paket. |
Konsol Kudu Azure App Service
Konsol Kudu memberi Anda akses baris perintah langsung yang ditingkatkan ke server App Service dan sistem file-nya. Ini adalah alat penelusuran kesalahan yang berharga dan memungkinkan operasi CLI seperti menginstal paket.
Buka Kudu dari halaman App Service Anda di portal Azure dengan memilih Alat Pengembangan>Alat Tingkat Lanjut, lalu pilih Buka. Tindakan ini menavigasi ke URL yang sama dengan URL App Service dasar Anda kecuali dengan
.scmdisisipkan. Misalnya, jika URL dasar Anda adalahhttps://vspython-test.azurewebsites.net/, Kudu berada dihttps://vspython-test.scm.azurewebsites.net/(yang dapat Anda tandai):
Pilih Konsol Debug>CMD untuk membuka konsol, yang memungkinkan Anda menavigasi ke penginstalan Python Anda dan melihat pustaka apa yang sudah ada di sana.
Untuk menginstal satu paket:
a. Navigasikan ke folder penginstalan Python tempat Anda ingin menginstal paket, seperti d:\home\python361x64.
b. Gunakan
python.exe -m pip install <package_name>untuk menginstal paket.
Jika Anda sudah menyebarkan requirements.txt untuk aplikasi Anda ke server, instal semua persyaratan tersebut sebagai berikut:
a. Navigasikan ke folder penginstalan Python tempat Anda ingin menginstal paket, seperti d:\home\python361x64.
b. Jalankan perintah
python.exe -m pip install --upgrade -r d:\home\site\wwwroot\requirements.txt.Direkomendasikan untuk menggunakan requirements.txt karena mudah untuk mereproduksi paket persis Anda yang diatur baik secara lokal maupun di server. Ingatlah untuk mengunjungi konsol setelah menyebarkan perubahan apa pun pada requirements.txt dan jalankan perintah lagi.
Catatan
Tidak ada kompilator C pada App Service, sehingga Anda perlu menginstal roda untuk paket apa pun dengan modul ekstensi asli. Banyak paket populer menyediakan rodanya sendiri. Untuk paket yang tidak menyediakan, gunakan pip wheel <package_name> di komputer pengembangan lokal Anda lalu unggah roda ke situs Anda. Misalnya, lihat Mengelola paket yang diperlukan dengan requirements.txt.
REST API Kudu
Alih-alih menggunakan konsol Kudu melalui portal Azure, Anda dapat menjalankan perintah dari jarak jauh melalui REST API Kudu dengan memposting perintah ke https://yoursite.scm.azurewebsites.net/api/command. Misalnya, untuk menginstal paket bottle, posting JSON berikut ke /api/command:
{
"command": 'python.exe -m pip install bottle',
"dir": '\home\python361x64'
}
Untuk informasi tentang perintah dan autentikasi, lihat Dokumentasi Kudu.
Anda juga dapat melihat kredensial menggunakan perintah az webapp deployment list-publishing-profiles melalui Azure CLI (lihat penyebaran az webapp). Pustaka pembantu untuk memposting perintah Kudu tersedia di GitHub.