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