GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Django Framework en Debian 11

Django es un marco de desarrollo web gratuito y de código abierto escrito en Python. Se utiliza para desarrollar aplicaciones de Python complejas y basadas en bases de datos. Viene con un conjunto de scripts de Python para crear proyectos de Python. Se puede ejecutar en cualquier sistema operativo que pueda ejecutar Python, incluidos Windows, macOS, Linux/Unix y Solaris. Ayuda a los desarrolladores a escribir menos código y crear un nuevo sitio web en poco tiempo.

En este tutorial, explicaré cómo configurar Django en el entorno virtual Python usando la base de datos PostgreSQL en Debian 11. Luego instalaremos y configuraremos Nginx como un proxy inverso para Django.

Requisitos

  • Un servidor que ejecuta Debian 11.
  • Un nombre de dominio válido apuntado con la IP de su servidor.
  • Se configura una contraseña raíz en el servidor.

Cómo empezar

Antes de comenzar, es una buena idea actualizar los paquetes de su sistema a la última versión. Puedes hacerlo usando el siguiente comando:

apt-get update -y

Una vez que todos los paquetes estén actualizados, instale otras herramientas de Python y el paquete Nginx con el siguiente comando:

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

Una vez que todos los paquetes necesarios estén instalados, puede continuar con el siguiente paso.

Instalar servidor de base de datos PostgreSQL

Aquí, usaremos PostgreSQL como base de datos. Así que vamos a instalarlo usando el siguiente comando:

apt-get install postgresql postgresql-contrib -y

Una vez que PostgreSQL esté instalado, conéctese al shell de PostgreSQL con el siguiente comando:

su - postgres
psql

A continuación, cree una base de datos y un usuario para Django con el siguiente comando:

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

A continuación, otorgue algunos roles requeridos con el siguiente comando:

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;

Luego, salga del shell de PostgreSQL usando el siguiente comando:

\q
exit

En este punto, la base de datos PostgreSQL está lista para Django. Ahora puede continuar con el siguiente paso.

Crear un entorno virtual de Python

A continuación, deberá crear un entorno virtual de Python para crear un proyecto de Django.

Primero, actualice el paquete PIP a la última versión usando el siguiente comando:

pip3 install --upgrade pip

A continuación, verifique la versión de PIP con el siguiente comando:

pip --version

Salida de muestra:

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

A continuación, instale el paquete de entorno virtual con el siguiente comando:

pip3 install virtualenv

A continuación, cree un directorio para el proyecto Django y cree un entorno virtual Django:

mkdir ~/djangoapp
cd ~/djangoapp
virtualenv djangoenv

A continuación, active el entorno virtual de Django usando el siguiente comando:

source djangoenv/bin/activate

Luego, instale Django, Gunicorn y otros paquetes usando el siguiente comando:

pip install django gunicorn psycopg2-binary

En este punto, Django está instalado en el entorno virtual de Python. Ahora, puede continuar con el siguiente paso.

Instalar y configurar Django

Django proporciona un django-admin.py script para crear un proyecto. Puede ejecutar el siguiente comando para crear un proyecto Django:

django-admin.py startproject djangoapp ~/djangoapp

A continuación, deberá editar settings.py y definir la configuración de su base de datos:

nano ~/djangoapp/djangoapp/settings.py

Cambie la siguiente línea con su nombre de dominio:

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

Descomente el backend de la base de datos predeterminado y agregue la configuración de la base de datos 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': '',

    }
}

Agregue las siguientes líneas al final del archivo:

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

Guarde y cierre el archivo, luego migre el esquema de la base de datos inicial a la base de datos PostgreSQL:

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

Salida de muestraL:

  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

A continuación, cree una cuenta de superusuario para Django con el siguiente comando:

./manage.py createsuperuser

Configure su nombre de usuario y contraseña de administrador como se muestra a continuación:

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

Luego, reúna todo el contenido estático en el directorio:

./manage.py collectstatic

Ejecutar el servidor de desarrollo Django

En este punto, Django está instalado y configurado. Ahora puede iniciar el servidor de desarrollo de Django usando el siguiente comando:

./manage.py runserver 0.0.0.0:8000

Si todo está bien, debería obtener el siguiente resultado:

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.

Ahora, abra su navegador web y acceda a su proyecto Django usando la URL http://django.example.com:8000/admin/ . Será redirigido a la página de inicio de sesión de Django:

Proporcione su nombre de usuario y contraseña de administrador y haga clic en Iniciar sesión . Debería ver el panel de control de Django en la siguiente página:

Ahora, regresa a tu terminal y presiona CTRL + C para detener el servidor de desarrollo de Django.

Verificar Django con Gunicorn

A continuación, también deberá probar si Gunicorn puede servir a Django o no. Puede iniciar Django usando el servidor Gunicorn con el siguiente comando:

gunicorn --bind 0.0.0.0:8000 djangoapp.wsgi

Si todo está bien, debería obtener el siguiente resultado:

[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

Presione CTRL + C para detener el servidor Gunicorn.

A continuación, desactívelo desde el entorno virtual de Python con el siguiente comando:

deactivate

Crear un archivo de servicio de Systemd para Gunicorn

A continuación, deberá crear un archivo de servicio systemd para que Gunicorn inicie y detenga el servidor de aplicaciones Django.

Puedes crear un Gunicorn con el siguiente comando:

nano /etc/systemd/system/gunicorn.socket

Agregue las siguientes líneas:

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Guarde y cierre el archivo y luego cree un archivo de servicio para Gunicorn:

nano /etc/systemd/system/gunicorn.service

Agregue las siguientes líneas que coincidan con la ruta de su proyecto Django:

[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

Guarde y cierre el archivo, luego establezca el permiso adecuado para el directorio del proyecto Django:

chown -R www-data:root ~/djangoapp

A continuación, vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio Gunicorn y habilítelo para que se inicie al reiniciar el sistema:

systemctl start gunicorn.socket
systemctl enable gunicorn.socket

Luego, verifique el estado del Gunicorn usando el siguiente comando:

systemctl status gunicorn.socket

Deberías obtener el siguiente resultado:

? 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.

Configurar Nginx como proxy inverso para Django

A continuación, deberá configurar Nginx como un proxy inverso para servir a Django.

Para hacerlo, cree un archivo de configuración de Nginx:

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

Agregue las siguientes líneas:

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;
     }
}

Guarde y cierre el archivo, luego verifique el Nginx por cualquier error de configuración:

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

Finalmente, reinicie el servicio Nginx para aplicar los cambios:

systemctl restart nginx

Para comprobar el estado de Nginx, ejecute:

systemctl status nginx

Salida de muestra:

? 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.

Ahora, puede acceder a la aplicación Django usando la URL http://django.example.com/admin . También puede acceder a la aplicación Django usando la URL http://django.example.com/ .

Conclusión

¡Felicidades! Ha instalado con éxito una aplicación Django con Gunicorn y Nginx como proxy inverso. Ahora puede comenzar a implementar su aplicación Python utilizando el marco Django.


Debian
  1. Cómo instalar Django Web Application Framework en Debian 10

  2. Cómo instalar osquery en Debian 10

  3. Cómo instalar Ionic Framework en Debian 10

  4. Cómo instalar PHP 8 en Debian 11

  5. Cómo instalar WildFly en Debian 11

Cómo instalar Django en Debian 10

Cómo instalar Ionic Framework en Debian 10

Cómo instalar Django en Debian 11

Cómo instalar el marco de Play en Debian 11

Cómo instalar LEMP en Debian 7

Cómo instalar CodeIgniter PHP Framework en Debian 10