Bagaimana Cara Menggunakan PostgreSQL dengan Aplikasi Django di Ubuntu 16.04?

Blog image

Django adalah kerangka untuk membuat aplikasi Python dengan cepat. Secara default, aplikasi Django dikonfigurasi untuk menyimpan data ke dalam file database SQLite yang ringan. Meskipun ini bekerja dengan baik tanpa beban, DBMS yang lebih tradisional dapat meningkatkan kinerja produksi.

Dalam panduan ini, kami akan menunjukkan cara menginstal dan mengkonfigurasi PostgreSQL untuk digunakan dengan aplikasi Django Anda. Kami akan menginstal perangkat yang diperlukan, membuat kredensial database untuk aplikasi, dan kemudian memulai mengkonfigurasi proyek Django baru untuk menggunakan backend ini.

Syarat :
Untuk memulai, Anda memerlukan contoh server Ubuntu 16.04 yang bersih dengan pengguna non-root yang disiapkan. Pengguna non-root harus dikonfigurasi dengan hak sudo. Pelajari cara mengaturnya dengan mengikuti panduan penyiapan server awal kami.

Bila Anda siap untuk melanjutkan, login sebagai pengguna sudo Anda dan baca terus.

Instal Komponen dari Repositori Ubuntu

Langkah pertama kita akan menginstal semua yang kita butuhkan dari repositori. Kami akan menginstal pip, pengelola paket Python, untuk menginstal dan mengelola komponen Python kami. Kami juga akan menginstal perangkat lunak database dan sesuatu  yang diperlukan untuk berinteraksi dengan mereka.

Python 2 dan Python 3 memerlukan paket yang sedikit berbeda, jadi pilihlah perintah di bawah yang sesuai dengan versi Python proyek Anda.

Jika anda menggunakan python 2, ketik:

$ sudo apt-get update$ sudo apt-get install python-pip python-dev libpq-dev postgresql postgresql-contrib

Dan jika anda menggunakan python 3, ketik:

$ sudo apt-get update$ sudo apt-get install python3-pip python3-dev libpq-dev postgresql postgresql-contrib

Dengan penginstalan, kita bisa melanjutkan untuk membuat database dan database pengguna.

Buat Database dan Database User

Secara default, Postgres menggunakan skema otentikasi yang disebut “otentikasi peer” untuk koneksi lokal. Pada dasarnya, ini berarti bahwa jika nama pengguna sistem operasi pengguna cocok dengan nama pengguna Postgres yang valid, pengguna tersebut dapat masuk tanpa otentikasi lebih lanjut.

Selama instalasi Postgres, pengguna sistem operasi yang diberi nama postgres dibuat sesuai dengan pengguna admin PostgreSQL postgres. Kita perlu menggunakan pengguna ini untuk melakukan tugas administratif. Kita bisa menggunakan sudo dan masuk ke username dengan opsi -u.

Masuk ke sesi Postgres interaktif dengan mengetikkan:

$ sudo -u postgres psql

Pertama, kita akan membuat database untuk proyek Django kita. Setiap proyek harus memiliki basis data tersendiri untuk alasan keamanan. Kami akan memanggil myproject database kami dalam panduan ini, tapi selalu lebih baik untuk memilih sesuatu yang lebih deskriptif:

Postgres=# CREATE DATABASE myproject;

 

Info

Ingatlah untuk mengakhiri semua perintah pada prompt SQL dengan titik koma.

Selanjutnya, kita akan membuat database user yang akan kita gunakan untuk terhubung dan berinteraksi dengan database. Tetapkan kata sandi yang kuat dan aman:

Postgres=#  CREATE USER myprojectuser WITH PASSWORD ‘password‘;

Setelah itu, kami akan mengubah beberapa parameter koneksi untuk pengguna yang baru saja kami buat. Ini akan mempercepat operasi database sehingga nilai yang benar tidak perlu dipertanyakan dan disetel setiap kali koneksi terbentuk.

Kami menetapkan pengkodean default ke UTF-8, yang diharapkan Django. Kami juga menetapkan skema isolasi transaksi default untuk “membaca komit”, yang bloknya dibaca dari transaksi yang tidak terikat. Terakhir, kita mengatur zona waktu. Secara default, proyek Django kami akan diatur untuk menggunakan UTC. Ini semua adalah rekomendasi dari proyek Django itu sendiri.

Postgres=#  ALTER ROLE myprojectuser SET client_encoding TO ‘utf8’;
Postgres=#  ALTER ROLE myprojectuser SET default_transaction_isolation TO ‘read committed’;
Postgres=#  ALTER ROLE myprojectuser SET timezone TO ‘UTC’;

Nah, yang perlu kita lakukan hanyalah memberikan hak akses pengguna database kita ke database yang kita buat:

GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;

Keluar dari prompt SQL untuk kembali ke sesi shell pengguna postgres:

Postgres=#  \q

Instal Django dalam Lingkungan Virtual

Setelah database kita selesai, kita bisa menginstal Django. Untuk fleksibilitas yang lebih baik, kita akan menginstal Django dan semua dependensinya dalam lingkungan virtual Python. Paket virtualenv memungkinkan Anda membuat lingkungan ini dengan mudah.

Jika Anda menggunakan Python 2, Anda bisa menginstal paket yang benar dengan mengetikkan:

$ sudo pip install virtualenv

Jika Anda menggunakan Python 3, ketik:

$ sudo pip3 install virtualenv

Membuat dan pindah ke direktori untuk menahan proyek Django Anda:

$ mkdir ~/myproject$ cd ~/myproject

Kita bisa membuat lingkungan virtual untuk menyimpan proyek Django dengan persyaratan Python dengan mengetikkan:

