Cara Menjalankan Django dengan Gunicorn dan Nginx di Ubuntu 16.04
Tutorial kali ini membahas tentang cara menjalankan aplikasi berbasis Django framework dengan mengkombinasikan Gunicorn WSGI server bersama Nginx di Ubuntu 16.04. Ini juga merupakan salah satu cara dalam deployment Django di server online / VPS.
Install pip dan virtualenv
Install pip dan virtualenv jika menggunakan Python 2
1 2 | sudo apt-get install python-pip sudo pip install virtualenv |
Install pip dan virtualenv jika menggunakan Python 3
1 2 | sudo apt-get install python3-pip sudo pip3 install virtualenv |
Membuat virtualenv
Membuat folder belajar-django
1 2 | mkdir belajar-django cd belajar-django |
Membuat virtualenv dengan nama folder env.
Jika ingin menggunakan Python 2 pada virtualenv.
1 | virtualenv -p python2 env |
Jika ingin menggunakan Python 3 pada virtualenv.
1 | virtualenv -p python3 env |
Mengaktifkan virtualenv
1 | source env/bin/activate |
Membuat aplikasi Django
Menginstall Django dan Gunicorn di dalam virtual environment
1 | pip install django gunicorn |
Membuat struktur file project Django
1 | django-admin startproject project . |
Edit file settings.py
1 | nano project/settings.py |
Isi bagian ALLOWED_HOST dengan nomor IP atau nama domain, misalnya
1 | ALLOWED_HOSTS = ['belajardjango.id', '127.0.0.1'] |
Menguji Django dengan menjalankan development server
1 | python manage.py runserver |
Menjalankan Django dengan Gunicorn
1 | gunicorn --bind 127.0.0.1:8000 project.wsgi |
Membuat service untuk Django
Buat file service
1 | sudo nano /etc/systemd/system/belajardjango.service |
Isinya
1 2 3 4 5 6 7 8 9 10 11 12 13 | [Unit] Description=Gunicorn Belajar Django service After=network.target [Service] User=musa Group=www-data WorkingDirectory=/home/musa/belajar-django Environment="PATH=/home/musa/belajar-django/env/bin" ExecStart=/home/musa/belajar-django/env/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/musa/belajar-django/belajar-django.sock project.wsgi:application [Install] WantedBy=multi-user.target |
Jalankan service, lihat status apakah sudah jalan, dan enable agar aktif saat boot
1 2 3 | sudo systemctl start belajardjango sudo systemctl status belajardjango sudo systemctl enable belajardjango |
Konfigurasi Nginx
Buat virtual host/blok konfigurasi untuk Django
1 | sudo nano /etc/nginx/sites-available/belajar-django |
Isinya
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | server { listen 80; server_name NAMA_DOMAIN_NOMOR_IP; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/musa/belajar-django; } location / { include proxy_params; proxy_pass http://unix:/home/musa/belajar-django/belajar-django.sock; } } |
Aktifkan konfigurasi yang baru saja dibuat
1 | sudo ln -s /etc/nginx/sites-available/belajar-django /etc/nginx/sites-enabled |
Cek apakah konfigurasi Nginx tidak ada yang salah
1 | sudo nginx -t |
Jika sudah OK, restart Nginx
1 | sudo systemctl restart nginx |
Terakhir browsing http://NO_IP_ATAU_NAMA_DOMAIN apakah sudah tampil Django atau tidak.
selamat mencoba 🙂