Menginstal Django di IIS: Tutorial Langkah-demi-Langkah

Diterbitkan: 2022-03-11

Meskipun banyak Pengembang Django mungkin menganggapnya sebagai penghujatan, kadang-kadang sebenarnya perlu untuk menyebarkan aplikasi Django pada Windows/IIS, terutama ketika bekerja dengan klien yang mendasarkan infrastrukturnya di sekitar ekosistem Windows. Bagian "penghujatan" berasal dari Django yang telah benar-benar ditargetkan pada lingkungan Unix, sangat bergantung pada fitur-fitur seperti WSGI, FastCGI, dan perkakas baris perintah, yang semuanya asing bagi Windows. Untungnya, kompatibilitas Django/IIS meningkat, berkat penambahan fitur (yang sebaliknya akan menjadi kludge) pada kedua sisi persamaan Windows dan Python+Django, dengan demikian membantu menyelesaikan masalah kompatibilitas antara dua dunia teknis yang berbeda ini.

Tutorial singkat dan terfokus ini memandu Anda melalui pengaturan dasar proyek Django di Windows. Ini mencakup instalasi Python, Django, dan alat-alat terkait, termasuk menjalankan proyek Django baik mandiri maupun sebagai server FastCGI. Yang terakhir ini semakin penting, kebetulan, karena IIS sekarang secara resmi mendukung FastCGI (pada IIS 7+, cukup instal fitur CGI).

Catatan: Tutorial ini ditujukan bagi mereka yang memahami Windows dan terbiasa dengan konsol manajemen IIS. Versi IIS yang digunakan dalam tutorial ini adalah 8.5, tetapi deskripsi dan tekniknya serupa pada versi sebelumnya. Tutorial ini didasarkan pada Python 2.7 dan Django 1.7, karena itu adalah versi yang saya gunakan untuk proyek saya. Anda dapat menemukan tutorial Django lainnya di sini.

Kiat pro: Jika Anda akan menerapkan beberapa proyek Django (atau bahkan Python biasa), atau jika Anda seorang pengembang, Anda harus melihat virtualenv, alat untuk membuat lingkungan Python yang terisolasi.

Menginstal Python di Windows

Pertama, unduh Python. Penginstal MSI 32-bit dan 64-bit disediakan, dan Anda harus memilih yang sesuai untuk mesin tempat Anda menginstal.

Dasar-dasar PIP

PIP adalah alat yang menginstal dan memelihara pustaka Python (di mana Django hanya salah satu contohnya). Itu dipanggil dengan menjalankan perintah pip pada command prompt. Ini mengimplementasikan beberapa sub-perintah, dan dua yang paling berguna adalah install dan freeze . PIP juga akan menginstal dependensi proyek (perpustakaan tambahan) yang diinstal, jika proyek memilikinya.

Menjalankan pip install <package_name> akan mengunduh dan menginstal paket dan semua dependensinya (yang mungkin bersarang dan cukup rumit). Menjalankan pip install --upgrade <package_name> juga akan memutakhirkan paket yang ada ke versi terbarunya. PIP mendukung sintaks khusus untuk menginstal versi paket yang tepat, bukan hanya "yang terbaru". Ini dilakukan dengan menambahkan operator dan nomor versi ke nama paket; misalnya "Jinja2==2.7.3" (untuk menginstal versi yang tepat) atau "enam>=1.8" (untuk menginstal versi apa pun yang sama dengan atau lebih besar dari nomor versi yang ditentukan).

Menjalankan pip freeze hanya menampilkan daftar paket yang terinstal saat ini dalam format yang dapat langsung digunakan oleh pip install .

Perhatikan bahwa beberapa paket Python / PIP dilengkapi dengan pustaka yang ditulis dalam C, yang harus dikompilasi agar paket berfungsi. Kecuali Anda mengatur sistem Anda untuk memiliki kompiler C yang berfungsi yang juga kompatibel dengan executable Python, Anda tidak akan dapat menginstal paket-paket tersebut. Django adalah pustaka Python murni sehingga tidak memerlukan kompiler C untuk menginstal.

Penting bagi Anda untuk menginstal Python 2.7.9 atau yang lebih baru, karena versi Python yang dimulai dengan 2.7.9 menyertakan PIP, pengelola perpustakaan/paket/perangkat lunak Python yang digunakan untuk menginstal semua hal lain dalam tutorial ini.

