Mengonfigurasi aplikasi web Python untuk IIS
Saat Anda menggunakan Layanan Informasi Internet (IIS) sebagai server web di komputer Windows (termasuk komputer virtual Windows di Azure), Anda perlu mengonfigurasi aplikasi web Python untuk memungkinkan IIS memproses kode Python dengan benar. Konfigurasi dilakukan melalui pengaturan dalam web.config
file untuk aplikasi web Python. Artikel ini menjelaskan cara mengonfigurasi pengaturan yang diperlukan.
Prasyarat
Python pada Windows terinstal. Untuk menjalankan aplikasi web, pertama-tama instal versi Python yang diperlukan langsung di komputer host Windows seperti yang dijelaskan pada Menginstal interpreter Python.
- Identifikasi lokasi
python.exe
penerjemah. Agar lebih mudah, tambahkan lokasi tersebut ke variabel lingkungan PATH.
- Identifikasi lokasi
Paket yang diperlukan terinstal. Untuk host khusus, Anda dapat menggunakan lingkungan Python global untuk menjalankan aplikasi Anda daripada lingkungan virtual. Oleh karena itu, Anda dapat menginstal semua persyaratan aplikasi ke lingkungan global dengan menjalankan
pip install -r requirements.txt
perintah .
Mengatur web.config untuk menunjuk ke penerjemah Python
File web.config
untuk aplikasi Python Anda menginstruksikan server web IIS (versi 7 atau yang lebih baru) yang berjalan di Windows tentang caranya menangani permintaan Python melalui HttpPlatformHandler (disarankan) atau FastCGI. Visual Studio versi 2015 dan yang lebih lama membuat modifikasi ini secara otomatis. Untuk Visual Studio 2017 dan yang lebih baru, Anda harus mengubah web.config
file secara manual.
Jika proyek Anda belum berisi web.config
file, Anda bisa menambahkannya dengan mengklik kanan direktori proyek, memilih Tambahkan > Item Baru dan mencari web.config
atau membuat file XML kosong web.config
.
Mengonfigurasi HttpPlatformHandler
Modul HttpPlatform meneruskan koneksi soket langsung ke proses Python mandiri. Pass-through ini memungkinkan Anda menjalankan server web apa pun yang Anda suka, tetapi memerlukan skrip startup yang menjalankan server web lokal. Pendekatan ini biasanya dilakukan dengan menggunakan kerangka kerja web Python, seperti Flask atau Django. Anda menentukan skrip dalam <httpPlatform>
elemen web.config
file. Atribut processPath
menunjuk ke penerjemah Python ekstensi situs. Atribut arguments
menunjuk ke skrip startup Anda yang menjalankan server web lokal, dalam hal runserver.py
ini , 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="c:\python36-32\python.exe"
arguments="c:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
stdoutLogEnabled="true"
stdoutLogFile="c:\home\LogFiles\python.log"
startupTimeLimit="60"
processesPerApplication="16">
<environmentVariables>
<environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
</environmentVariables>
</httpPlatform>
</system.webServer>
</configuration>
Dalam contoh ini, HTTP_PLATFORM_PORT
variabel lingkungan berisi port yang harus didengarkan server lokal Anda untuk koneksi dari localhost
. Contoh ini juga menunjukkan cara membuat variabel lingkungan lain, SERVER_PORT
. Anda dapat membuat dan menetapkan variabel lingkungan sesuai kebutuhan.
Konfigurasikan pengendali FastCGI
FastCGI adalah antarmuka yang bekerja pada tingkat permintaan. IIS menerima koneksi masuk dan meneruskan setiap permintaan ke aplikasi WSGI yang berjalan dalam satu atau lebih proses Python yang persisten.
Catatan
Sebaiknya gunakan HttpPlatformHandler untuk mengonfigurasi aplikasi Anda, karena proyek WFastCGI tidak lagi dipertahankan.
Untuk menggunakan FastCGI, pertama-tama instal dan konfigurasikan paket wfastcgi seperti yang dijelaskan dalam pypi.org/project/wfastcgi/.
Selanjutnya, ubah file aplikasi web.config
Anda untuk menyertakan jalur lengkap ke python.exe
executable dan wfastcgi.py
file di kunci PythonHandler
. Langkah-langkah berikut mengasumsikan Python diinstal di folder c:\python36-32 dan kode aplikasi berada di folder c:\home\site\wwwroot . Sesuaikan nilai-nilai ini untuk jalur Anda yang sesuai.
PythonHandler
Ubah entri dalamweb.config
file sehingga jalur cocok dengan lokasi penginstalan Python. Untuk informasi selengkapnya, lihat Referensi Konfigurasi IIS (iis.net).<system.webServer> <handlers> <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\python36-32\python.exe|c:\python36-32\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/> </handlers> </system.webServer>
Di dalam bagian
<appSettings>
web.config
file, tambahkan kunci untukWSGI_HANDLER
,WSGI_LOG
(opsional), danPYTHONPATH
:<appSettings> <add key="PYTHONPATH" value="c:\home\site\wwwroot"/> <!-- The handler here is specific to Bottle; see the next section. --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/> <add key="WSGI_LOG" value="c:\home\LogFiles\wfastcgi.log"/> </appSettings>
Nilai
<appSettings>
ini tersedia untuk aplikasi Anda sebagai variabel lingkungan:- Nilai untuk
PYTHONPATH
kunci dapat diperluas dengan bebas, tetapi harus menyertakan akar aplikasi Anda. - Kunci
WSGI_HANDLER
harus menunjuk ke aplikasi WSGI yang dapat diimpor dari aplikasi Anda. - Kuncinya
WSGI_LOG
bersifat opsional, tetapi kunci disarankan untuk men-debug aplikasi Anda.
- Nilai untuk
Atur
WSGI_HANDLER
web.config
entri dalam file yang sesuai untuk kerangka kerja yang Anda gunakan:Botol: Tambahkan tanda kurung setelah nilai seperti yang
app.wsgi_app
ditunjukkan dalam contoh ini. Tanda kurung diperlukan karena objek adalah fungsi daripada variabel. Anda dapat melihat sintaks dalamapp.py
file.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: Ubah nilai ke
WSGI_HANDLER
<project_name>.app
tempat<project_name>
yang cocok dengan nama proyek Anda. Anda dapat menemukan pengidentifikasi yang tepat dengan melihatfrom <project_name> import app
pernyataan dalamrunserver.py
file. Misalnya, jika proyek diberi namaFlaskAzurePublishExample
, entri muncul sebagai berikut:<!-- Flask apps only: Change the project name to match your app --> <add key="WSGI_HANDLER" value="FlaskAzurePublishExample.app"/>
Django: Dua perubahan diperlukan pada
web.config
file untuk proyek Django.Ubah nilai
WSGI_HANDLER
menjadidjango.core.wsgi.get_wsgi_application()
. Objek ada dalamwsgi.py
file.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Tambahkan entri berikut segera setelah entri untuk
WSGI_HANDLER
kunci. Ganti nilaiDjangoAzurePublishExample
dengan nama proyek Anda:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Hanya aplikasi Django: Dalam file proyek
settings.py
Django, tambahkan domain URL situs atau alamat IP Anda keALLOWED_HOSTS
entri. Ganti '1.2.3.4' dengan URL atau alamat IP Anda:# Change the URL or IP address to your specific site ALLOWED_HOSTS = ['1.2.3.4']
Jika Anda tidak menambahkan URL ke hasil array, Anda akan melihat kesalahan berikut:
DisallowedHost at / Invalid HTTP_HOST header: '\<site URL\>'. You might need to add '\<site URL\>' to ALLOWED_HOSTS.
Ketika array kosong, Django secara otomatis mengizinkan 'localhost'
dan '127.0.0.1'
sebagai host. Jika Anda menambahkan URL produksi, situs host ini tidak diizinkan secara otomatis. Untuk alasan ini, Anda mungkin ingin mempertahankan salinan settings.py
pengembangan dan produksi file yang terpisah, atau menggunakan variabel lingkungan untuk mengontrol nilai runtime.
Menyebarkan ke IIS atau komputer virtual Windows
Ketika Anda memiliki file yang benar web.config
dalam proyek, Anda dapat menerbitkan ke komputer yang menjalankan IIS dari Penjelajah Solusi. Klik kanan proyek, pilih Terbitkan, lalu pilih IIS, FTP, dll.. Dalam situasi ini, Visual Studio hanya menyalin file proyek ke server. Anda bertanggung jawab atas semua konfigurasi sisi server.
Konten terkait
- Referensi Konfigurasi IIS (iis.net)
- Menginstal interpreter Python
- Komputer virtual Windows di Azure
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk