Cara Deploy Aplikasi Web Django di PythonAnywhere
PythonAnywhere adalah layanan web hosting dan IDE online berbasis python. Kita dapat mengunggah dan memasang aplikasi web berbasis Python yang menggunakan WSGI, misalnya Django dan Flask.
Pada contoh ini, aplikasi web Django yang akan diuji telah diunggah terlebih dahulu di repository online git (bisa menggunakan GitHub maupun Bitbucket). Pastikan web app bisa berjalan di komputer lokal dan semua migrasi model basis data sudah siap di-apply di web hosting. Sistem basis data yang akan digunakan pada contoh ini adalah SQLite (berbasis file), yang merupakan default Django sehingga kita tidak perlu setup basis data lagi.
Langkah-langkah
- Pada menu 'Console', buka bash console, lalu pastikan telah berada di direktori home (misalnya
/home/username
).
$ pwd
/home/username
- Lakukan
git clone
repository aplikasi web Django yang akan di deploy, lalu tuju direktori proyek.
$ git clone https://alamat/repo/online/...
$ cd nama_proyek_django
-
Buat dan aktifkan virtualenv (opsional). Kita bisa menggunakan cara ini untuk menginstal modul-modul python berbeda di setiap virtualenv. Saya sudah pernah membuat ringkasan langkah-langkah menginstal virtualenv dan virtualenvwrapper sebelumnya. Catat lokasi virtualenv (biasanya di
/home/nama_user/.virtualenvs/nama_virtualenv
). -
Instal modul-modul python yang dibutuhkan aplikasi web Django. Biasanya, di komputer lokal kita menjalankan perintah
pip freeze > requirements.txt
lalu menyertakan file txt tersebut di repository bersama aplikasi web kita.
Di komputer lokal:
(my_virtualenv) $ pip freeze
beautifulsoup4==4.6.0
Django==2.0.4
pytz==2018.4
requests==2.12.4
(my_virtualenv) $ pip freeze > reqs.txt
Kemudian dilanjutkan dengan git commit ...
, git push ...
, dan lain-lain.
Di web hosting PythonAnywhere (via bash) setelah melakukan git clone ...
atau git pull ...
:
(my_hosting_virtualenv) $ pip install -r reqs.txt
(Karena kita akan menjalankan aplikasi Django, sudah pasti kita membutuhkan paket Django.)
-
Catat lokasi file wsgi.py aplikasi web Django (biasanya
/home/nama_user/nama_proyek_django/nama_proyek_django/wsgi.py
). -
Pada PythonAnywhere, tuju menu 'Web'. Pada bagian 'Code', pastikan 'Working directory' dan 'Python version' sudah sesuai (misalnya python 3.5). Pada 'WSGI configuration file', ubah dengan kode berikut:
import os
import sys
# Direktori aplikasi web
sys.path.append('/home/nama_user/nama_proyek')
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nama_proyek.settings")
application = get_wsgi_application()
-
Pada bagian 'Virtualenv', isi dengan direktori virtualenv yang valid (langkah 3).
-
Untuk menampilkan file static (css, javascript, gambar, dan lain-lain), kita bisa mengisi nilai variabel
STATIC_ROOT
pada file settings.py dengan direktori absolut pada web hosting (misalnya/home/nama_user/nama_proyek/staticroot
). Kemudian jalankan perintahpython manage.py collectstatic
. Isikan direktori tersebut pada bagian 'Static files'. Untuk URL-nya, biasanya sama dengan nilaiSTATIC_URL
pada file settings.py. -
Tentukan apakah kita akan memproteksi aplikasi web dengan password pada bagian 'Password protection'.
-
Terakhir, pada bagian atas laman pengaturan, klik tombol 'Reload'. Cek dengan mengakses URL aplikasi web kita, misalnya username.pythonanywhere.com.
Jangan lupa melakukan migrasi basis data di web hosting jika diperlukan (python manage.py makemigrations
dan python manage.py migrate
). Jika menggunakan sistem basis data selain SQLite, lakukan pengaturan di menu 'Databases'.