Cómo instalar Django Python Framework en CentOS 8

1 mar 2021 6 min di lettura
Cómo instalar Django Python Framework en CentOS 8
Indice dei contenuti

Introducción

Django es un marco web gratuito, de código abierto y de alto nivel que se utiliza para desarrollar aplicaciones web Python. Viene con un conjunto de herramientas que le permite crear aplicaciones web seguras y escalables. Su principal objetivo es facilitar la creación de aplicaciones complejas y cuidar la estructura interna.

En este tutorial aprenderemos cómo instalar Django y configurar Nginx como un proxy inverso para Django en CentOS 8.

Prerrequisitos

  • Un servidor que ejecuta CentOS 8.
  • Un usuario no root con privilegios sudo.

Si desea instalar Django Python Framework en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:

ssh root@IP_DEL_SERVER

A continuación, deberá ingresar la contraseña del usuario root.

Si no está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root a su nombre de usuario:

ssh nome_utente@IP_DEL_SERVER

Luego se le pedirá que ingrese su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Instalar Python y PIP

Django es un marco basado en Python, por lo que deberá instalar Python y PIP en su sistema. También instalaremos el editor de texto nano-terminal para facilitar la edición de archivos; de lo contrario, puede usar vi instalado por defecto en su sistema. Puede instalarlos ejecutando el siguiente comando:

sudo dnf install nano python36 python3-pip -y

Una vez instalados ambos paquetes, puede continuar con el siguiente paso.

Instalar Django

Puede instalar Django con el comando PIP como se muestra a continuación:

sudo pip3 install Django

Después de instalar Django, puede verificar la versión de Django con el siguiente comando:

django-admin --version

Debería ver la versión de Django en el siguiente resultado:

3.0.4

Crea un proyecto de Django

En este punto, Django está instalado. Ahora es el momento de crear una nueva aplicación Django.

Puede crear una nueva aplicación Django usando el django-admin en el /opt como se muestra a continuación:

cd /opt
django-admin startproject djangoproject

Una vez creado el proyecto django, cambie el directorio a djangoproject y migre los cambios con los siguientes comandos:

cd djangoproject
sudo python3 manage.py migrate

Debería recibir un mensaje de salida similar al siguiente:

Operations to perform:
 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 sessions.0001_initial... OK

A continuación, deberá crear una cuenta de usuario administrador para la gestión de proyectos de Django. Puedes crearlo con el siguiente comando:

sudo python3 manage.py createsuperuser

Se le pedirá que proporcione su nombre de usuario, correo electrónico y contraseña. Puede suministrarlos según su elección como se muestra a continuación:

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

Cuando termine, puede continuar con el siguiente paso.

Inicie la aplicación Django

De forma predeterminada, no se puede acceder a la aplicación Django desde hosts remotos. Por lo tanto, deberá permitir Django para hosts externos. Puede hacer esto agregando la IP de su servidor o el nombre de dominio en el archivo settings.py

sudo nano /opt/djangoproject/djangoproject/settings.py

Cambie la siguiente línea:

ALLOWED_HOSTS = ['tuo_dominio_o_Ip']

Guarde y cierre el archivo. Luego, inicie la aplicación Django con los siguientes comandos:

cd /opt/djangoproject
python3 manage.py runserver 0.0.0.0:8000

Debería ver el siguiente resultado:

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

 System check identified no issues (0 silenced).
 March 25, 2020 - 22:37:03
 Django version 3.0.4, using settings 'djangoproject.settings'
 Starting development server at http://0.0.0.0:8000/Quit the server with CONTROL-C.

En este punto, la aplicación Django ahora se inicia y se ejecuta en el puerto 8000. Ahora puede continuar con el siguiente paso.

Configurar SELinux y Firewall (opcional)

A continuación, si tiene el firewall CentOs activo, deberá permitir los puertos 8000 y 80 través de firewalld. Puede permitirlos con los siguientes comandos:

sudo firewall-cmd --permanent --add-port=8000/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

Luego, configure SELinux con el siguiente comando:

sudo setsebool httpd_can_network_connect on -P

Cuando termine, puede continuar con el siguiente paso.

Inicie sesión en la aplicación Django

Puede acceder a la aplicación Django visitando la URL https://tuo_dominio_o_ip:8000. Debería ver la siguiente página:

También puede iniciar sesión en la interfaz de administración de Django usando la URL https://tuo_dominio_o_ip:8000/admin. Debería ver la siguiente página:

Proporcione el nombre de usuario y la contraseña del administrador y haga clic en el botón Iniciar sesión.

Instalar Nginx y Gunicorn

En esta sección, instalaremos Gunicorn para crear y administrar el servicio Django y Nginx para servir la aplicación Django.

Primero, instale Nginx con el siguiente comando:

sudo dnf install nginx -y

Luego, instale Gunicorn usando el comando PIP como se muestra a continuación:

sudo pip3 install gunicorn

Una vez que ambos paquetes estén instalados, inicie el servicio Nginx y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:

sudo systemctl start
sudo systemctl enable nginx

A continuación, cambie la propiedad del /opt/djangoproject a Nginx como se muestra a continuación:

sudo chown -R nginx:nginx /opt/djangoproject

Crea un archivo de servicio Systemd para Django

A continuación, cree un archivo de servicio systemd para la gestión de servicios de Django con el siguiente comando:

sudo nano /etc/systemd/system/django.service

Agrega las siguientes líneas:

[Unit]
 Description=django daemon
 After=network.target

 [Service]
 User=nginx
 Group=nginx
 WorkingDirectory=/opt/djangoproject
 ExecStart=/usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:application

 [Install]
 WantedBy=multi-user.target

Guarde y cierre el archivo, luego vuelva a cargar el demonio systemd con el siguiente comando:

sudo systemctl daemon-reload

Luego, inicie el servicio Django y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:

sudo systemctl start django
sudo systemctl enable django

Ahora puede verificar el estado del servicio Django con el siguiente comando:

sudo systemctl status django

Debería ver el siguiente resultado:

● django.service - django daemon
 Loaded: loaded (/etc/systemd/system/django.service; enabled; vendor preset: disabled)
 Active: active (running) since Wed 2020-03-25 23:49:52 CET; 13s ago
 Main PID: 4196 (gunicorn)
 Tasks: 4 (limit: 12251)
 Memory: 92.6M
 CGroup: /system.slice/django.service
 ├─4196 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:application
 ├─4199 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:application
 ├─4200 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:application
 └─4202 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:application

Configurar Nginx para Django

A continuación, deberá configurar Nginx como un proxy inverso para Django. Para hacer esto, cree un nuevo archivo de configuración de Nginx con el siguiente comando:

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

Agrega las siguientes líneas:

server {
 listen 80;
 server_name tuo_dominio_o_ip;

 location = /favicon.ico { access_log off; log_not_found off; }
 location /static/{
 root /opt/djangoproject;
 }

 location /{
 proxy_set_header Host $http_host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_pass http://unix:/opt/djangoproject/djangoproject.sock;
 }
 }

Guarde y cierre el archivo cuando termine. Por lo tanto, pruebe nginx en busca de errores de sintaxis con el siguiente comando:

sudo nginx -t

Con suerte, debería obtener el siguiente resultado:

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

Luego, reinicie el servicio Nginx para implementar los cambios:

sudo systemctl start nginx

También puede verificar Nginx con el siguiente comando:

sudo systemctl status nginx

Debería obtener el siguiente resultado:

● nginx.service - The nginx HTTP and reverse proxy server
 Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
 Active: active (running) since Wed 2020-03-25 23:53:07 CET; 9s ago
 Process: 4295 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
 Process: 4293 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
 Process: 4292 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 4297 (nginx)
 Tasks: 2 (limit: 12251)
 Memory: 3.9M
 CGroup: /system.slice/nginx.service
 ├─4297 nginx: master process /usr/sbin/nginx
 └─4298 nginx: worker process

Ahora puede acceder a su aplicación Django usando la URL http://tuo_dominio_o_ip.

Conclusión

En esta guía, aprendimos cómo instalar Django en CentOS 8. También aprendimos cómo usar Gunicorn para crear y administrar el servicio Django y configurar Nginx como un proxy inverso para servir la aplicación Django.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.