# Dokumentasi Django 4.2.9.dev20231204082947

# 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:

- Bagaimana menggunakan Django dengan Gunicorn
- Bagaimana menggunakan Django dengan uWSGI
- Bagaimana menggunakan Django dengan Apache dan `mod_wsgi`
- Bagaimana mengautentifikasi terhadap basisdata pengguna Django dari Apache

## 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.