GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Django 3.2 sur Ubuntu 20.04 avec Apache et WSGI

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.


Ubuntu
  1. Comment installer et configurer Nextcloud avec Apache sur Ubuntu 18.04

  2. Comment installer et sécuriser phpMyAdmin avec Apache sur Ubuntu 18.04

  3. Comment installer le logiciel Ghost Blog avec Apache et SSL sur Ubuntu 16.04

  4. Comment installer Apache Hive avec Hadoop sur CentOS, Ubuntu et LinuxMint

  5. Comment installer Apache Maven sur Ubuntu 18.04 et 16.04

Comment installer et configurer le module mod_pagespeed avec Apache sur Ubuntu 20.04 LTS

Comment installer le logiciel Ghost Blog avec Apache et SSL sur Ubuntu 15.10

Comment installer Drupal 7 avec Apache sur Ubuntu 14.04

Comment installer PrestaShop sur Ubuntu 20.04 avec Apache

Comment installer phpBB avec Apache sur Ubuntu 20.04

Comment installer Drupal avec Apache sur Debian et Ubuntu