Bagaimana menggunakan Django dengan uWSGI¶
uWSGI adalah cepat, menyembuhkan-sendiri dan wadah peladen aplikasi developer/sysadmin-friendly dikodekan dalam C murni.
lihat juga
Dokumen uWSGI menawarkan sebuah tutorial mencangkup Django, nginx, dan uWSGI (satu kemungkinan penyebaran pengaturan dari banyak). Dokumen dibawah fokus pada bagaimana menggabungkan Django dengan uWSGI.
Prasyarat: uWSGI¶
Wiki uWSGI menggambarkan beberapa installation procedures. Menggunakan pip, pengelola paket Python, anda dapat memasang versi uWSGI apapun dengan perintah tunggal. Sebagai contoh:
# Install current stable version.
$ pip install uwsgi
# Or install LTS (long term support).
$ pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
Peringatan
Beberapa penyaluran, termasuk Debian dan Ubuntu, mengemas versi lama dari uSWGI yang tidak memenuhi spesifikasi WSGI. Versi sebelumnya sampai 1.2.6 jangan memanggil close
pada obyek tanggapan setelah menangani sebuah permintaan. Dalam kasus-kasus tersebut sinyal request_finished
tidak dikirim. Ini dapat menghasilkan hubungan diam ke basisdata dan peladen memcache.
Model uWSGI¶
uWSGI beroperasi pada model peladen-klien. Peladen Jaringan anda (sebagai contoh nginx, Apache) berkomunikasi dengan pengolahan “worker” django-uwsgi untuk melayani isi dinamis. Lihat background documentation uWSGI untuk rincian lebih.
Mengkonfigurasi dan memulai peladen uWSGI untuk Django¶
uWSGI mendukung banyak cara untuk mengkonfigurasikan pengolahan. Lihat configuration documentation uWSGI dan examples.
Ini adalah sebuah contoh perintah untuk memulai peladen uWSGI:
uwsgi --chdir=/path/to/your/project \
--module=mysite.wsgi:application \
--env DJANGO_SETTINGS_MODULE=mysite.settings \
--master --pidfile=/tmp/project-master.pid \
--socket=127.0.0.1:49152 \ # can also be a file
--processes=5 \ # number of worker processes
--uid=1000 --gid=2000 \ # if root, uwsgi can drop privileges
--harakiri=20 \ # respawn processes taking more than 20 seconds
--max-requests=5000 \ # respawn processes after serving 5000 requests
--vacuum \ # clear environment on exit
--home=/path/to/virtual/env \ # optional path to a virtualenv
--daemonize=/var/log/uwsgi/yourproject.log # background the process
Ini menganggap anda mempunyai paket proyek tingkat-tinggi bernama mysite
, dan dalamnya sebuah modul mysite/wsgi.py
yang mengandung obyek application
WSGI. Ini adalah tata letak anda akan punyai jika anda menjalankan django-admin startproject mysite
(menggunakan nama proyek anda sendiri di tempat mysite
) dengan versi baru dari Django. Jika berkas ini tidak ada, anda akan butuh membuatnya. Lihat dokumentasi Bagaimana menyebarkan dengan WSGI untuk isi awal anda harus taruh dalam berkas ini dan apa lagi anda dapat tambahkan ke dia.
Pilihan khusus-Django disini adalah:
chdir
: Jalur ke direktori yang dibutuhkan berada di jalur impor Python – yaitu direktori mengandung paketmysite
.module
: modul WSGI dogunakan – mungkin modulmysite.wsgi
yangstartproject
buat.env
: mungkin harus mengandung setidaknyaDJANGO_SETTINGS_MODULE
.home
: path pilihan untuk virtualenv dari proyek anda.
Contoh di berkas konfigurasi:
[uwsgi]
chdir=/path/to/your/project
module=mysite.wsgi:application
master=True
pidfile=/tmp/project-master.pid
vacuum=True
max-requests=5000
daemonize=/var/log/uwsgi/yourproject.log
Contoh penggunaan berkas konfigurasi ini:
uwsgi --ini uwsgi.ini
Memperbaiki UnicodeEncodeError
untuk mengunggah berkas
Jika anda mendapatkan sebuah UnicodeEncodeError
ketika mengunggah berkas-berkas dengan nama-nama berkas yang mengandung karakter bukan ASCII, pastikan uWSGI dikonfigurasikan untuk menerima nama-nama berkas bukan ASCII dengan menambahkan ini ke uwsgi.ini
:
env = LANG=en_US.UTF-8
Lihat bagian Berkas dari panduan acuan Unicode untuk rincian.
Lihat dokumentasi uWSGI pada managing the uWSGI process untuk informasi pada permulaan, pemberhentian dan memuat kembali pekerja-pekerja uWSGI.