Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Saat Anda menggunakan Internet Information Services (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 file web.config
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 Instal interpreter Python.
- Identifikasi lokasi penerjemah
python.exe
. Untuk kenyamanan, Anda dapat menambahkan lokasi tersebut ke variabel lingkungan PATH Anda.
- Identifikasi lokasi penerjemah
Paket yang diperlukan terinstal. Untuk host khusus, Anda dapat menggunakan lingkungan Python global untuk menjalankan aplikasi Anda daripada lingkungan virtual. Dengan demikian, Anda dapat menginstal semua persyaratan aplikasi ke lingkungan global dengan menjalankan perintah
pip install -r requirements.txt
.
Atur 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 file web.config
secara manual.
Jika proyek Anda belum berisi file web.config
, Anda bisa menambahkannya dengan mengklik kanan direktori proyek, memilih Tambahkan > Item Baru dan mencari web.config
atau membuat file XML web.config
kosong.
Opsi 1: Konfigurasikan 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 pada elemen <httpPlatform>
di file web.config
. Atribut processPath
menunjuk ke penerjemah Python ekstensi situs. Atribut arguments
menunjuk ke skrip startup Anda yang menjalankan server web lokal, dalam hal ini runserver.py
, 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, variabel lingkungan HTTP_PLATFORM_PORT
berisi port yang harus diliktikan 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.
Opsi ke-2: Mengonfigurasi handler FastCGI
Atau, Anda dapat menggunakan FastCGI untuk mengonfigurasi aplikasi Anda. FastCGI adalah antarmuka yang berfungsi pada tingkat permintaan. IIS menerima koneksi masuk dan meneruskan setiap permintaan ke aplikasi WSGI yang berjalan dalam satu atau beberapa proses Python persisten.
Nota
Meskipun Anda dapat mengatur proyek menggunakan FastCGI, sebaiknya gunakan httpPlatformHandler untuk mengonfigurasi aplikasi Anda, karena proyek WFastCGI tidak lagi dipertahankan dan dapat mengakibatkan bug.
Untuk menggunakan FastCGI, pertama-tama instal dan konfigurasikan paket wfastcgi seperti yang dijelaskan dalam pypi.org/project/wfastcgi/.
Selanjutnya, ubah file web.config
aplikasi Anda untuk menyertakan jalur lengkap ke file python.exe
yang dapat dieksekusi dan wfastcgi.py
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 masing-masing.
Ubah entri
PythonHandler
dalam fileweb.config
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>
fileweb.config
, 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 kunci
PYTHONPATH
dapat diperluas secara bebas, tetapi harus menyertakan akar aplikasi Anda. - Kunci
WSGI_HANDLER
harus menunjuk ke aplikasi WSGI yang dapat diimpor dari aplikasi Anda. - Kunci
WSGI_LOG
bersifat opsional, tetapi kunci disarankan untuk men-debug aplikasi Anda.
- Nilai untuk kunci
Atur entri
WSGI_HANDLER
dalam fileweb.config
yang sesuai untuk kerangka kerja yang Anda gunakan:Botol : Tambahkan tanda kurung setelah nilai
app.wsgi_app
seperti yang ditunjukkan dalam contoh ini. Tanda kurung diperlukan karena objek adalah fungsi daripada variabel. Anda dapat melihat sintaks dalam fileapp.py
.<!-- Bottle apps only --> <add key="WSGI_HANDLER" value="app.wsgi_app()"/>
Flask: Ubah nilai
WSGI_HANDLER
menjadi<project_name>.app
di mana<project_name>
cocok dengan nama proyek Anda. Anda dapat menemukan pengidentifikasi yang tepat dengan melihat pernyataanfrom <project_name> import app
dalam filerunserver.py
. 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 file
web.config
untuk proyek Django.Ubah nilai
WSGI_HANDLER
menjadidjango.core.wsgi.get_wsgi_application()
. Objek berada dalam filewsgi.py
.<!-- Django apps only --> <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
Tambahkan entri berikut segera setelah entri untuk kunci
WSGI_HANDLER
. Ganti nilaiDjangoAzurePublishExample
dengan nama proyek Anda:<add key="DJANGO_SETTINGS_MODULE" value="django_iis_example.settings" />
Hanya untuk aplikasi Django: Dalam file
settings.py
proyek Django, tambahkan domain URL atau alamat IP situs Anda ke dalam entriALLOWED_HOSTS
. 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 Anda, situs hosting ini tidak diizinkan secara otomatis. Untuk alasan ini, Anda mungkin ingin mempertahankan salinan pengembangan dan produksi terpisah dari file settings.py
, atau menggunakan variabel lingkungan untuk mengontrol nilai runtime.
Menyebarkan ke IIS atau komputer virtual Windows
Ketika Anda memiliki file web.config
yang benar dalam proyek Anda, Anda dapat menerbitkan ke komputer yang menjalankan IIS dari Solution Explorer. 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.