samedi 17 septembre 2011

Fresh install de LAMP + Webmin + Django 1.3 sur une Ubuntu 11.04

Je viens d'obtenir un super DELL Inspiron  avec des spécifications extra, mais malheureusement, qui dit nouvelle bécane dit long processus de mise à niveau du système (Installation de logiciels...) et pour les développeurs mise en place d'un nouvel environnement de développement. Vu que actuellement, je travaille sur un projet avec Django, c'est la première tâche que j'ai eu à réaliser. Je profite donc de l'occasion pour partager avec vous ma démarche.

Tout d’abord voici la liste des outils que je vais mettre en place :
  • Un serveur LAMP
  • Webmin (Que j'affectionne particulièrement pour l'administration de ma machine)
  • Le framework Django en version 1.3 (et tout ce qui va avec)

NB : Toutes les manipulations qui suivront ont été faites sur une ubuntu 11.04

INSTALLATION DU SERVEUR LAMP 
J'ai tout de suite mis en place LAMP après l'installation de ma distribution. En général, je préfère passer par les dépôts officiels d'Ubuntu quand je n'ai pas besoin de me montrer trop exigent sur la version à utiliser. Donc pour PHP 5, mySQL5 et apache2 faites :
sudo apt-get install tasksel


Ensuite :
sudo tasksel install lamp-server

Pour tester si votre installation fonctionne parfaitement, faites c'est par ici : localhost
Vous devriez voir le message "It works!"

Ensuite  pour installer phpMyAdmin3.3 :
sudo apt-get install phpmyadmin

Si vous avez un message d'erreur à l’écran, c'est que certainement apache recherche par défaut dans le répertoire :  "/var/www/phpmyadmin". Pour pallier donc au problème, créez un lien symbolique vers le répertoire d'installation de phpmyadmin (/usr/share/phpmyadmin chez moi).
sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

phpmyadmin est accessible ici : localhost/phpmyadmin

WEBMIN
On passe maintenant à l'installation de webmin. Aucune version n'est disponible dans les dépôts officiels. On va donc procéder à une installation manuelle. Pour ça, on va :
Satisfaire tout d'abords les dépendances du logiciel :
sudo apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions libapt-pkg-perl

Rendez-vous dans le répertoire tmp :
cd /tmp

Téléchargez le package du logiciel :
wget http://www.webmin.com/download/deb/webmin-current.deb

Ensuite installer le package :
sudo dpkg --install webmin*.deb

Dans le cas ou le terminal vous signale une erreur, faites ceci :
sudo apt-get install -f

Définissez le mot de passe webmin (changer webmin_pass par votre mot de passe)
sudo /usr/share/webmin/changepass.pl /etc/webmin root webmin_pass

Et c'est tout. Vous pouvez accéder à l'interface d’accueil via l'url  https://localhost:10000

PYTHON-DJANGO

On va maintenant mettre en place l'environnement de développement python avec le framework Django.
On installe tout d'abords certains outils qui nous seront nécessaires
sudo apt-get install libapache2-mod-python python-mysqldb python-dev subversion

Ensuite on télécharge la version de Django la plus récente
svn co http://code.djangoproject.com/svn/django/trunk/ django

Pour que le framework soit reconnu par python, il faudrait que les fichiers soient dans son répertoire "dist-packages"
Pour savoir ou se trouve ce répertoire, faites :
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Ensuite copiez le répertoire django que vous avez obtenu dans le "dist-packages" de python
sudo cp -R django/django  /votre _repertoire_dist

Chez moi, ca donne :
sudo cp -R django/django /usr/lib/python2.7/dist-packages

Rendez accessible la commande d'administration comme ceci :
ln -s django/django/bin/django-admin.py /usr/local/bin

Installons pip pour nous faciliter l'ajout de packages complémentaires  :
sudo apt-get install python-pip

Une fois cette opération effectuée, vous pouvez d'ores et déjà commencé à coder, mais ne nous arrêtons pas en si bon chemin. Nous allons configurer Django de telle sorte à pouvoir l'utiliser avec notre serveur apache plutôt que celui fourni par l'équipe Django.

Installons le mod_wsgi d'apache :
sudo apt-get install libapache2-mod-wsgi

On configure l’hôte sur lequel nous allons faire nos tests :
sudo gedit /etc/hosts

Dans le fichier ajoutez la ligne suivante :
127.0.0.1    local.django.com

Créez un fichier dans le répertoire site-available de apache
sudo gedit /etc/apache2/sites-available/djangosite

Ajoutez le bloc suivant à la fin de votre fichier et remplacez les "votre_pseudo" par votre nom d'utilisateur :
<VirtualHost 127.0.0.1:80>    
    ServerName local.django.com
    WSGIDaemonProcess djangosite user=votre_pseudo group=votre_pseudo threads=25
    WSGIProcessGroup djangosite
    Alias /media/ /home/votre_pseudo/projects/djangosite/media/
    <Directory /home/votre_pseudo/projects/djangosite/media/>
         Order deny,allow
         Allow from all
    </Directory>
    WSGIScriptAlias / /home/votre_pseudo/projects/djangosite/apache/django.wsgi
    <Directory /home/votre_pseudo/projects/djangosite/apache/django.wsgi>
           Order deny,allow
           Allow from all
    </Directory>
</VirtualHost>


Créez un nouveau projet django dans le répertoire /home/votre_pseudo/projects/django/ :
cd
mkdir projects
cd projects/
django-admin.py startproject djangosite


Ensuite créez le répertoire apache qui va abriter le fichier wsgi :
cd djangosite
mkdir apache
cd apache/
gedit django.wsgi

Copiez à l'intérieur du fichier les lignes suivantes et sauvegardez.
import os, sys
sys.path.append('/home/votre_pseudo/projects/djangosite/')
sys.path.append('/home/votre_pseudo/projects/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'djangosite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

Ajoutez votre nouvelle application sur apache
sudo a2ensite djangosite


Redémarrez le serveur web:
sudo /etc/init.d/apache2 reload

Plutôt que de redémarrer votre serveur à chaque fois que vous modifiez un de vos fichiers, vous pouvez tout simplement faire un touch sur le fichier wsgi que vous avez crée précédemment.
touch /home/votre_pseudo/projects/djangosite/apache/django.wsgi


Et voila, c'est tout pour cette fois!

Aucun commentaire: