Django est un framework Web basé sur Python qui suit les Model-Template-Views (MTV). Django est un outil populaire pour le développement Web car il permet un développement rapide des sites Web.
Dans ce didacticiel, nous vous expliquerons comment configurer Django. Nous vous guiderons avec la configuration de production la plus préférée avec un environnement virtuel.
Si vous cherchez un VPS fournisseur pour exécuter vos applications, vous pouvez consulter les offres inter-serveurs.
Commençons par la configuration.
1 1. Mise à jour du système
sudo apt update -y && apt upgrade -y
2 2. Installation de pip et de l'environnement virtuel
Vérifiez d'abord la version Python3 de votre système.
# python3 -V
Python 3.8.10
Installons PIP et Venv.
sudo apt install python3-pip python3-venv
3 3. Créer un répertoire de projet
Créons un répertoire de projet.
sudo mkdir /var/www/django
Remplacez le répertoire par le répertoire du projet.
cd /var/www/django
Créons un environnement virtuel.
python3 -m venv django_venv
Activez l'environnement virtuel.
source django_venv/bin/activate
4 4. Installer Django 3.2
Nous allons installer Django avec PIP.
(django_venv) pip install django==3.2
Vérifiez l'installation.
(django_venv) django-admin --version
Output:
3.2
5 5. Créer un projet
Créons un projet Django.
REMARQUE : N'oubliez pas d'inclure le point (.) à la fin pour éviter trop de répertoires imbriqués.
(django_venv) django-admin startproject myproject .
Après avoir créé le projet, nous devons migrer la base de données. Mais nous devons d'abord créer une base de données MySQL/MariaDB avant de procéder à la migration. Nous avons supposé que vous disposiez déjà d'un service MySQL/MariaDb en cours d'exécution.
Créons la base de données.
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;
Remarque :N'oubliez pas de modifier le mot de passe avec le mot de passe de votre choix.
Mettons à jour settings.py .
sudo nano myproject/settings.py
La base de données par défaut définie dans Django est SQLite. Puisque nous mettons en place un site de production, nous allons le mettre à jour pour utiliser MySQL/MariaDB.
Mettons-le à jour avec ci-dessous :
DATABASES = {
'default': {
'ENGINE' : 'django.db.backends.mysql',
'NAME' : 'django', # database name
'USER' : 'django', # Mysql user
'PASSWORD': 'mypassword', # Mysql password
'HOST' : 'localhost',
'PORT' : '3306',
}
}
Avant d'exécuter la migration, installons d'abord mysql-config .
Si vous utilisez MySQL, exécutez cette commande.
sudo apt-get install libmysqlclient-dev
Si vous utilisez MariaDB, lancez ceci.
sudo apt-get install libmariadbclient-dev
Alors installons le pilote Python MySQL.
(django_venv) pip install mysqlclient
Exécutons maintenant la migration.
(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. Accéder à l'application Django
Avant de pouvoir accéder à notre application Django, nous devons ajouter notre adresse IP ou notre domaine à ALLOWED_HOSTS dans settings.py . Mettons à jour settings.py.
sudo nano myproject/settings.py
Accédez à "ALLOWED_HOSTS ” section.
ALLOWED_HOSTS = ['your_server_ip', 'domain.com']
Mettez à jour "your_server_ip " et " domaine.com ” avec votre adresse IP et votre domaine puis enregistrez.
Avant de pouvoir accéder à notre application Django, nous devons exécuter cette commande.
python3 manage.py runserver 0.0.0.0:8000
Vous pouvez désormais accéder à votre application Django sur http://IPaddress:8000
Créons un utilisateur Admin pour notre projet
(django_venv) python3 manage.py createsuperuser
Après avoir exécuté la commande, indiquez votre nom d'utilisateur, votre adresse e-mail et votre mot de passe d'administrateur.
7 7. Mise en place de la production avec Apache et WSGI
Pour configurer la production, nous allons installer Apache et le module Apache mod_wsgi.
sudo apt-get install apache2 libapache2-mod-wsgi-py3
Créons un hôte virtuel.
sudo nano /etc/apache2/sites-available/django.conf
Ajoutez les éléments suivants à l'hôte virtuel.
Remarque :N'oubliez pas de remplacer le domaine.com avec votre propre domaine.
<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>
Activons le Virtual Host :
sudo a2ensite django.conf
Redémarrez le serveur Web Apache.
sudo systemctl restart apache2
Maintenant, éditons à nouveau le settings.py afin que notre serveur Web serve les fichiers statiques.
sudo nano myproject/settings.py
En haut du fichier, ajoutez :
import os
Allez ensuite au “ fichiers statiques “ et assurez-vous d'ajouter ces valeurs :
PROJECT_ROOT =os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT =os.path.join(PROJECT_ROOT, 'statique')
Il devrait ressembler à ci-dessous.
# 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')
Maintenant, rassemblons tout le contenu statique.
(django_venv) python3 manage.py collectstatic
Output:
128 static files copied to '/var/www/django/myproject/static'.
Redémarrez le service Apache :
sudo systemctl restart apache2
Ça y est le site de production a été mis en place. Vous pouvez désormais accéder à votre application Django avec votre domaine à l'adresse http://domain.com. Si vous souhaitez sécuriser votre site et installer un certificat SSL, vous pouvez consulter cet article.
8 Conclusion
Vous avez appris à installer Django 3.2 sur Ubuntu 20.04 avec Apache et WSGI. Si vous aimez cet article, vous aimerez peut-être aussi nos autres articles sur ce site.