Installation de LodgeIt! depuis les sources
Introduction
LodgeIt! est une application web alternative à Pastebin que vous pouvez utiliser soit depuis le site officiel soit en hébergeant vous même l’application sur votre serveur. C’est d’ailleurs ce dernier point qui nous intéresse ici, nous allons voir comment l’installer sur une machine Debian.
Le tutoriel a été testé sur une machine de type Debian Squeeze, cependant l’installation sur une Ubuntu devrait être équivalente.
LodgeIt requiert une version de Python supérieure ou équivalente à la 2.5 pour fonctionner correctement.
Ici j’utiliserai l’éditeur de texte nano, mais libre à vous d’utiliser votre éditeur de texte préféré.
Installation des dépendances
Les dépendances qui vont être installées sont relatives à Pyrthon (minimum 2.5),python-setuptools qui permet de résoudre les dépendances Python dont aura besoin le projet et Mercurial pour récupérer depuis les repository le projet :
# aptitude install python-dev python-setuptools python-imaging python-virtualenv mercurial build-essentials
Sources
Maintenant que les dépendances sont satisfaites, LodgeIt! est prêt à être installé. Mais d’abord, nous avons besoin de récupérer les sources du projet sur le dépôt Mercurial. Pour se faire, nous allons procéder comme ceci :
- Placez-vous dans le répertoire voulu pour héberger le projet :
# cd /chemin/projet/
- Créer un répertoire lodgeit-dev par exemple :
# mkdir lodgeit-dev
- Puis récupérer les sources sur le repository:
# hg clone http://dev.pocoo.org/hg/lodgeit-main lodgeit
Compilation
Juste avant de pouvoir démarrer l’environnement virtuel, nous avons besoin de compiler et de satisfaire les dépendances de la librairie python imaging :
# apt-get build-dep python-imaging
Maintenant, nous pouvons installer l’environnement virtuel nécessaire à l’application :
Assurez-vous de bien vous trouvez dans /chemin/projet/lodgeit-dev/lodgeit/
# python scripts/make-bootstrap.py > ../bootstrap.py # cd ..
Prenez soin de travailler dans un environnement virtuel désactivé. Sinon, exécutez la commande suivante :
(envirvirtuel)user@machine:/chemin/projet/lodgeit-dev/lodgeit# deactivate
En effet, vous pouvez remarquer que vous êtes en environnement virtuel avec le nom de l’environnement mis entre parenthèse devant la CLI.
# python bootstrap.py .
N’oubliez pas le . à la fin de la commande indiquant le répertoire courant.
Nous sommes désormais prêts à lancer l’application.
Lancement
Tout d’abord lancer l’environnement, toujours depuis /chemin/projet/lodgeit-dev/lodgeit/:
# . ../bin/activate
Puis enfin lancez le serveur :
# python manage.py runserver
Et voilà votre application LodgeIt! est disponible à l’adresse suivante : http://localhost:5000/ Le port 5000 étant le port par défaut.
Notez que par défaut, l’application écoutera uniquement sur 127.0.0.1. Ce qui signifie que votre application ne sera accessible que sur http://localhost:5000/ et non depuis l’extérieur.
Pour palier à ce problème, il suffit de lancer votre serveur avec la commande suivante
# python manage.py runserver 0.0.0.0
Pour aller plus loin
Emplacement de la base de données
Vous pouvez changer l’emplacement de la base de données qui est, par défaut, stockée dans /tmp/lodgeit.db
Pour changer l’emplacement, il suffit d’éditer le fichier manage.py :
user@machine:/chemin/projet/lodgeit-dev/lodgeit# nano manage.py
Et de remplacer la valeur initiale de dburi par celle voulue.
Daemon
Voici un script Bash qui vous permettra de lancer l’application en tant que Daemon, c’est à dire en tant que service du système, et d’automatiser son lancement, son arrêt ou encore son rechargement.
Bien évidemment, pensez à remplacer les différentes informations.
Notez qu’ici, grâce au daemon, nous pouvons modifier le port d’écoute ainsi que l’adresse d’écoute directement.
Créez votre fichier à cet emplacement :
# nano /etc/init.d/lodgeit
#!/bin/bash ### BEGIN INIT INFO # Provides: lodgeit # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts instance of lodgeit pastebin # Description: starts instance of lodgeit pastebin # start-stop-daemon ### END INIT INFO ############### EDIT ME ################## # path to app APP_PATH=/chemin/projet/lodgeit-dev/lodgeit # path to python bin DAEMON=/usr/bin/python # startup args DAEMON_OPTS="manage.py runserver -h 0.0.0.0 -p 5000" # script name NAME=lodgeit # app name DESC=lodgeit # user RUN_AS=root PID_FILE=/var/run/lodgeit.pid ############### END EDIT ME ################## test -x $DAEMON || exit 0 #verifie si pyhton est installe set -e case "$1" in start) echo "Starting $DESC" start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS ;; stop) echo "Stopping $DESC" kill -15 `ps -edf | grep -v "grep" | grep "manage\\.py" | awk '{print $2}'` ;; restart|force-reload) echo "Restarting $DESC" kill -15 `ps -edf | grep -v "grep" | grep "manage\\.py" | awk '{print $2}'` sleep 15 start-stop-daemon -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --make-pidfile --exec $DAEMON -- $DAEMON_OPTS ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0
Vous pourrez ensuite effectuer les différentes opérations par les commandes suivantes :
# service lodgeit start|stop|restart|reload
ou
# /etc/init.d/lodgeit start|stop|restart|reload
Proxifier l’application
Vous pouvez proxifier l’application pour qu’elle soit accessible depuis le port 80 si vous avez déjà un serveur web. Pour cela je vous redirige vers le tutoriel fonctionnant avec NGINX.
Sources
-
(en) Page du projet
-
(en) Script d’origine