Bagaimana menggunakan Django dengan Apache dan mod_wsgiLink to this heading
Menyebarkan Django dengan Apache dan ``mod_wsgi`_ adalah jalan percobaan dan pengujian untuk mendapatkan Django dalam produksi.
mod_wsgi adalah sebuah modul Apache yang dapat merumahkan aplikasi WSGI_Python apapun, termasuk Django. Django akan bekerja dengan versi apapun dari Apache yang mendukung mod_wsgi.
official mod_wsgi documentation adalah sumber anda untuk semua rincian tentang bagaimana menggunakan mod_wsgi. Anda akan mungkin ingin memulai dengan installation and configuration documentation.
Konfigurasi dasarLink to this heading
Setelah anda punya mod_wsgi terpasang dan aktif, rubah berkas httpd.conf peladen Apache dan tambahkan berikut.
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
WSGIPythonHome /path/to/venv
WSGIPythonPath /path/to/mysite.com
<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Bit pertama dalam baris WSGIScriptAlias adalah jalur URL dasar anda ingin melayani aplikasi anda pada (/ mengindikasikan url akar), dan kedua adalah tempat dari "berkas WSGI" -- lihat dibawa -- pada sistem anda, biasanya didalam paket proyek anda (mysite di contoh ini). Ini memberitahu Apache untuk melayani setiap permintaan dibawah URL yang diberikan menggunakan aplikasi WSGI yang ditentukan dalam berkas itu.
If you install your project's Python dependencies inside a virtual
environment, add the path using WSGIPythonHome. See the mod_wsgi
virtual environment guide for more details.
Baris WSGIPythonPath memastikan bahwa paket proyek anda tersedia untuk diimpor pada jalur Python; dengan kata lain, bahwa import mysite bekerja.
Potongan <Directory> memastikan bahwa Apache dapat mengakses berkas wsgi.py anda.
Selanjutnya kami akan butuh memastikan berkas ini wsgi.py dengan obyek aplikasi WSGI ada. Sehingga Django versi 1.4, startproject akan membuat satu untuk anda; jika tidak, anda akan butuh membuatnya. Lihat WSGI overview documentation untuk isi awal anda harus tempatkan dalam berkas ini, dan apa lagi yang anda dapat tambahkan.
Menggunakan mod_wsgi mode daemonLink to this heading
"Daemon mode" adalah suasana yang dianjurkan untuk menjalankan mod_wsgi (pada serambi bukan-Windows). Untuk membuat kelompok pengolahan daemon yang dibutuhkan dan menugaskan instance Django untuk menjalankan di dalamnya, anda akan butuh menambahkan arahan WSGIDaemonProcess dan WSGIProcessGroup sesuai. Perubahan lebih lanjut pada konfigurasi diatas jika anda menggunakan suasana daemon adalah anda tidak dapat menggunakan WSGIPythonPath; daripada anda harus menggunakan pilihan python-path ke WSGIDaemonProcess, sebagai contoh:
WSGIDaemonProcess example.com python-home=/path/to/venv python-path=/path/to/mysite.com
WSGIProcessGroup example.com
Jika anda ingin melayani proyek anda dalam subdirektori (https://example.com/mysite dalam contoh ini), anda dapat menambahkan WSGIScriptAlias pada konfigurasi diatas:
WSGIScriptAlias /mysite /path/to/mysite.com/mysite/wsgi.py process-group=example.com
Lihat dokumentasi mod_wsgi resmi untuk details on setting up daemon mode.
Melayani berkasLink to this heading
Django tidak melayani berkas-berkas dia sendiri; dia menyerahkan pekerjaan itu ke apapun peladen yang anda pilih.
Kami menganjurkan menggunakan peladen jaringan terpisah -- yaitu, satu yang tidak menjalankan Django -- untuk melayani media. Ini ada beberapa pilihan bagus:
Jika, bagaimanapun, anda tidak mempunyai pilihan tetapi untuk melayani berkas-berkas media pada Apache VirtualHost sama sebagai Django, anda dapat menyetel Apache untuk melayani beberapa URL sebagai media statis, dan lainnya menggunakan antarmuka mod_wsgi ke Django.
Contoh ini menyetel Django pada akar situs, tetapi melayani robots.txt, favicon.ico, dan apapun dalam ruang URL /static/ dan /media/ sebagai berkas statis. Semua URL lain akan dilayani menggunakan mod_wsgi:
Alias /robots.txt /path/to/mysite.com/static/robots.txt
Alias /favicon.ico /path/to/mysite.com/static/favicon.ico
Alias /media/ /path/to/mysite.com/media/
Alias /static/ /path/to/mysite.com/static/
<Directory /path/to/mysite.com/static>
Require all granted
</Directory>
<Directory /path/to/mysite.com/media>
Require all granted
</Directory>
WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
<Directory /path/to/mysite.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Melayani berkas adminLink to this heading
When django.contrib.staticfiles is in INSTALLED_APPS, the
Django development server automatically serves the static files of the
admin app (and any other installed apps). This is however not the case when you
use any other server arrangement. You're responsible for setting up Apache, or
whichever web server you're using, to serve the admin files.
The admin files live in (django/contrib/admin/static/admin) of the Django distribution.
We strongly recommend using django.contrib.staticfiles to handle the
admin files (along with a web server as outlined in the previous section; this
means using the collectstatic management command to collect the
static files in STATIC_ROOT, and then configuring your web server to
serve STATIC_ROOT at STATIC_URL), but here are three
other approaches:
Buat sebuah tautan simbolis ke berkas statis admin dari dalam akar dokumen anda (ini mungkin membutuhkan
+FollowSymLinksdalam konfigurasi Apache anda).Gunakan sebuah petunjuk
Alias, seperti yang ditampilkan diatas, untuk alias URL yang sesuai (mungkinSTATIC_URL+admin/) ke tempat sebenarnya dari berkas-berkas admin.Salin berkas tetap admin sehingga mereka berada dalam akar dokumen Apache anda.
Otentifikasi terhadap pengguna basisdata Django dari ApacheLink to this heading
Django menyediakan sebuah penanganan untuk mengizinkan Apache untuk membuktikan keaslian pengguna secara langsung terhadap backend pembuktian keaslian Django. Lihat mod_wsgi authentication documentation.