---
title: "Bagaimana menyebarkan dengan WSGI"
version: 1.9
locale: id
source: https://docs.djangoproject.com/id/1.9/howto/deployment/wsgi/
canonical: https://djangodocs.dev/id/1.9/howto/deployment/wsgi/
---
# Bagaimana menyebarkan dengan WSGI

Platform penyebaran utama Django adalah [WSGI](http://www.wsgi.org), standar Phyton untuk peladen jaringan dan aplikasi.

Perintah pengelolaan [`startproject`](/id/1.9/ref/django-admin/#django-admin-startproject) Django mengatur konfigurasi WSGI awal sederhana untuk anda, yang anda dapat tarik sesuai kebutuhan untuk proyek anda, dan langsung peladen aplikasi WSGI untuk digunakan.

Django menyertakan dokumentasi mulai untuk peladen WSGI berikut:

- [Bagaimana menggunakan Django dengan Apache dan `mod_wsgi`](/id/1.9/howto/deployment/wsgi/modwsgi/)
- [Pembuktian keaslian terhadap pengguna basisdata Django dari Apache](/id/1.9/howto/deployment/wsgi/apache-auth/)
- [Bagaimana menggunakan Django dengan Gunicorn](/id/1.9/howto/deployment/wsgi/gunicorn/)
- [Bagaimana menggunakan Django dengan uWSGI](/id/1.9/howto/deployment/wsgi/uwsgi/)

## Obyek `aplikasi`

Konsep kunci dari penyebaran dengan WSGI adalah `application` dapat dipanggil 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`](/id/1.9/ref/django-admin/#django-admin-startproject) membuat sebuah berkas `<project_name>/wsgi.py` yang mengandung seperti `aplication` dapat dipanggil.

Itu digunakan kedua oleh peladen pengembangan Django dan dalam produksi penyebaran WSGI.

WSGI servers obtain the path to the `application` callable from their
configuration. Django's built-in server, namely the [`runserver`](/id/1.9/ref/django-admin/#django-admin-runserver)
command, reads it from the [`WSGI_APPLICATION`](/id/1.9/ref/settings/#std-setting-WSGI_APPLICATION) setting. By default, it's
set to `<project_name>.wsgi.application`, which points to the `application`
callable in `<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`](/id/1.9/topics/settings/#envvar-DJANGO_SETTINGS_MODULE) utnuk 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`](/id/1.9/ref/django-admin/#django-admin-runserver) menemukan berkas pengaturan awal secara awal.

> **Note**
>
> 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 kesampingkan nilai dari lingkungan dengan memaksa `os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"` dalam `wsgi.py` anda.

## Memberlakukan middleware WSGI

Untuk meberlakukan [WSGI middleware](https://www.python.org/dev/peps/pep-3333/#middleware-components-that-play-both-sides) anda dapat dengan mudah membungkus obyek aplikasi. Sebagai contoh anda dapat menambah baris-baris ini pada bagian bawah 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.

> **Note**
>
> Beberapa middleware WSGI pihak-ketiga tidak memanggil `close` pada obyek tanggapan setelah menangani sebuah permintaan. Dalam kasus tersebut sinyal [`request_finished`](/id/1.9/ref/signals/#django.core.signals.request_finished) tidak dikirim. Ini dapat dihasilkan di hubungan diam ke basisdata dan peladen memcache.