Proses penginstalan sangat mudah dan sederhana. Ini akan menawarkan untuk menginstal Python di direktori C:\Python27 , yang harus Anda terima karena membuat hidup lebih mudah setelahnya. Cobalah untuk tidak menyerah pada kebiasaan Windows menginstal barang-barang di direktori dengan spasi di namanya.

Direktori dasar setelah instalasi akan berisi sekitar 8 subdirektori, beberapa file lain-lain dan dua executable bernama Python.exe dan PythonW.exe . Yang pertama adalah juru bahasa baris perintah default dan shell Python, sedangkan yang kedua hanya juru bahasa, yang tidak akan menggunakan (atau menelurkan) jendela konsol jika dipanggil, dan karena itu cocok untuk menjalankan aplikasi GUI Python.

Selanjutnya, Python harus ditambahkan ke variabel lingkungan PATH sistem. Ini dilakukan di Pengaturan Sistem Lanjutan (atau Properti Sistem ), di tab Tingkat Lanjut , dengan mengklik tombol Variabel Lingkungan . Ada dua direktori yang akan ditambahkan: C:\Python27 dan C:\Python27\Scripts . Ini harus ditambahkan ke daftar PATH, dipisahkan dengan titik koma ( ; ). Akhir dari variabel PATH Anda akan terlihat seperti ;C:\Python27;C:\Python27\Scripts .

Kiat pro: Anda mungkin juga ingin menginstal GOW, kumpulan utilitas baris perintah Unix yang ringan mirip dengan Cygwin. Ini akan memberi Anda alat seperti ls , tetapi juga yang lebih menarik seperti make , wget , curl , ssh , scp , gzip dan tar .

Menginstal Django di Windows

Django dapat diinstal menggunakan PIP dengan perintah seperti pip install django . Proses mungkin menarik beberapa dependensi tambahan jika belum ada di sistem Anda. Jika tidak, itu hanya akan menginstal Django saja, dengan output yang mirip dengan berikut:

 Downloading/unpacking django Installing collected packages: django Successfully installed django Cleaning up...

Anda dapat memeriksa apakah Python dan Django untuk Windows bekerja dengan memulai Prompt Perintah Windows baru, menjalankan perintah python , dan memasukkan perintah import django pada prompt Python. Jika bekerja dengan benar, seharusnya tidak ada keluaran atau pesan setelah perintah import django ; yaitu:

 Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>>

Memasang proyek Django di Windows

Sebuah "proyek" Django terdiri dari satu atau lebih "aplikasi". Direktori tingkat atas proyek biasanya berisi satu subdirektori proyek khusus yang berisi pengaturan dan beberapa informasi tingkat proyek umum, satu subdirektori per aplikasi, dan skrip baris perintah yang disebut manage.py . Sebagai contoh:

 C:\Devel\djangoproject\src>dir Volume in drive C is OS Volume Serial Number is 6A3D-C1B8 Directory of C:\Devel\djangoproject\src 22/12/2014 04:25 <DIR> . 22/12/2014 04:25 <DIR> .. 22/12/2014 04:19 <DIR> project 22/12/2014 04:58 <DIR> djangoapp 16/12/2014 03:30 <DIR> templates 16/12/2014 00:50 250 manage.py 1 File(s) 250 bytes 5 Dir(s) 23,552,929,792 bytes free

Proyek Django dapat dengan mudah didistribusikan dengan mengarsipkan seluruh direktori proyek dan mendekompresinya pada mesin lain. Dalam contoh di atas, proyek berisi subdirektori project , direktori aplikasi bernama djangoapp , dan subdirektori templates bantu.

Skrip manage.py adalah "pisau tentara swiss" dari aplikasi Django. Itu melakukan segalanya mulai dari membuat aplikasi baru, hingga migrasi basis data, hingga menjalankan server HTTP uji (tertanam) atau bahkan server FastCGI.

Menjalankan server HTTP uji

Jika proyek dan aplikasinya berfungsi, Anda seharusnya dapat memulai server HTTP khusus pengembangan Django default dengan menjalankan perintah manage.py runserver , yang seharusnya menghasilkan keluaran yang serupa dengan berikut ini:

 C:\Devel\djangoproject\src>manage.py runserver Performing system checks... System check identified no issues (0 silenced). December 23, 2014 - 01:19:02 Django version 1.7.1, using settings 'project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.

Seperti yang Anda lihat dari pesan, ini memulai server di localhost, port 8000. Anda dapat langsung mengaksesnya dengan browser web Anda.

Mengonfigurasi dan menjalankan server FastCGI

Opsi yang lebih menarik adalah mengaktifkan server FastCGI. Dengan FastCGI, Anda dapat menggunakan IIS, Apache, atau server web lainnya, untuk melayani aplikasi dalam pengaturan produksi. Agar ini berfungsi, Anda perlu mengunduh fcgi.py (perintah manajemen Django untuk menjalankan Django pada Windows dengan IIS melalui FastCGI) dan memasukkannya ke dalam subdirektori management/commands dari subdirektori aplikasi Django (bukan proyek!). Subdirektori management dan commands harus memiliki file kosong bernama __init__.py (yang mengubah direktori tersebut menjadi modul Python).

fcgi.py adalah adaptor WSGI ke FastCGI yang sangat sederhana dan minimalis yang tidak mendukung mendengarkan pada soket TCP atau pipa, dan melakukan semua pemrosesannya dengan menggunakan stdin dan stdout`. Dengan demikian, ini tidak dapat digunakan dengan server web modern seperti nginx, tetapi akan berfungsi dengan IIS.

Mengonfigurasi IIS untuk menjalankan aplikasi FastCGI

Jika modul FastCGI dimuat di IIS (atau hanya modul CGI di IIS 7+), konsol manajemen IIS akan memiliki ikon "Pengaturan FastCGI" yang tersedia. Django adalah kerangka kerja yang memiliki perutean URL-nya sendiri, jadi aplikasi Django harus dipasang sebagai "penangan" di IIS untuk jalur tertentu. Untuk memasang aplikasi Django di Situs Web Default IIS , pilih itu di konsol manajemen, dan buka fitur konfigurasi pemetaan Handler . Di dalamnya, klik pada tindakan Add Module Mapping… , dan masukkan informasi berikut:

  • Jalur permintaan : Setel ke \* untuk menangani semua permintaan dengan perutean Django internal
  • Modul : Setel ke FastCgiModule untuk menggunakan modul FastCGI IIS
  • Dapat dieksekusi : Di sini, jalur python.exe dan argumen baris perintahnya perlu disetel, menggunakan karakter pipa ( | ) sebagai pemisah. Contoh nilai untuk pengaturan ini adalah: C:\Python27\python.exe|C:\app\src\manage.py fcgi --pythonpath C:\app\src --settings project.settings . Perhatikan bahwa Anda perlu menentukan perintah fcgi untuk skrip manage.py , dan secara manual mengatur jalur pencarian juru bahasa Python untuk proyek tersebut, serta nama modul Python untuk modul pengaturan proyek.
  • Nama : Anda dapat mengatur ini untuk apa pun yang Anda suka.

Dialog konfigurasi Anda akan terlihat seperti ini:

dialog konfigurasi iis

Selanjutnya, klik tombol Minta pembatasan dan edit tab Pemetaan . Hapus centang pada kotak centang "Aktifkan penangan hanya jika permintaan dipetakan ke ..." (jika tidak, IIS akan mengalami masalah memetakan apa yang dianggapnya sebagai subdirektori dalam permintaan URL):

batasan permintaan

Klik OK pada dialog informasi penangan. IIS kemudian akan meminta Anda untuk mengonfirmasi pembuatan entri aplikasi FastCGI yang cocok yang perlu Anda konfirmasi. Entri ini akan terlihat di fitur Pengaturan FastCGI , dapat diakses di layar utama Konsol Manajemen IIS. Entri default yang dibuat oleh IIS sendiri sudah memadai, tetapi ada beberapa pengaturan opsional yang tersedia yang mungkin ingin Anda manfaatkan:

  • Instans maksimum : Pendekatan yang kami gunakan untuk menjalankan aplikasi FastCGI adalah proses tunggal, utas tunggal, yang berarti bahwa proses juru bahasa Python yang terpisah akan dimulai untuk setiap permintaan simultan . Pengaturan ini membatasi jumlah instans aplikasi Django secara simultan.
  • Memantau perubahan ke file : Secara default, setelah dimulai, proses aplikasi akan aktif baik hingga dimatikan secara manual, atau hingga mereka menangani permintaan Instance MaxRequest . Dengan menggunakan pengaturan ini, IIS akan memantau stempel waktu file arbitrer, dan jika berubah, itu akan berhenti dan memuat ulang instance aplikasi. Ini nyaman baik untuk pengembang dan untuk lingkungan produksi, karena memungkinkan aplikasi dimuat ulang saat diubah. "Monitor stempel waktu file untuk indikator reload" adalah konsep yang cukup aneh di Windows, tapi itu normal di lingkungan mirip Unix, dan jadi dibawa ke sini dengan FastCGI.

tambahkan aplikasi FastCGI

Mengonfigurasi sumber daya statis dan direktori media

Aplikasi web modern menggunakan banyak file sumber daya, seperti CSS, JavaScript, dan lainnya, dan aplikasi Django tidak terkecuali. Django menyediakan fitur yang sangat nyaman yang memungkinkan pengembang untuk mengintegrasikan sumber daya yang dibutuhkan ke dalam pohon direktori aplikasi, tetapi yang dapat diekstraksi dan disalin oleh Django ke dalam direktori statis yang tepat. Ini pada dasarnya adalah fitur yang dikendalikan pengembang, dan lokasi di mana Django akan menyimpan file statis dikendalikan dalam settings.py proyek. Proyek yang berperilaku baik akan menggunakan jalur yang cukup waras untuk ini, tetapi tidak distandarisasi.

Aplikasi yang menangani file yang diunggah menyimpannya dalam direktori yang dikelola serupa yang, di Django, secara tradisional bernama media . Direktori static dan media perlu ditambahkan ke konfigurasi IIS sebagai direktori virtual:

Mengonfigurasi sumber daya statis dan direktori media

Langkah penting di sini adalah mengonfigurasi ulang fitur Handler Mappings untuk setiap direktori dan menghapus handler Aplikasi Django, meninggalkan handler StaticFile sebagai yang paling penting.

Catat bahwa direktori static harus dapat dibaca oleh IIS (serta semua file dan direktori lain dalam proyek Django), tetapi direktori media juga harus dapat ditulis oleh IIS. Konfigurasi situs akhir akan menyerupai berikut ini:

contoh konfigurasi situs iis

Catatan tentang database

SQLite bekerja secara default pada Windows, seperti halnya pada sistem mirip Unix. Sebagian besar database open source lainnya sekarang berfungsi di Windows, bahkan PostgreSQL, yang saya rekomendasikan. Namun, pada instalasi Windows yang ada, mungkin ada persyaratan untuk menyebarkan Django dengan MS SQL Server. Ini dimungkinkan baik dengan menggunakan pengandar jembatan ODBC atau dengan menggunakan pengandar MS SQL asli. Secara teori, keduanya berfungsi, tetapi saya belum mengujinya. Setidaknya parameter koneksi database (dalam file settings.py proyek) perlu diubah untuk beralih ke database baru. Migrasi data perlu dilakukan secara manual.

Perhatikan bahwa jika menggunakan database SQLite, baik file database maupun direktori tempatnya harus dapat ditulis oleh IIS.

Penyelesaian masalah

Konfigurasi yang dijelaskan telah diuji dan terbukti bekerja, tetapi jika terjadi kesalahan, berikut adalah beberapa langkah dasar untuk pemecahan masalah instalasi Django untuk Windows Anda:

  1. Coba mulai sendiri baris perintah FastCGI. Ini adalah perintah yang dikonfigurasi dalam Pengaturan FastCGI dan yang harus cocok dengan yang dikonfigurasi di Pemetaan Handler untuk situs.
  2. Instal fitur Pelacakan untuk IIS, kemudian konfigurasikan untuk situs Django di Aturan Pelacakan Permintaan Gagal untuk melacak semua konten ( ), kode status "500" dan tingkat keparahan kejadian "Kesalahan". Jejak akan tersedia sebagai file XML (dengan XSLT terlampir) di direktori C:\inetpub\logs\FailedReqLogFiles IIS (atau yang serupa, tergantung pada konfigurasi Anda). Anda kemudian perlu mengaktifkan pelacakan untuk situs web tertentu (atau direktori virtual) dalam tindakan *Configure->Failed request tracing… .

Kesimpulan

Yang pasti, Django disesuaikan untuk lingkungan mirip-Unix, dan cara menjalankan Django yang paling tersebar luas dan didukung adalah pada sistem Linux (misalnya, dengan uwsgi dan nginx).

Namun tidak membutuhkan banyak usaha untuk membuat Django berjalan di Windows, seperti yang ditunjukkan dalam tutorial ini. Beberapa langkah yang dijelaskan mungkin tampak kontra-intuitif dari perspektif Windows murni, tetapi itu perlu dan, untungnya, upaya yang dihabiskan dalam konfigurasi hanya satu kali. Setelah dikonfigurasi, aplikasi Django kemudian harus berperilaku dengan cara yang sama seperti pada platform Linux.