$ virtualenv myprojectenv

Ini akan menginstal salinan lokal Python dan perintah pip lokal ke dalam sebuah direktori yang disebut myprojectenv dalam direktori proyek Anda.

Sebelum kita menginstal aplikasi di dalam lingkungan virtual, kita perlu mengaktifkannya. Anda bisa melakukannya dengan mengetik:

source myprojectenv/bin/activate

Your prompt will change to indicate that you are now operating within the virtual environment. It will look something like this (myprojectenv)user@host:~/myproject$.

Info

Terlepas dari versi Python yang Anda gunakan, saat lingkungan virtual diaktifkan, Anda harus menggunakan perintah pip (bukan pip3).

(myprojectenv) $ pip install django psycopg2

Kita sekarang bisa memulai proyek Django di dalam direktori myproject kita. Ini akan membuat direktori dengan nama yang sama untuk menampung kode itu sendiri, dan akan membuat skrip manajemen di dalam direktori saat ini. Pastikan untuk menambahkan titik di akhir perintah sehingga ini diatur dengan benar:

(myprojectenv) $ django-admin.py startproject myproject

Configure the Django Database Settings.

Setelah kita memiliki sebuah proyek, kita perlu mengkonfigurasinya untuk menggunakan database yang kita buat.

Buka file pengaturan proyek Django utama yang ada di dalam direktori proyek:

(myprojectenv) $ nano ~/myproject/myproject/settings.py

Dibagian bawah file, Anda akan melihat bagian DATABASE yang terlihat seperti ini:

Ini saat ini dikonfigurasi untuk menggunakan SQLite sebagai database. Kita perlu mengubahnya sehingga database PostgreSQL kita digunakan sebagai gantinya.

Pertama, ganti mesinnya sehingga menggunakan adaptor postgresql_psycopg2, bukan adaptor sqlite3. Untuk NAMA, gunakan nama database Anda (myproject di contoh kami). Kita juga perlu menambahkan login credentials. Kami membutuhkan username, password, dan host untuk terhubung. Kami akan menambahkan dan membiarkan pilihan port kosong sehingga defaultnya dipilih:

Saat berada di sini, Anda mungkin juga perlu menyesuaikan petunjuk ALLOWED_HOSTS. Ini mendefinisikan daftar putih alamat atau nama domain dapat digunakan untuk terhubung ke instance Django. Setiap permintaan masuk dengan header Host yang tidak ada dalam daftar ini akan menimbulkan pengecualian. Django mengharuskan Anda mengatur ini untuk mencegah kerentanan keamanan kelas tertentu.

Di kotak tanda kurung, daftar alamat IP atau nama domain yang terkait dengan server Django Anda. Setiap item harus dicantumkan dalam kutipan dengan entri yang dipisahkan dengan tanda koma. Jika Anda menginginkan permintaan untuk seluruh domain dan subdomain, tambahkan periode ke awal entri. Dalam tulisan di bawah ini, ada beberapa contoh komentar yang digunakan untuk menunjukkan:

Setelah selesai, simpan dan tutup file.

Migrasikan Database dan Uji Proyek Anda

Setelah pengaturan Django dikonfigurasi, kita dapat memigrasikan struktur data ke database dan menguji server.

Kita bisa mulai dengan membuat dan menerapkan migrasi ke database kita. Karena kami belum memiliki data aktual, ini hanya akan menyiapkan struktur basis data awal:

(myprojectenv) $ cd ~/myproject

(myprojectenv) $ python manage.py makemigrations

(myprojectenv) $ python manage.py migrate

Setelah membuat struktur database, kita bisa membuat akun administrator dengan mengetikkan:

(myprojectenv) $ python manage.py createsuperuser

Anda akan diminta untuk memilih nama pengguna, memberikan alamat email, dan memilih dan mengkonfirmasi kata sandi untuk akun tersebut.

Jika Anda mengikuti panduan penyiapan server awal, Anda harus memasang firewall UFW. Sebelum kita bisa mengakses server pengembangan Django untuk menguji database kita, kita perlu membuka port yang akan kita gunakan di firewall kita.

Izinkan koneksi eksternal ke port dengan mengetikkan:

(myprojectenv) $ sudo ufw allow 8000

Setelah Anda membuka port, Anda dapat menguji bahwa database Anda berkerja dengan benar dengan memulai server pengembangan Django:

(myprojectenv) $ python manage.py runserver 0.0.0.0:8000

Di browser web Anda, kunjungi nama domain atau alamat IP server Anda diikuti oleh: 8000 untuk mencapai halaman akar Django default:

http://server_domain_or_IP:8000

Anda harus melihat halaman indeks default:

Admin ke akhir URL dan Anda harus bisa mengakses layar login ke antarmuka admin:

Masukkan username dan password yang baru anda buat dengan menggunakan perintah createuperuser. Anda kemudian akan dibawa ke antarmuka admin:

Setelah selesai menyelidiki, Anda dapat menghentikan server pengembangan dengan menekan CTRL-C di jendela terminal Anda.

Dengan mengakses antarmuka admin, kami telah memastikan bahwa database kami telah menyimpan informasi akun pengguna kami dan dapat diakses dengan tepat.

Kesimpulan

Dalam panduan ini, kami telah menunjukkan cara menginstal dan mengkonfigurasi PostgreSQL sebagai database backend untuk proyek Django. Sementara SQLite dapat dengan mudah menangani beban selama pengembangan dan penggunaan produksi ringan, sebagian besar proyek mendapatkan keuntungan dari penerapan DBMS dengan fitur lebih lengkap.