Introduction
Une fois terminé le développement en local de votre site avec Django, se pose la question de savoir comment déployer celui-ci. Dans cet article nous allons parcourir les principaux éléments et difficultés pouvant apparaitre lors du déploiement de Django sur CentOS avec apache et mod_wsgi.
Nous supposerons ici que python et apache sont déjà installés sur le serveur. De plus, le déploiement d'un site développé avec Django nécessite de modifier certains fichiers comme "httpd.conf" (fichier de configuration d'apache). Vous devez donc posséder un VPS (serveur dédié virtuel) ou un serveur dédié pour réaliser le déploiement.
Remarque: avec un VPS ou un serveur dédié, on doit vous fournir une adresse IP et un mot de passe pour vous connecter au serveur. La première chose que vous pouvez alors faire et de vérifier en tapant directement l'adresse IP dans votre navigateur internet (Internet Explorer, Safari, etc). Vous devez alors normalement obtenir une page ressemblant à la figure 1.
Préparer le déploiement
Avant d'envoyer votre site sur le serveur il est préférable de préparer un peu le terrain et d'installer un certains nombres de packages sur le serveur. Nous allons donc dans ce chapitre parcourir quelques étapes préliminaires:
Etape 1: Connectez-vous au serveur avec la commande ssh:
ssh adresse_ip -l root
et entrez votre mot de passe.
Remarque: une fois connecté au serveur, si vous n'êtes pas familier avec CentOS (qui est une distribution GNU/Linux principalement destinée aux serveurs), prenez le temps de parcourir les différents répertoires.
Etape 2: Installez Django avec la commande suivante
yum install Django
Remarque: si la commande "yum install django" ne fonctionne pas, vous pouvez également directement télécharger la dernière version de Django:
wget https://www.djangoproject.com/download/1.4.3/tarball/
puis suivre les instructions d'installation.
Etape 3: Installez mod_wsgi (site officiel)
yum install mod_wsgi
Remarque: plusieurs erreurs peuvent apparaitre lors de l'installation
de mod_wsgi. Le plus souvent c'est parce que le module python-devel
n'est pas installé. Veuillez alors entrer les deux commandes suivantes:
yum install gcc
yum install python-devel
Etape 4: Redémarrez apache avec la commande:
/etc/init.d/httpd restart
et vérifiez qu'apache télécharge bien le module mod_wsgi avec la commande:
/etc/init.d/httpd -M
mod-wsgi doit normalement apparaitre dans la liste.
Remarque:
Etape 5: Installez le(s) module(s) supplémentaires nécessaire à votre site (dépend de vos besoins)
pip install markdown
pip install django-mptt
...
Remarque:
Déployer votre application Django
Vous pouvez à présent passer au déploiement de votre application Django.
Etape 1: Envoyez votre site sur le serveur:
scp -r monprojet root@ip_adresse:
Remarque: il est alors préférable de déplacer votre project dans le répertoire "/var/www/html/":
mv -r monprojet /var/www/html/
Au final, vous devez avoir quelque chose ressemblant à:
/var/www/html/monprojet/monprojet/
monapplication01/
monapplication02/
...
manage.py
Etape 2: créez un nouveau répertoire nommé par exemple "public" sous " /var/www/html/monprojet/"
mkdir public
sous le répertoire public, créez aussi un répertoire nommé "static" et "media"
mkdir static
mkdir media
sous le répertoire public, déplacez également le fichier urls.py depuis monprojet
mv /var/www/html/monprojet/monprojet/urls.py /var/www/html/monprojet/public/.
Remarque: Dans le répertoire "public" on va placer tous les fichiers publics du site.
Etape 3: Changez les lignes suivantes dans le fichier setting.py:
MEDIA_ROOT = "/var/www/html/monprojet/public/media/"
STATIC_ROOT = "/var/www/html/monprojet/public/static/"
ROOT_URLCONF = 'public.urls'
'NAME': '/var/www/html/monprojet/monprojet/db/mabasededonnees.db',
Remarque: pour l'instant, laissez Debug = true dans le fichier settings.py afin d'avoir des informations sur les erreurs éventuelles.
Etape 4: Collectez tous les fichiers statiques de votre site en tapant la commande suivante depuis le répertoire "/var/www/html/monprojet/":
python manage.py collectstatic
Remarque:
Etape 5: Créer les fichier suivant dans ce répertoire
__init__.py
django_wsgi.conf
monprojet.wsgi
Remaque
Etape 6: Editez le fichier django_wsgi.conf
Alias /static/ /var/www/html/monprojet/public/static/
Alias /media/ "/var/www/html/monprojet/public/media/"
WSGIScriptAlias / "/var/www/html/monprojet/public/monprojet.wsgi"
WSGIPythonPath /var/www/html/emergence/:/var/www/html/monprojet/monprojet:/var/www/html/monprojet/monprojet/db:/var/www/html/monprojet/public/media:/var/www/html/monprojet/apache:/usr/bin/python
<Directory "/var/www/html/monprojet/public">
Allow from all
</Directory>
Remarque:
Etape 7: Editez le fichier monprojet.wsgi
import os, sys
#Calculate the path based on the location of the WSGI script
apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
os.environ['DJANGO_SETTINGS_MODULE'] = 'monprojet.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Remarque:
Etape 8: Ajoutez cette ligne dans le fichier httpd.conf (fichier de configuration d'apache qui est situé sous le répertoire "/etc/httpd/conf")
Include "/var/www/html/monprojet/public/django_wsgi.conf"
et relancez apache:
/etc/init.d/httpd restart
Finalement, vérifiez que tout fonctionne bien avec votre site en lançant votre navigateur internet puis en tapant directement l'adresse ip de votre serveur.
Si vous avez trouvé aucunes erreurs, vous avez terminé le déploiement de votre application avec Django. N'oubliez pas de mettre "Debug = False" dans le fichier settings.py.
Références
Liens | Description |
---|---|
Lien (externe) 1 | How do I copy a folder keeping owners and permissions intact? (Beginner Question) |