Django en serveur - Sommaire : Site en Python (Django) sous Apache avec mod_python.

(Voici la suite de ma petite série "faire mumuse avec python sur son serveur".)

Lorsque j'ai parlé du framework python Django, beaucoup d'entre vous m'ont fait la réfléxion du :

Ça à l'air cool (ça l'est ! :p), mais la dernière fois que j'ai tenté de faire marcher python avec apache, ça a été l'enfer !

Ce jour est révolu :) Bon, sur le site de Django, ils conseillent d'utiliser mod_wsgi, mais pour ce tutoriel, nous utiliserons mod_python.

Donc tout d'abord, nous allons l'installer (méthode pour Debian) :

apt-get install libapache2-mod-python

Ensuite, il va falloir l'activer :

a2enmod python

ou équivalent :

ln -s /etc/apache2/mods-available/python.load /etc/apache2/mods-enabled/

Ensuite, il va falloir créer un VirtualHost qui indiquera à Apache que pour ce domaine, il faut utiliser python. Voici un exemple de VirtualHost spécifique à Django :

<VirtualHost *:80>
        ServerAdmin postmaster@[domain].tld
        ServerName www.[domain].tld
        ServerAlias [domain].tld
        DocumentRoot /var/www/[domain]/www/[domain]

        ErrorLog /var/log/apache2/[domain]_error.log
        LogLevel warn
        CustomLog /var/log/apache2/[domain]_access.log combined
        ServerSignature Off

        <Location "/">
                SetHandler mod_python
                PythonHandler django.core.handlers.modpython
                SetEnv DJANGO_SETTINGS_MODULE [nom_du_projet_django].settings
                PythonPath "['/var/www/[domain]/www/'] + sys.path"
                PythonAutoReload Off
                PythonDebug Off
        </Location>
 
        Alias /media "/var/www/[domain]/www/media"
        <Location "/media/">
                SetHandler None
        </Location>
 
        Alias /static "/var/www/[domain]/www/static"
        <Location "/static/">
                SetHandler None
        </Location>
 
        <LocationMatch "\.(jpg|gif|png)$">
                SetHandler None
        </LocationMatch>
</VirtualHost>

Quelques explications s'imposent. Pour mes projets Django, j'ai choisis de faire un structure simple. Dans le dossier de mon projet (appelons le "domain"), j'ai le nom du sous-domaine (ici, www), et dedans, je crée trois dossiers :

  • [domain] (le même nom que son dossier parent aka le nom du projet) : il contiendra le code Django
  • static : il contiendra tous les fichiers nécéssaire au site : css, js, images, etc
  • template : il contient les templates utilisés par Django

Du coup, le fichier de configuration semble un peu plus clair : on définis un Handler de type python pour le répertoire qui contient le code python (/var/www/[domain]/www/[domain]), puis on définis un Handler null (donc aucune interprétation d'un quelconque code) pour les autres dossiers (media et static).

Maintenant, vous vous demandez à quoi sert "media".

En fait, ce répertoire est un liens symbolique que nous allons créer, et qui pointe sur le module admin de Django. En effet, dans la configuration actuelle, si vous tentez d'accéder à l'admin (en ajoutant un /admin/ sur l'url), vous verrez que les images, le style et le javascript ne sont pas présents.

Logique ! Comment apache peux deviner d'où ils viennent ?

Donc pour que notre admin soit fonctionnel, il faut faire un lien symbolique du module admin à notre projet (en supposant que vous avez installez Django comme indiquez dans notre précédent article) :

ln -s /opt/django/django/contrib/admin/media/ /var/www/[domain]/www/media

Du coup, la configuration dans votre VirtualHost prendra aussi effet pour ce répertoire.

Voilà !

Vous n'avez plus qu'à redémarrer, et si votre fichier settings.py de votre projet est correct (notamment au niveau des répertoires ;)), votre site devrait-être accessible !

Filed under  //  Apache   Development   Projects   Python   django   media   mod-python   server   static   template  
Posted by Cyril Nicodème 

Django en serveur - Sommaire : Installer la version trunk de Django sur son serveur.

(Note: pour cet article, nous supposerons que vous avez déjà python et subversion d'installé (et accessoirement MySQL).)

Dans ma série de "faire mumuse avec python sur son serveur web", voici le premier épisode :

Installer Django (le framework Python) en version en développement sur sa machine.

Pour ce faire, c'est très simple.
D'ailleurs, le site officiel de django l'explique de manière très détaillée.

Tout d'abord, rendez-vous dans le répertoire ou vous déposerez la version en développement de Django.

Pour ma part, je l'ai mis dant /opt.

cd /opt

Ensuite, récupérez Django avec subversion :

svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk

Une fois la récupération terminée, vous devrez lier django dans les packages de python. Afin de connaître le chemin exact vers le site-packages de python, executez cette commande :

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Vous n'aurez plus ensuite qu'à faire un liens symbolique dans le site-packages depuis Django :

ln -s /opt/django-trunk/django [SITE-PACKAGES-DIR]/django

(pensez bien à remplacer la variable [SITE-PACKAGES-DIR] par le résultat de la commande précédente !)

Pour ma part, afin de bien faire fonctionner Django, j'ai du installer quelques modules supplémentaires :

Sous Debian, Vous pourrez récupérer ces deux librairies simplement en faisant un :

apt-get install python-mysqldb et python-imaging

Voilà, Django est prêt à fonctionner !

Filed under  //  Development   Projects   Python   django   server   serveur   subversion   trunk  
Posted by Cyril Nicodème 

Tutoriels sur l'installation d'un serveur Web : Mise en place

Bien, nous allons tout d'abord préparer l'environnement, histoire d'avoir quelque chose d'accueillant ! :)

Première chose, nous allons modifier le fichier /etc/apt/sources.list, afin qu'il prenne les fichiers de la version stable, et non le nom de la version que vous avez téléchargez (lenny). Ceci afin de toujours disposer des dernières versions stables.

Pour ce faire, éditez le fichier /etc/apt/sources.list et remplacez toutes les occurences de lenny en stable ! :) C'est tout !

Ensuite, mettez à jour la liste des paquets :

apt-get update

Puis installez les éventuelles mises à jours :

apt-get upgrade && apt-get dist-upgrade

Ensuite, nous allons créer un petit fichier qui va s'avérer utile, .email. Ce fichier ne contiendra qu'un email, ne sera visible que par vous, et permettra à des services tels que cron de vous envoyer un email en cas de problème. (Bon, ca ne fonctionnera pas tout de suite puisque nous avons encore aucun serveur mail, mais pour la suite, ce sera vraiment utile !).

Voici la commande :

echo "votre_email@example.org" > .email

Ensuite, nous allons nommer correctement le serveur. Pour cela, plusieurs éléments à modifier :
/etc/hosts, rajoutez le nom de domaine sur l'ip publique :

127.0.0.1       localhost webserv
192.168.0.8     example.org

/etc/hostname, donnez lui le nom voulu :

WebServ

Ensuite, exécutez le script /etc/init.d/hostname.sh, afin de mettre à jour votre nom de serveur. Le changement sera effectué lors de la prochaine connection.

/etc/init.d/hostname.sh

Pour ceux qui auraient des problèmes d'accents dans leur console, il faut modifier le fichier .bashrc, et y ajouter cette ligne :

echo "export LANG=fr_FR.UTF-8" >> ~/.bashrc

La configuration basique est terminée !

Maintenant, prêt pour attaquer le gros du travail ? :)

Filed under  //  .email   Howtos   Scripts   Unix/Linux   apt-get   hostname   mise en place   server   serveur   sources.list   web  
Posted by Cyril Nicodème 

Tutoriels sur l'installation d'un serveur Web : Informations sur le serveur

Normallement, vous disposez d'une version de  Debian toute fraîche, prête à l'emploi.

Vous connaissez son IP, pour mon tutoriel, ce sera la 192.168.0.8, et vous avez définit votre dns afin que le nom de domaine que vous disposez pointe bien sur votre ip.

Dans mon cas, j'ai modifié mon fichier hosts :

192.168.0.8         www.example.org

Mais si vous êtes chez un hébergeur, vous pouvez très bien faire pointer les dns sur votre IP ! :)

Il faut aussi que nous donnions un nom à la machine, ce sera WebServ.

Et bien voilà ! Tout est prêt pour attaquer les configurations ! :)

Filed under  //  Howtos   Scripts   Unix/Linux   example   informations   server   web  
Posted by Cyril Nicodème 

Tutoriels sur l'installation d'un serveur Web : Installation et pré configuration

Tout d'abord, installez un logiciel d'émulation type VMWare ou VirtualBox.
Je recommande personnellement VirtualBox, qui est libre.

Téléchargez la version vous concernant, installez là et, probablement, redémarrez.

