GNU/Linux >> Tutoriales Linux >  >> Cent OS

Instale Django Python Framework en Rocky Linux 8 / CentOS 8

Django es un marco web de alto nivel gratuito y de código abierto que se utiliza para desarrollar aplicaciones web de Python. Django viene con un conjunto de herramientas que lo ayudan a crear aplicaciones web seguras y escalables. Su objetivo principal es facilitar la creación de aplicaciones complejas y mantener la estructura interna.

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

Condición previa

  • Servidor con sistema operativo CentOS 8.
  • Inicie sesión como root o usuario con privilegios sudo

Instalar paquetes requeridos

Django es un marco basado en Python, por lo que debe instalar Python y PIP en su sistema. Para poder instalarlo, ejecute el siguiente comando:

dnf install python36 python3-pip -y

Una vez que ambos paquetes estén instalados, continúe con el siguiente paso.

Instalar Django en Rocky Linux 8

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

pip3 install Django

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

django-admin --version

Verá la versión de Django en el siguiente resultado:

3.0.3
 

al momento de escribir este artículo, la versión de Django es la versión 3.0.3

Crea un proyecto Django

En este punto, Django se ha instalado con éxito. Ahora es el momento de crear una aplicación Django.

Puede crear aplicaciones Django usando el comando django-admin en el directorio /opt como se muestra a continuación:

cd /opt
 django-admin startproject djangoproject

Una vez que se crea el proyecto django, cambie el directorio a djangoproject y migre los cambios con el siguiente comando:

cd djangoproject
 python3 manage.py migrate

Obtendrá el siguiente resultado:

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, debe crear una cuenta de usuario administrador para administrar su proyecto Django con el siguiente comando:

python3 manage.py createsuperuser

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

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

Una vez hecho esto, puede pasar al siguiente paso.

Inicie la aplicación Django

De forma predeterminada, solo se puede acceder a las aplicaciones de Django desde localhost, para que Django se conecte a Internet, debe permitir Django para hosts externos. Puede hacerlo agregando la IP de su servidor en IP settings.py:

nano /opt/djangoproject/djangoproject/settings.py

Cambie la siguiente línea:

ALLOWED_HOSTS = ['ip_server_Anda']
 

Guarde y cierre el archivo. Luego, ejecute la aplicación Django con el siguiente comando:

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

Verá el siguiente resultado:

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

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

Django application is now started and runs on port 8000. 
 

En este punto, la aplicación Django ahora está funcionando en el puerto 8000. Ahora puede pasar al siguiente paso.

Configurar SELinux y Firewall en Rocky Linux 8

A continuación, debe permitir los puertos 8000 y 80 a través de firewalld. Puede permitirlos con el siguiente comando:

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

A continuación, configure SELinux con el siguiente comando:

setsebool httpd_can_network_connect on -P

Una vez hecho esto, puede pasar al siguiente paso.

Acceder a las aplicaciones de Django

Puede acceder a la aplicación Django visitando la URL http://your-server-ip:8000. Verá la siguiente página:

También puede acceder a la interfaz de administración de Django usando la URL http://server-ip:8000/admin. 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 en . Verá la siguiente página:

Instalar Nginx y Gunicorn en Rocky Linux 8

En esta sección, instalaremos Gunicorn para crear y administrar servicios Django y Nginx para servir aplicaciones Django.

Primero, instale Nginx con el siguiente comando:

dnf install nginx -y

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

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:

systemctl start nginx
 systemctl enable nginx

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

chown -R nginx:nginx /opt/djangoproject

Crear servicio de sistema de archivos para Django

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

nano /etc/systemd/system/django.service

Agregue la siguiente línea:

[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:

systemctl daemon-reload

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

systemctl start django
 systemctl enable django

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

systemctl status django

Verá el siguiente resultado:

? django.service - django daemon
   Loaded: loaded (/etc/systemd/system/django.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-02 22:27:51 UTC; 3min 32s ago
 Main PID: 960 (django)
    Tasks: 4 (limit: 25028)
   Memory: 95.2M
   CGroup: /system.slice/django.service
           ??960 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>
           ??964 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>
           ??965 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>
           ??966 /usr/bin/python3.6 /usr/local/bin/gunicorn --workers 3 --bind unix:/opt/djangoproject/djangoproject.sock djangoproject.wsgi:a>

Mar 02 22:27:51 centos8 systemd[1]: Started django daemon.
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [960] [INFO] Starting django 20.0.4
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [960] [INFO] Listening at: unix:/opt/djangoproject/djangoproject.sock (960)
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [960] [INFO] Using worker: sync
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [964] [INFO] Booting worker with pid: 964
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [965] [INFO] Booting worker with pid: 965
Mar 02 22:27:52 centos8 django[960]: [2020-03-02 22:27:52 -0500] [966] [INFO] Booting worker with pid: 966
h pid: 966
 

Configurar Nginx para Django

A continuación, configure Nginx como un proxy inverso para Django. Para hacerlo, cree un nuevo archivo de configuración de Nginx con el siguiente comando:

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

Agregue la siguiente línea:

server {
    listen 80;
    server_name your-server-ip

    location =https://cdn.linuxid.net/favicon.ico?x87109 { 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 haya terminado. Luego, pruebe nginx en busca de errores de sintaxis con el siguiente comando:

nginx -t

Si no hay errores, aparecerá el siguiente resultado:

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

A continuación, reinicie el servicio Nginx para implementar los cambios:

systemctl start nginx

También puede verificar Nginx con el siguiente comando:

systemctl status nginx

Obtendrá el siguiente resultado:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-02 22:28:13 EST; 4min 14s ago
  Process: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 985 (nginx)
    Tasks: 3 (limit: 25028)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??985 nginx: master process /usr/sbin/nginx
           ??986 nginx: worker process
           ??987 nginx: worker process

Mar 02 22:28:12 centos8 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 02 22:28:12 centos8 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 02 22:28:12 centos8 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 02 22:28:13 centos8 systemd[1]: Started The nginx HTTP and reverse proxy server.
 

Ahora puede acceder a las aplicaciones de Django utilizando la URL http://server_IP_address.

Conclusión

En esta guía, aprendimos a instalar Django en Rocky Linux 8 y CentOS 8. También aprendimos a usar Gunicorn para crear y administrar servicios Django y configurar Nginx como un proxy inverso para servir aplicaciones Django.


Cent OS
  1. Cómo instalar PostgreSQL en CentOS 8 / Rocky Linux 8 / RHEL 8

  2. Cómo instalar Mysql 8 en Rocky Linux/Centos 8

  3. Cómo instalar Python 2/3 en Rocky Linux/Centos 8

  4. Cómo instalar el cliente FreeIPA en Rocky Linux/Alma Linux/CentOS 8

  5. Cómo instalar Python 3.10 en Rocky Linux 8

Cómo instalar Python 3.9 en Rocky Linux 8

Cómo instalar VirtualBox en Rocky Linux 8 / CentOS 8 / RHEL 8

Cómo instalar Apache Maven en Rocky Linux / CentOS 8

Cómo instalar Spotify en CentOS 8 / Rocky Linux

Cómo instalar Rabbitmq en Rocky Linux/Alma Linux/Centos 8

Cómo instalar Python 3.9 en Rocky Linux