GNU/Linux >> Belajar Linux >  >> Debian

Cara Memasang Kerangka Kerja Django di Debian 11

Django adalah kerangka kerja pengembangan web sumber terbuka dan gratis yang ditulis dengan Python. Ini digunakan untuk mengembangkan aplikasi Python yang kompleks dan berbasis database. Muncul dengan satu set skrip Python untuk membuat proyek Python. Itu dapat dijalankan pada sistem operasi apa pun yang dapat menjalankan Python termasuk, Windows, macOS, Linux/Unix, dan Solaris. Ini membantu pengembang untuk menulis lebih sedikit kode dan membuat situs web baru dalam waktu singkat.

Dalam tutorial ini, saya akan menjelaskan cara mengatur Django di lingkungan virtual Python menggunakan database PostgreSQL pada Debian 11. Kami kemudian akan menginstal dan mengkonfigurasi Nginx sebagai proxy terbalik untuk Django.

Prasyarat

  • Server yang menjalankan Debian 11.
  • Nama domain valid yang ditunjukkan dengan IP server Anda.
  • Kata sandi root dikonfigurasi di server.

Memulai

Sebelum memulai, sebaiknya perbarui paket sistem Anda ke versi terbaru. Anda dapat melakukannya dengan menggunakan perintah berikut:

apt-get update -y

Setelah semua paket diperbarui, instal alat Python dan paket Nginx lainnya dengan perintah berikut:

apt-get install python3-pip python3-dev libpq-dev curl nginx -y

Setelah semua paket yang diperlukan terinstal, Anda dapat melanjutkan ke langkah berikutnya.

Instal Server Database PostgreSQL

Di sini, kita akan menggunakan PostgreSQL sebagai backend database. Jadi mari kita instal menggunakan perintah berikut:

apt-get install postgresql postgresql-contrib -y

Setelah PostgreSQL terinstal, sambungkan ke shell PostgreSQL dengan perintah berikut:

su - postgres
psql

Selanjutnya, buat database dan pengguna untuk Django dengan perintah berikut:

CREATE DATABASE django;
CREATE USER django WITH PASSWORD 'password';

Selanjutnya, berikan beberapa peran yang diperlukan dengan perintah berikut:

ALTER ROLE django SET client_encoding TO 'utf8';
ALTER ROLE django SET default_transaction_isolation TO 'read committed';
ALTER ROLE django SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE django TO django;

Selanjutnya, keluar dari shell PostgreSQL menggunakan perintah berikut:

\q
exit

Pada titik ini, database PostgreSQL siap untuk Django. Sekarang Anda dapat melanjutkan ke langkah berikutnya.

Buat Lingkungan Virtual Python

Selanjutnya, Anda perlu membuat lingkungan virtual Python untuk membuat proyek Django.

Pertama, upgrade paket PIP ke versi terbaru menggunakan perintah berikut:

pip3 install --upgrade pip

Selanjutnya, verifikasi versi PIP menggunakan perintah berikut:

pip --version

Contoh keluaran:

pip 21.2.4 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)

Selanjutnya, instal paket lingkungan Virtual menggunakan perintah berikut:

pip3 install virtualenv

Selanjutnya, buat direktori untuk proyek Django dan buat lingkungan virtual Django:

mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenv

Selanjutnya, aktifkan lingkungan virtual Django menggunakan perintah di bawah ini:

source djangoenv/bin/activate

Selanjutnya, instal Django, Gunicorn, dan paket lainnya menggunakan perintah berikut:

pip install django gunicorn psycopg2-binary

Pada titik ini, Django dipasang di lingkungan virtual Python. Sekarang, Anda dapat melanjutkan ke langkah berikutnya.

Instal dan Konfigurasi Django

Django menyediakan django-admin.py skrip untuk membuat proyek. Anda dapat menjalankan perintah berikut untuk membuat proyek Django:

django-admin.py startproject djangoapp ~/djangoapp

Selanjutnya, Anda perlu mengedit settings.py dan menentukan pengaturan basis data Anda:

nano ~/djangoapp/djangoapp/settings.py

Ubah baris berikut dengan nama domain Anda:

ALLOWED_HOSTS = ['django.example.com', 'localhost']

Batalkan komentar pada backend database default dan tambahkan pengaturan database PostgreSQL:

#DATABASES = {
#    'default': {
#        'ENGINE': 'django.db.backends.sqlite3',
#        'NAME': BASE_DIR / 'db.sqlite3',
#    }
#}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django',
        'USER': 'django',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',

    }
}

Tambahkan baris berikut di akhir file:

STATIC_URL = '/static/'
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Simpan dan tutup file kemudian migrasikan skema database awal ke database PostgreSQL:

./manage.py makemigrations
./manage.py migrate

Contoh keluaranL:

  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

Selanjutnya, buat akun superuser untuk Django dengan perintah berikut:

./manage.py createsuperuser

Atur nama pengguna dan kata sandi admin Anda seperti yang ditunjukkan di bawah ini:

Username (leave blank to use 'root'): dadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Selanjutnya, kumpulkan semua konten statis ke dalam direktori:

./manage.py collectstatic

Jalankan Server Pengembangan Django

Pada titik ini, Django diinstal dan dikonfigurasi. Anda sekarang dapat memulai server pengembangan Django menggunakan perintah berikut:

./manage.py runserver 0.0.0.0:8000

Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
August 27, 2021 - 10:02:05
Django version 3.2.6, using settings 'djangoapp.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