Ensuite, rendez-vous sur le site de Debian, afin de récuperer la toute dernière version, notre petite Lenny : http://www.debian.org/distrib/.
Comme à l'accoutumé, téléchargez la version vous concernant.

Pour ma part, j'ai opté pour la version NetInst, petit iso de 180Mo qui contient l'essentiel, le reste étant mis à jour une fois l'installation terminée. C'est la version la plus propre d'après moi.

Ensuite, il va falloir définir le réseau de votre environnement émulé.
Deux options s'offrent à vous :

  • En tant que Bridge, histoire qu'il soit considéré comme une autre machine à part entière sur le réseau.
  • Ou en tant que "Host Only", si vous souhaitez que le serveur ne puisse communiquer qu'avec votre machine.

Comme cela dépends de votre choix, de votre émulateur et de votre OS, je ne vais pas faire un détail ici ! Vous êtes suffisamment grand pour trouver la porte d'entrée de Google :)

Afin que notre machine soit reconnue comme un serveur ayant une url (en supposant que l'on dispose d'un nom de domaine), on va modifier le fichier hosts, afin de pointer l'ip du serveur sur un faux nom. Nous utiliserons le nom de domaine http://www.example.org.

Vous trouverez le fichier hosts :

  • Windows : C:\Windows\System32\Drivers\etc\hosts
  • Linux : /etc/hosts

Ceci est pour la plupart des distribs, si vous ne le trouvez pas à l'adresse indiquée, googlez :p

Ensuite, créez votre environnement virtualisé, en choisissant le mode (Bridge/Host-Only) et démarrez l'installation.

L'installation en elle-même n'est pas très compliquée, c'est pour cela qu'elle ne sera pas détaillée ici :) Je vous conseil juste de n'installer que le système standard (une invite vous proposera d'installer, avec, divers serveurs, environnement de bureau, etc. Ne prennez que "Système  Standard").

L'installation est terminée ! :) Maintenant, nous allons définir l'ip en statique, histoire de ne pas avoir de mauvaise surprise :p

Editez le fichier /etc/network/interfaces avec votre éditeur préféré (vi, vim, nano, ...), et mettez ceci :

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

#eth0 is enabled during initrd
auto eth0:0
iface eth0:0 inet static
        address xxx.xxx.xxx.xxx
        netmask 255.255.255.0

Ou xxx.xxx.xxx.xxx sera l'ip que vous aurez définit (à vous d'adapter le netmask ensuite). Nous récapitulerons toutes ces informations dans le prochain article.

Et bien voilà ! Votre nouvelle Debian est prête à subir des attaques d'apt !

Le prochain article récapitulera les différentes informations nécéssaires, qui seront récapitulées au début de chaque tutoriels.

Si vous avez des questions/conseils, n'hésitez pas !

Filed under  //  Debian   Howtos   Scripts   Unix/Linux   host-only   installation   lenny   pré configuration   server   virtualbox   vmware   web  
Posted by Cyril Nicodème 

Installation de VMWare Server sur Fedora

Tout d'abord, la différence entre VMWare Server et VMWare Player est, d'apres Wikipedia :

VMware Player est une workstation allégée, qui permet d'utiliser une machine virtuelle, mais non de la créer. Cette version est utilisable gratuitement.
VMware Server est une application serveur très proche de GSX. Elle remplacera GSX à terme. Elle permet de créer et d'utiliser plusieurs machines virtuelles. Cette version est utilisable gratuitement. L'avantage de cette version, c'est la console distante. On peut ainsi prendre le contrôle de l'ensemble des machines virtuelles depuis une machine distante, ce qui n'est pas possible avec la version VMware Player.

Comment Installer VMWare Server.

Premièrement, aller sur le site de VMWare : http://register.vmware.com/content/download.html puis télécharger le .rpm
Ensuite, faites vous une clée d'enregistrement à http://register.vmware.com/content/registration.html

Une fois ceci fait, faite un simple rpm-ivh VMware.....rpm pour installer la VMWare. Ensuite, installez les composants nécéssaire pour faire tourner vmware, c'est à dire : gcc gcc-c++ kernel-devel kernel-headers xinetd

La configuration directe, en passant par vmware-config.pl risque de ne pas marcher, il faudra télécharger ce patch :
http://knihovny.cvut.cz/ftp/pub/vmware/vmware-any-any-update114.tar.gz

Et exécuter le runme.pl contenu dans ce fichier.

Voila ! VMWare est installé !

Filed under  //  Fedora   Howtos   Unix/Linux   installation   player   server   vmware  
Posted by Cyril Nicodème