GNU/Linux >> Belajar Linux >  >> Panels >> Panels

Cara Mengatur Django dengan Postgres, Nginx dan Gunicorn di Ubuntu 20.04

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.


Panels
  1. Cara Instal Nginx Dengan PHP5 Dan MySQL Di Ubuntu 11.10

  2. Cara menginstal phpMyAdmin dengan HHVM, Nginx dan MariaDB di Ubuntu 14.04 VPS

  3. Cara Deploy Aplikasi Flask dengan Nginx dan Gunicorn di Ubuntu 20.04

  1. Instal Django CMS di Ubuntu 12.04 dengan MariaDB, Gunicorn dan Nginx

  2. Cara mengatur aplikasi nodejs sederhana dengan nginx dan pm2 di server ubuntu

  3. Cara Menginstal dan Mengatur Stack MERN dengan Nginx di Ubuntu 20.04

  1. Instal dan Setup NodeBB dengan Redis dan Nginx di Ubuntu 12.04

  2. Cara Membuat dan Menghapus Pengguna di Ubuntu 16.04

  3. Cara menginstal PHP 7.4 Dengan Nginx di Ubuntu 20.04