Sekarang, buka browser web Anda dan akses proyek Django Anda menggunakan URL http://django.example.com:8000/admin/ . Anda akan diarahkan ke halaman login Django:

Berikan nama pengguna, kata sandi admin Anda, dan klik Masuk . Anda akan melihat dasbor Django pada halaman berikut:

Sekarang, kembali ke terminal Anda dan tekan CTRL + C untuk menghentikan server pengembangan Django.

Verifikasi Django dengan Gunicorn

Selanjutnya, Anda juga perlu menguji apakah Gunicorn dapat melayani Django atau tidak. Anda dapat memulai Django menggunakan server Gunicorn dengan perintah berikut:

gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi

Jika semuanya baik-baik saja, Anda akan mendapatkan output berikut:

[2021-08-27 10:04:22 +0000] [47383] [INFO] Starting gunicorn 20.1.0
[2021-08-27 10:04:22 +0000] [47383] [INFO] Listening at: http://0.0.0.0:8000 (47383)
[2021-08-27 10:04:22 +0000] [47383] [INFO] Using worker: sync
[2021-08-27 10:04:22 +0000] [47384] [INFO] Booting worker with pid: 47384

Tekan CTRL + C untuk menghentikan server Gunicorn.

Selanjutnya, nonaktifkan dari lingkungan virtual Python dengan perintah berikut:

deactivate

Buat File Layanan Systemd untuk Gunicorn

Selanjutnya, Anda perlu membuat file layanan systemd untuk Gunicorn untuk memulai dan menghentikan server aplikasi Django.

Anda dapat membuat Gunicorn dengan perintah berikut:

nano /etc/systemd/system/gunicorn.socket

Tambahkan baris berikut:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Simpan dan tutup file kemudian buat file layanan untuk Gunicorn:

nano /etc/systemd/system/gunicorn.service

Tambahkan baris berikut yang cocok dengan jalur proyek Django Anda:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/djangoapp
ExecStart=/root/djangoapp/djangoenv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock          djangoapp.wsgi:application

[Install]
WantedBy=multi-user.target

Simpan dan tutup file kemudian atur izin yang tepat ke direktori proyek Django:

chown -R www-data:root ~/djangoapp

Selanjutnya, muat ulang daemon systemd dengan perintah berikut:

systemctl daemon-reload

Selanjutnya, mulai layanan Gunicorn dan aktifkan untuk memulai saat reboot sistem:

systemctl start gunicorn.socket
systemctl enable gunicorn.socket

Selanjutnya, periksa status Gunicorn menggunakan perintah di bawah ini:

systemctl status gunicorn.socket

Anda akan mendapatkan output berikut:

? gunicorn.socket - gunicorn socket
     Loaded: loaded (/etc/systemd/system/gunicorn.socket; disabled; vendor preset: enabled)
     Active: active (listening) since Fri 2021-08-27 10:05:46 UTC; 6s ago
   Triggers: ? gunicorn.service
     Listen: /run/gunicorn.sock (Stream)
     CGroup: /system.slice/gunicorn.socket

Aug 27 10:05:46 debian11 systemd[1]: Listening on gunicorn socket.

Konfigurasikan Nginx sebagai Proxy Terbalik Untuk Django

Selanjutnya, Anda perlu mengonfigurasi Nginx sebagai proxy terbalik untuk melayani Django.

Untuk melakukannya, buat file konfigurasi Nginx:

nano /etc/nginx/conf.d/django.conf

Tambahkan baris berikut:

server {
     listen 80;
     server_name django.example.com;
    location = /favicon.ico { access_log off; log_not_found off; }


    location /static/ {
         root /root/djangoapp;
     }

    location / {
         include proxy_params;
         proxy_pass http://unix:/run/gunicorn.sock;
     }
}

Simpan dan tutup file kemudian verifikasi Nginx untuk kesalahan konfigurasi apa pun:

nginx -t
Output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Terakhir, restart layanan Nginx untuk menerapkan perubahan:

systemctl restart nginx

Untuk memeriksa status Nginx, jalankan:

systemctl status nginx

Contoh keluaran:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-08-27 10:06:59 UTC; 6s ago
       Docs: man:nginx(8)
    Process: 47494 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 47495 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 47496 (nginx)
      Tasks: 2 (limit: 2341)
     Memory: 2.5M
        CPU: 49ms
     CGroup: /system.slice/nginx.service
             ??47496 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??47497 nginx: worker process

Aug 27 10:06:59 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 27 10:06:59 debian11 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Aug 27 10:06:59 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

Sekarang, Anda dapat mengakses aplikasi Django menggunakan URL http://django.example.com/admin . Anda juga dapat mengakses aplikasi Django menggunakan URL http://django.example.com/ .

Kesimpulan

Selamat! anda telah berhasil menginstal aplikasi Django dengan Gunicorn dan Nginx sebagai proxy terbalik. Anda sekarang dapat mulai menyebarkan aplikasi Python Anda menggunakan kerangka kerja Django.


Debian
  1. Cara Menginstal Kerangka Aplikasi Web Django di Debian 10

  2. Cara Menginstal osquery di Debian 10

  3. Cara Menginstal WildFly di Debian 11

  1. Cara Menginstal Kerangka Ionic di Debian 10

  2. Cara Menginstal PHP 8 di Debian 11

  3. Cara Menginstal GitLab di Debian 11

  1. Cara Instal Symfony 5 Framework dengan Nginx di Debian 10

  2. Cara Menginstal Jenkins di Debian 11

  3. Cara Memasang Kokpit di Debian 11