Django adalah kerangka kerja web sumber terbuka yang ditulis dengan Python. Ini adalah kerangka kerja web all-in-one yang populer dan salah satu pilihan teratas bagi banyak pengembang. Django menawarkan banyak keuntungan, seperti arsitektur MVT (Model View Template), panel admin otomatis, dan dukungan database ORM (Object Relational Mapping) yang kuat. Ini juga menawarkan alat debugging yang luar biasa untuk pengembang. Dalam tutorial ini, kami akan menunjukkan kepada Anda bagaimana menginstal Django dengan PostgreSQL sebagai penyimpanan database sebagai ganti SQLite default, Nginx sebagai proxy terbalik, dan Gunicorn sebagai server aplikasi di Ubuntu 20.04.
Prasyarat
- VPS Ubuntu 20.04
- Akses SSH dengan hak akses root
Langkah 1. Masuk ke server
Pertama, masuk ke server Ubuntu 20.04 Anda melalui SSH sebagai pengguna root:
ssh root@IP_Address -p Port_number
Anda harus mengganti 'IP_Address' dan 'Port_number' dengan alamat IP dan nomor port SSH masing-masing server Anda. Selain itu, ganti 'root' dengan nama pengguna akun admin jika perlu.
Sebelum memulai, Anda harus memastikan bahwa semua paket OS Ubuntu yang diinstal di server sudah diperbarui. Anda dapat melakukannya dengan menjalankan perintah berikut:
# apt update -y # apt upgrade -y
Langkah 2. Buat pengguna sistem
Setelah masuk ke Ubuntu 20.04 sebagai root, kami akan membuat pengguna sistem baru dan memberikannya dengan hak sudo. Kami juga akan menggunakan pengguna ini untuk menyelesaikan instalasi ini. Dalam tutorial ini, kami akan membuat pengguna sistem baru yang disebut 'master', Anda dapat memilih nama pengguna yang Anda suka.
# adduser master
Setelah dibuat, jalankan perintah ini untuk menambahkan pengguna baru ke grup Sudo. Di Ubuntu, pengguna yang tergabung dalam grup sudo diizinkan untuk menjalankan perintah sudo.
# usermod -aG sudo master
Kami juga akan menambahkan master pengguna ke grup www-data kami
# usermod -aG www-data master
Sekarang, kita bisa login sebagai pengguna baru 'master'
# su - master
Langkah 3. Instal Paket
Untuk memulai ini, kami akan menginstal setiap paket yang diperlukan dari repositori. Untuk menginstal Nginx, PostgreSQL, Python dari repositori, kita dapat menjalankan perintah ini:
$ sudo apt install postgresql postgresql-contrib python3-pip python3-dev libpq-dev nginx -y
Langkah 4. Tambahkan Database dan Pengguna Database
Selama instalasi PostgreSQL, pengguna sistem bernama postgres dibuat sebagai pengguna administratif default. Kita perlu menggunakan pengguna ini untuk masuk ke shell PostgreSQL dan melakukan tugas administratif.
$ sudo -u postgres psql
Anda akan dimintai kata sandi 'master' Anda dan shell akan menjadi seperti ini:
postgres=#
Saat berada di shell postgreSQL, jalankan perintah berikut:
postgres=# CREATE USER djangouser WITH PASSWORD 'm0d1fyth15';
postgres=# CREATE DATABASE djangodb;
Selanjutnya, kita juga perlu mengubah encoding ke UTF-8, skema database zona waktu dan default_transaction_isolation.
postgres=# ALTER ROLE djangouser SET client_encoding TO 'utf8';
postgres=# ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
postgres=# ALTER ROLE djangouser SET timezone TO 'UTC';
Bagian terakhir, kami memberikan hak istimewa ke database baru kemudian keluar dari shell PostgreSQL.
postgres=# GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
postgres=# \q
Langkah 5. Buat Lingkungan Virtual Python
Django dapat diinstal dalam beberapa cara, dalam artikel ini kami akan menunjukkan kepada Anda cara menginstalnya di lingkungan virtual python.
$ sudo -H pip3 install --upgrade pip
$ sudo -H pip3 install virtualenv
Setelah selesai, mari kita buat direktori baru untuk instalasi django lalu masuk ke direktori baru
$ mkdir django && cd $_
Setelah memasuki direktori 'django', kita dapat menjalankan perintah ini untuk membuat lingkungan virtual baru.
$ virtualenv djangoenv
Seperti yang terlihat pada gambar, lingkungan virtual baru dibuat di direktori 'djangoenv'. Untuk menginstal Django, Gunicorn dan Psycopg2 di lingkungan virtual, kita harus mengaktifkannya terlebih dahulu.
$ source djangoenv/bin/activate
Dengan menjalankan perintah di atas, shell Anda akan terlihat seperti ini:
(djangoenv) master@ubuntu20:~/django$
Saat berada di shell, jalankan perintah ini untuk menginstal Django.
(djangoenv) master@ubuntu20:~/django$ pip install django gunicorn psycopg2
Setelah selesai, Anda akan melihat output seperti ini:
Installing collected packages: sqlparse, backports.zoneinfo, asgiref, psycopg2, gunicorn, django
Successfully installed asgiref-3.4.1 backports.zoneinfo-0.2.1 django-4.0 gunicorn-20.1.0 psycopg2-2.9.2 sqlparse-0.4.2
Semua komponen yang diperlukan untuk memulai proyek django harus dipasang di lingkungan virtual.
Langkah 6. Buat Proyek Django
Pada langkah sebelumnya, kita membuat direktori ~/django
atau dalam hal ini /home/master/django
. Kami akan membuat proyek django di direktori ini, kami dapat menjalankan perintah ini untuk menginstal proyek django di ~/django
. Perintah harus dijalankan saat kita berada di lingkungan virtual.
(djangoenv) master@ubuntu20:~/django$ django-admin startproject djangoproject ~/django
Perintah di atas akan menginstal proyek django ke ~/django/djangoproject
. Jika Anda mencantumkan direktori, Anda akan melihat manage.py
, djangoenv
, dan djangoproject
di ~/django
. Anda .
Sekarang, karena kita ingin menggunakan PostgreSQL sebagai penyimpanan database, kita perlu memodifikasi konfigurasinya.
$ nano ~/django/djangoproject/settings.py
Tambahkan baris ini di bagian atas settings.py Anda
import os
Dan ganti informasi database yang ada dengan yang berikut ini.
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'djangodb', 'USER': 'djangouser', 'PASSWORD': 'm0d1fyth15', 'HOST': 'localhost', 'PORT': '', } }
Pastikan username dan password database sesuai dengan yang kita buat pada langkah sebelumnya. Masih dalam file settings.py yang sama, temukan ALLOWED_HOSTS kemudian Anda dapat menambahkan alamat IP server Anda, nama domain, nama sub domain. Entri harus dipisahkan dengan koma dan dicantumkan dalam tanda kutip.
ALLOWED_HOSTS = ['123.123.123.123', 'domain.com', 'sub.domain.com']
Selanjutnya, temukan konfigurasi file statis Django. Perubahan diperlukan untuk membuat file statis Django Anda dapat diakses melalui nginx, dan untuk mencegah nginx mengembalikan pesan kesalahan 404. Tambahkan baris ini setelah STATIC_URL =‘/static/’
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
Jangan lupa simpan perubahannya lalu exit.
Selanjutnya, saatnya untuk memigrasikan skema database awal ke database PostgreSQL kita, mari kita jalankan perintah ini.
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py makemigrations
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py migrate
Kemudian, buat pengguna super.
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py createsuperuser
Anda akan diminta untuk membuat nama pengguna, memberikan alamat email dan kata sandi nama pengguna. Anda ingin menyimpan informasi tentang pengguna administratif dan kata sandi ini karena Anda akan menggunakannya untuk masuk ke backend Django.
Untuk yang terakhir, jalankan perintah di bawah ini untuk mengumpulkan file statis.
(djangoenv) master@ubuntu20:~/django$ ~/django/manage.py collectstatic
Anda perlu mengonfirmasi tindakan dengan menjawabnya dengan ya, lalu Anda akan melihat hasil ini setelah mengonfirmasi:
128 static files copied to '/home/master/django/static'
Nonaktifkan lingkungan virtual untuk keluar.
(djangoenv) master@ubuntu20:~/django$ deactivate
Langkah 7. Buat File Gunicorn Systemd
Untuk mengelola layanan Gunicorn, kami akan membuat file unit systemd di /etc/systemd/system/gunicorn.service.
$ sudo nano /etc/systemd/system/gunicorn.service
Rekatkan baris ini
[Unit] Description=gunicorn daemon After=network.target [Service] User=master Group=www-data WorkingDirectory=/home/master/django ExecStart=/home/master/django/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/master/django/djangoproject.sock djangoproject.wsgi:application [Install] WantedBy=multi-user.target
Simpan file kemudian keluar. Kemudian muat ulang systemd dan mulai gunicorn.
$ sudo systemctl daemon-reload
$ sudo systemctl start gunicorn
Untuk memeriksa apakah gunicorn sedang berjalan atau tidak, jalankan perintah ini:
$ sudo systemctl status gunicorn
Langkah 8. Konfigurasi Nginx
Gunicorn sedang berjalan dan kami sekarang siap untuk mengkonfigurasi nginx untuk bertindak sebagai proxy terbalik untuk proyek Django kami. Mari buat blok server nginx untuk Django dan hapus blok server default nginx.
$ sudo rm /etc/nginx/sites-enabled/default $ sudo nano /etc/nginx/conf.d/django.conf
Rekatkan baris ini di /etc/nginx/conf.d/django.conf
server { listen 80; server_name 123.123.123.123; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { alias /home/master/django/static/; } location /.well-known { alias /home/master/django/; } location / { include proxy_params; proxy_pass http://unix:/home/master/django/djangoproject.sock; } }
Sebelum menyimpan file, pastikan Anda mengganti 123.123.123.123
dengan alamat IP server Anda yang sebenarnya dan jalur soket sudah benar. Kemudian, periksa apakah ada kesalahan dan mulai ulang nginx untuk memuat ulang konfigurasi baru.
$ sudo nginx -t $ sudo systemctl restart nginx
Pada titik ini, Anda seharusnya dapat mengakses proyek Django Anda di http://YOUR_SERVER_IP_ADDRESS
dan URL administratif di http://YOUR_SERVER_IP_ADDRESS/admin
menggunakan browser web favorit Anda.
Langkah 9. Instal Sertifikat SSL
Langkah ini opsional tetapi sangat disarankan untuk diselesaikan. Di era modern, situs web harus berjalan di HTTPS, bukan HTTP. Langkah ini akan memandu Anda melalui instalasi SSL dari Let's Encrypt.
$ sudo apt install certbot python3-certbot-nginx -y
Setelah terinstal, edit blok server situs web Django Anda dan ganti nama_server dengan domain atau subdomain aktual Anda yang diarahkan ke alamat IP server Anda. Pastikan data DNS domain atau subdomain sudah diarahkan ke server Anda sebelum menerbitkan sertifikat SSL.
Buka /etc/nginx/conf.d/django.conf
dan edit bagian ini
server { listen 80; server_name 123.123.123.123;
untuk
server { listen 80; server_name yourdomain.com;
Pastikan untuk mengganti yourdomain.com
dengan nama domain Anda yang sebenarnya. Simpan file lalu keluar dan muat ulang Nginx.
$ sudo systemctl reload nginx
Sekarang, kita siap untuk menginstal sertifikat SSL, jalankan perintah ini:
$ sudo certbot
Anda harus memberikan alamat email Anda, menerima TOS Let's Encrypt, dan apakah Anda ingin membagikan alamat email Anda dengan Electronic Frontier Foundation atau tidak. Kemudian, Anda harus memilih nama yang ingin Anda aktifkan HTTPSnya. Pilih situs web Django Anda dengan mengetikkan nomor dan menekan ENTER. Let's encrypt akan menginstal sertifikat dan akan menanyakan apakah Anda akan mengkonfigurasi HTTP ke HTTPS redirect atau tidak, Anda dapat memilih redirect kemudian certbot akan membuat redirection dan memuat ulang Nginx jika semuanya baik-baik saja.
Sekarang, Anda seharusnya dapat mengakses situs web Django Anda dalam mode HTTPS di https://yourdomain.com
.
Itu saja, Anda telah belajar bagaimana mengatur Django dengan PostgreSQL, Nginx, dan Gunicorn.
Tentu saja, Anda tidak perlu menyetel Django dengan PostgreSQL, Nginx, dan Gunicorn di Ubuntu 20.04 jika Anda menggunakan salah satu layanan Django VPS Hosting kami, dalam hal ini Anda cukup meminta admin Linux ahli kami untuk menyetel Django dengan PostgreSQL , Nginx, dan Gunicorn di Ubuntu 20.04 VPS untuk Anda. Mereka tersedia 24×7 dan akan segera memenuhi permintaan Anda.
PS. Jika Anda menyukai posting ini tentang cara mengatur Django dengan PostgreSQL, Nginx, dan Gunicorn di Ubuntu 20.04, silakan bagikan dengan teman-teman Anda di jejaring sosial menggunakan tombol di bawah ini atau cukup tinggalkan balasan di bagian komentar. Terima kasih.