Bagaimana menyebarkan dengan WSGI¶
Serambi penyebaran utama Django adalah WSGI, standar Phyton untuk peladen jaringan dan aplikasi.
Perintah pengelolaan Django startproject
mensetel konfigurasi awalan minimal WSGI untuk anda, yang dapat anda atur sesuai kebutuhan untuk proyek anda, dan melangsungkan peladen aplikasi patuh-WSGI apapun anda gunakan.
Django menyertakan dokumentasi mulai untuk peladen WSGI berikut:
Obyek aplikasi
¶
Konsep kunci dari penyebaran dengan WSGI adalah application
callable dimana peladen aplikasi gunakan untuk komunikasi dengan kode anda. Dia umumnya disediakan sebagai sebuah obyek dinamai application
di modul Phyton dapat diakses ke peladen.
Perintah startproject
membuat sebuah berkas <project_name>/wsgi.py
yang mengandung seperti callable aplication
.
Itu digunakan kedua oleh peladen pengembangan Django dan dalam produksi penyebaran WSGI.
Peladen WSGI mengambil jalur pada callable application
dari konfigurasi mereka. Peladen pasang tetap Django, yaitu perintah runserver
, membacanya dari pengaturan WSGI_APPLICATION
. Secara awalan, dia disetel ke <project_name>.wsgi.application
, yang menunjuk ke application
dapat dipanggil dalam <project_name>/wsgi.py
.
Konfigurasi modul pengaturan¶
Ketika peladen WSGI memuat aplikasi anda, Django butuh mengimpor modul pengaturan -- itu dimana aplikasi keseluruhan anda ditentukan.
Django menggunakan lingkungan variabel DJANGO_SETTINGS_MODULE
untuk menempatkan modul pengaturan yang sesuai. Dia harus mengandung jalur titik pada modul pengaturan. Anda dapat menggunakan nilai berbeda untuk pengembangan dan produksi; dia semua tergantung pada bagaimana anda mengorganisasikan pengaturan anda.
Jika variabel ini belum disetel, nilai awal wsgi.py
disetel ke mysite.settings
, dinama mysite
adalah nama dari proyek anda. Itu bagaimana runserver
menemukan berkas pengaturan awal secara awal.
Catatan
Sejak lingkungan variabel diproses luas, ini tidak bekerja ketika anda menjalankan banyak situs Django dalam pengolahan yang sama. Ini terjadi dengan mod_wsgi.
Untuk menghindari masalah ini, gunakan suasana daemon wsgi dengan setiap situs di pengolahan daemon itu sendiri, atau menimpa nilai dari lingkungan dengan memaksa os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
dalam wsgi.py
anda.
Memberlakukan middleware WSGI¶
Untuk memberlakukan WSGI middleware anda dapat membungkus obyek aplikasi. Contohnya anda dapat menambah baris ini dibawah dari wsgi.py
:
from helloworld.wsgi import HelloWorldApplication
application = HelloWorldApplication(application)
Anda juga dapar mengganti aplikasi WSGI Django dengan penyesuaian aplikasi WSGI yang diutuskan kemudian pada aplikasi WSGI Django, jika anda ingin menggabungkan aplikasi Django dengan aplikasi WSGI dari kerangka lain.