GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar Django 3.2 en Ubuntu 20.04 con Apache y WSGI

Django es un marco web basado en Python que sigue Model-Template-Views (MTV). Django es una herramienta popular para el desarrollo web porque permite el desarrollo rápido de sitios web.

En este tutorial, lo guiaremos sobre cómo configurar Django. Lo guiaremos con la configuración de producción preferida con entorno virtual.

Si buscas un VPS proveedor para ejecutar sus aplicaciones, puede consultar las ofertas entre servidores.

Comencemos con la configuración.

1 1. Actualización del sistema

sudo apt update -y && apt upgrade -y

2 2. Instalación de pip y entorno virtual

Primero verifique la versión de Python3 de su sistema.

# python3 -V
Python 3.8.10

Instalemos PIP y Venv.

sudo apt install python3-pip python3-venv 

3 3. Crear un directorio de proyectos

Vamos a crear un directorio de proyectos.

sudo mkdir /var/www/django

Cambia el directorio al directorio del proyecto.

cd /var/www/django

Vamos a crear un entorno virtual.

python3 -m venv django_venv

Activa el entorno virtual.

source django_venv/bin/activate

4 4. Instalación de Django 3.2

Instalaremos Django con PIP.

(django_venv) pip install django==3.2

Verifique la instalación.

(django_venv) django-admin --version
Output:
3.2

5 5. Creación de un proyecto

Vamos a crear un proyecto Django.

NOTA: No olvide incluir el punto (.) al final para evitar demasiados directorios anidados.

(django_venv) django-admin startproject myproject .

Después de crear el proyecto, necesitamos migrar la base de datos. Pero primero debemos crear una base de datos MySQL/MariaDB antes de realizar la migración. Asumimos que ya tiene un servicio MySQL/MariaDb en ejecución.

Vamos a crear la base de datos.

MariaDB [(none)]> create database django;
MariaDB [(none)]> grant all privileges on django.* to 'django'@'localhost' identified by 'mypassword';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

Nota :No olvide cambiar la contraseña con la contraseña de su elección.

Actualicemos settings.py .

sudo nano myproject/settings.py

La base de datos predeterminada establecida en Django es SQLite. Dado que estamos configurando un sitio de producción, lo actualizaremos para usar MySQL/MariaDB.

Permítanos actualizarlo a continuación:

DATABASES = {
    'default': {
        'ENGINE'  : 'django.db.backends.mysql',  
        'NAME'    : 'django',                 # database name
        'USER'    : 'django',                 # Mysql user    
        'PASSWORD': 'mypassword',             # Mysql password       
        'HOST'    : 'localhost',                
        'PORT'    : '3306',
    }
}

Antes de ejecutar la migración, primero instalemos mysql-config .

Si está utilizando MySQL, ejecute este comando.

sudo apt-get install libmysqlclient-dev

Si está utilizando MariaDB, ejecute esto.

sudo apt-get install libmariadbclient-dev

Luego, instalemos el controlador Python MySQL.

(django_venv) pip install mysqlclient

Ahora ejecutemos la migración.

(django_venv) python3 manage.py migrate
Output:

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 auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

6 6. Acceso a la aplicación Django

Antes de que podamos acceder a nuestra aplicación Django, debemos agregar nuestra dirección IP o dominio a ALLOWED_HOSTS en settings.py . Actualicemos settings.py.

sudo nano myproject/settings.py

Vaya a "ALLOWED_HOSTS ” sección.

ALLOWED_HOSTS = ['your_server_ip', 'domain.com']

Actualizar "your_server_ip ” y “dominio.com ” con su dirección IP y dominio y luego guarde.

Antes de que podamos acceder a nuestra aplicación Django, debemos ejecutar este comando.

 python3 manage.py runserver 0.0.0.0:8000

Ahora puede acceder a su aplicación Django en http://IPaddress:8000

Vamos a crear un usuario administrador para nuestro proyecto

 (django_venv) python3 manage.py createsuperuser

Después de ejecutar el comando, proporcione su nombre de usuario, correo electrónico y contraseña de administrador.

7 7. Configuración de la producción con Apache y WSGI

Para configurar la producción, instalaremos Apache y el módulo Apache mod_wsgi.

sudo apt-get install apache2 libapache2-mod-wsgi-py3

Vamos a crear un host virtual.

sudo nano /etc/apache2/sites-available/django.conf

Agregue lo siguiente al host virtual.

Nota:No olvide reemplazar el dominio.com con tu propio dominio.

<VirtualHost *:80>
        ServerName domain.com
        ServerAlias www.domain.com
        DocumentRoot /var/www/django
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        Alias /static/ /var/www/django/myproject/static/
        <Directory /var/www/django/myproject/static>
                Require all granted
        </Directory>

        Alias /media/ /var/www/django/myproject/media/
        <Directory /var/www/django/myproject/media>
                Require all granted
        </Directory>

        <Directory /var/www/django/myproject>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        WSGIDaemonProcess mydjangoproject python-path=/var/www/django python-home=/var/www/django/django_venv
        WSGIProcessGroup mydjangoproject
        WSGIScriptAlias / /var/www/django/myproject/wsgi.py
</VirtualHost>

Activemos el host virtual:

sudo a2ensite django.conf

Reinicie el servidor web Apache.

sudo systemctl restart apache2

Ahora editemos de nuevo settings.py para que nuestro servidor web sirva los archivos estáticos.

sudo nano myproject/settings.py

En la parte superior del archivo agregue:

import os

Luego ve a archivos estáticos y asegúrese de agregar estos valores:

PROJECT_ROOT =os.path.dirname(os.path.abspath(__file__))

STATIC_ROOT =os.path.join(PROJECT_ROOT, 'static')

Debería verse como a continuación.

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.2/howto/static-files/
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

Ahora recopilemos todo el contenido estático.

(django_venv) python3 manage.py collectstatic
Output:
128 static files copied to '/var/www/django/myproject/static'.

Reinicie el servicio de Apache:

sudo systemctl restart apache2

Eso es todo, el sitio de producción ha sido configurado. Ahora puede acceder a su aplicación Django con su dominio en http://domain.com. Si desea proteger su sitio e instalar un certificado SSL, puede consultar este artículo.

8 Conclusión

Ha aprendido a instalar Django 3.2 en Ubuntu 20.04 con Apache y WSGI. Si le gusta este artículo, es posible que también le gusten nuestros otros artículos en este sitio.


Ubuntu
  1. Cómo instalar y configurar Nextcloud con Apache en Ubuntu 18.04

  2. Cómo instalar y proteger phpMyAdmin con Apache en Ubuntu 18.04

  3. Cómo instalar el software Ghost Blog con Apache y SSL en Ubuntu 16.04

  4. Cómo instalar Apache Hive con Hadoop en CentOS, Ubuntu y LinuxMint

  5. Cómo instalar Apache Maven en Ubuntu 18.04 y 16.04

Cómo instalar y configurar el módulo mod_pagespeed con Apache en Ubuntu 20.04 LTS

Cómo instalar el software Ghost Blog con Apache y SSL en Ubuntu 15.10

Cómo instalar Drupal 7 con Apache en Ubuntu 14.04

Cómo instalar PrestaShop en Ubuntu 20.04 con Apache

Cómo instalar phpBB con Apache en Ubuntu 20.04

Cómo instalar Drupal con Apache en Debian y Ubuntu