Cara Deploy Project Django Framework di Ubuntu 18.04

Posted on

Pendahuluan

Django adalah kerangka kerja web Python yang populer untuk membangun aplikasi web. Salah satu tantangan dalam pengembangan aplikasi web adalah memastikan bahwa aplikasi dapat di-deploy dengan benar. Dalam artikel ini, kita akan membahas cara deploy project Django framework di Ubuntu 18.04.

Langkah 1: Install Python dan Virtual Environment

Langkah pertama adalah memastikan bahwa Python dan Virtual Environment terinstal di komputer Ubuntu 18.04 kita. Kita dapat menginstalnya dengan menjalankan perintah berikut di terminal:

sudo apt update

sudo apt install python3-pip python3-venv

Setelah instalasi selesai, kita dapat membuat virtual environment untuk aplikasi Django kita dengan menjalankan perintah berikut:

python3 -m venv myenv

Langkah 2: Aktifkan Virtual Environment

Setelah virtual environment dibuat, kita perlu mengaktifkannya dengan menjalankan perintah berikut:

source myenv/bin/activate

Langkah 3: Instal Django dan Dependencies

Selanjutnya, kita perlu menginstal Django dan dependencies yang diperlukan untuk aplikasi kita. Kita dapat melakukan ini dengan menjalankan perintah berikut:

pip install django gunicorn psycopg2-binary

Langkah 4: Buat Aplikasi Django

Setelah instalasi selesai, kita dapat membuat aplikasi Django baru dengan menjalankan perintah berikut:

django-admin startproject myproject

Kita dapat mengubah nama myproject sesuai dengan keinginan kita.

Langkah 5: Konfigurasi Database

Setelah membuat aplikasi, kita perlu mengkonfigurasi database. Kita dapat melakukannya dengan mengedit file settings.py pada folder myproject.

DATABASES = {

‘default’: {

‘ENGINE’: ‘django.db.backends.postgresql’,

‘NAME’: ‘mydatabase’,

‘USER’: ‘mydatabaseuser’,

‘PASSWORD’: ‘mypassword’,

‘HOST’: ‘localhost’,

‘PORT’: ‘5432’,

}

}

Pastikan untuk mengubah nama database, user, dan password sesuai dengan kebutuhan kita.

Langkah 6: Migrate Database

Setelah mengkonfigurasi database, kita perlu melakukan migrasi database dengan menjalankan perintah berikut:

python manage.py migrate

Langkah 7: Buat Superuser

Setelah melakukan migrasi database, kita perlu membuat superuser dengan menjalankan perintah berikut:

python manage.py createsuperuser

Ikuti instruksi untuk membuat superuser.

Langkah 8: Uji Aplikasi

Setelah membuat superuser, kita dapat menguji aplikasi dengan menjalankan perintah berikut:

python manage.py runserver

Buka browser dan akses http://localhost:8000. Jika semuanya berjalan dengan baik, kita akan melihat halaman selamat datang Django.

Langkah 9: Konfigurasi Gunicorn

Setelah menguji aplikasi, kita perlu mengkonfigurasi Gunicorn. Kita dapat melakukannya dengan membuat file baru dengan nama myproject.service pada folder /etc/systemd/system/.

[Unit]

Description=Gunicorn instance to serve myproject

After=network.target

[Service]

User=username

Group=www-data

WorkingDirectory=/home/username/myproject

ExecStart=/home/username/myenv/bin/gunicorn –access-logfile – –workers 3 –bind unix:/home/username/myproject/myproject.sock myproject.wsgi:application

[Install]

WantedBy=multi-user.target

Pastikan untuk mengganti username dan nama folder sesuai dengan kebutuhan kita.

Langkah 10: Restart Systemd

Setelah file konfigurasi selesai dibuat, kita perlu me-restart Systemd dengan menjalankan perintah berikut:

sudo systemctl daemon-reload

Langkah 11: Start Gunicorn

Setelah melakukan restart Systemd, kita dapat memulai Gunicorn dengan menjalankan perintah berikut:

sudo systemctl start myproject

Langkah 12: Verifikasi Gunicorn

Setelah memulai Gunicorn, kita dapat memeriksa statusnya dengan menjalankan perintah berikut:

sudo systemctl status myproject

Jika semuanya berjalan dengan baik, kita akan melihat pesan “active (running)”.

Langkah 13: Enable Gunicorn

Setelah memverifikasi Gunicorn, kita perlu meng-enable Gunicorn agar bisa dijalankan secara otomatis setiap kali sistem di-restart. Kita dapat melakukan ini dengan menjalankan perintah berikut:

sudo systemctl enable myproject

Langkah 14: Konfigurasi Nginx

Setelah mengkonfigurasi Gunicorn, kita perlu mengkonfigurasi Nginx. Kita dapat melakukannya dengan membuat file baru dengan nama myproject pada folder /etc/nginx/sites-available/.

server {

listen 80;

server_name example.com;

location / {

include proxy_params;

proxy_pass http://unix:/home/username/myproject/myproject.sock;

}

location /static/ {

alias /home/username/myproject/static/;

}

location /media/ {

alias /home/username/myproject/media/;

}

}

Pastikan untuk mengubah server_name dan nama folder sesuai dengan kebutuhan kita.

Langkah 15: Enable Nginx

Setelah membuat file konfigurasi Nginx, kita perlu meng-enable Nginx agar bisa dijalankan secara otomatis setiap kali sistem di-restart. Kita dapat melakukan ini dengan menjalankan perintah berikut:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/

Langkah 16: Test Nginx

Setelah meng-enable Nginx, kita dapat menguji konfigurasinya dengan menjalankan perintah berikut:

sudo nginx -t

Jika semuanya berjalan dengan baik, kita akan melihat pesan “syntax is ok” dan “test is successful”.

Langkah 17: Restart Nginx

Setelah menguji konfigurasi Nginx, kita dapat me-restart Nginx dengan menjalankan perintah berikut:

sudo systemctl restart nginx

Langkah 18: Uji Aplikasi di Browser

Setelah melakukan semua konfigurasi di atas, kita dapat menguji aplikasi di browser dengan mengakses alamat IP server atau nama domain yang kita gunakan.

Langkah 19: Mengatasi Masalah Permission Denied

Jika kita mengalami masalah “Permission denied” saat menjalankan Gunicorn atau Nginx, kita perlu mengubah permission pada folder aplikasi kita dengan menjalankan perintah berikut:

sudo chown -R username:www-data /home/username/myproject

sudo chmod -R 775 /home/username/myproject

Pastikan untuk mengganti username dan nama folder sesuai dengan kebutuhan kita.

Langkah 20: Mengatasi Masalah Internal Server Error

Jika kita mengalami masalah “Internal Server Error” saat mengakses aplikasi kita di browser, kita perlu mengubah permission pada folder static dan media dengan menjalankan perintah berikut:

sudo chown -R www-data:www-data /home/username/myproject/static

sudo chown -R www-data:www-data /home/username/myproject/media

Pastikan untuk mengganti username dan nama folder sesuai dengan kebutuhan kita.

Langkah 21: Mengatasi Masalah Database

Jika kita mengalami masalah saat mengakses database, kita perlu memeriksa kembali konfigurasi database pada file settings.py dan memastikan bahwa kita sudah melakukan migrasi database dengan benar.

Langkah 22: Mengatasi Masalah Gunicorn

Jika kita mengalami masalah saat menjalankan Gunicorn, kita perlu memeriksa kembali konfigurasi Gunicorn pada file myproject.service dan memastikan bahwa kita sudah me-restart Systemd setelah membuat file konfigurasi.

Langkah 23: Mengatasi Masalah Nginx

Jika kita mengalami masalah saat menjalankan Nginx, kita perlu memeriksa kembali konfigurasi Nginx pada file myproject dan memastikan bahwa kita sudah meng-enable Nginx dan me-restart Nginx setelah membuat file konfigurasi.

Langkah 24: Mengatasi Masalah Firewall

Jika kita mengalami masalah saat mengakses aplikasi di browser, kita perlu memeriksa apakah firewall kita memblokir akses ke port yang digunakan oleh aplikasi kita. Kita dapat memeriksa hal ini dengan menjalankan perintah berikut:

sudo ufw allow 8000

Pastikan untuk mengganti nomor port sesuai dengan kebutuhan kita.

Langkah 25: Mengatasi Masalah SSL

Jika kita ingin mengaktifkan SSL pada aplikasi kita, kita perlu menginstal dan mengkonfigurasi certbot dengan menjalankan perintah berikut:

sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository universe

sudo add-apt-repository ppa:certbot/certbot

sudo apt-get update

sudo apt-get install certbot python-certbot-nginx

sudo certbot –nginx

Ikuti instruksi untuk mengkonfigurasi SSL.

Langkah 26: Mengatasi Masalah Performa

Jika kita mengalami masalah performa pada aplikasi kita, kita perlu memeriksa apakah kita sudah menggunakan caching dan optimasi yang tepat. Kita dapat memeriksa hal ini dengan menjalankan perintah berikut:

pip install django-cacheops django-redis

Tambahkan konfigurasi caching pada file settings.py pada folder myproject.

CACHES = {

‘default’: {

‘BACKEND’: ‘django_redis.cache.RedisCache’,

‘LOCATION’: ‘redis://127.0.0.1:6379/1’,

‘OPTIONS’: {

‘CLIENT_CLASS’: ‘django_redis.client.DefaultClient’,

}

}

}

Tambahkan konfigurasi optimasi pada file settings.py pada folder myproject.

STATICFILES_STORAGE = ‘django.contrib.staticfiles.storage.ManifestStaticFilesStorage’

Langkah 27: Mengatasi Masalah Keamanan

Jika kita mengalami masalah keamanan pada aplikasi kita, kita perlu memeriksa apakah kita sudah menggunakan authentikasi dan otorisasi yang tepat. Kita dapat memeriksa hal ini dengan menjalankan perintah berikut:

pip install django-allauth

Tambahkan konfigurasi authentikasi dan otorisasi pada file settings.py pada folder myproject.

INSTALLED_APPS = [

‘django.contrib.admin’,

‘django.contrib.auth’,

‘django.contrib.contenttypes’,

‘django.contrib.sessions’,

‘django.contrib.messages’,

‘django.contrib.staticfiles’,

‘django.contrib.sites’,

‘allauth’,

‘allauth.account’,

‘allauth.socialaccount’,

]

AUTHENTICATION_BACKENDS = [

‘django.contrib.auth.backends.ModelBackend’,

‘allauth.account.auth_backends.AuthenticationBackend’,

]

SITE_ID = 1

Langkah 28: Mengatasi Masalah Logging

Jika kita mengalami masalah logging pada aplikasi kita, kita perlu memeriksa apakah kita sudah menggunakan logging yang tepat. Kita dapat memeriksa hal ini dengan menjalankan perintah berikut:

pip install django-logging-json

Tambahkan konfigurasi logging pada file settings.py pada folder myproject.

LOGGING = {

‘version’: 1,

‘disable_existing_loggers’: