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’: