Installer zerobin sur une instance Simple Hosting Python

Introduction

Zerobin (écrit également 0bin) est un logiciel libre (licence WTF) développé en Python et qui n'utilise pas de base de donnée. Voilà la description que font les développeurs du projet :

“0bin permet à tout à chacun d’héberger un pastebin tout en acceptant que n'importe quel type de contenu y soit posté. L'idée est qu'une personne ne peut (probablement…) pas être tenue de modérer le contenu du pastebin si elle n'a aucun moyen de le déchiffrer.

C'est une implémentation en Python du projet zerobin, facile à installer même si on ne connaît pas ce langage.”

Nous vous recommandons la lecture de cette page pour plus d'informations :

https://github.com/sametmax/0bin/blob/master/docs/fr/intro.rst

Étape 1 - Création de l'instance

Dans un premier temps, nous créons l'instance via le cli : http://cli.gandi.net

Zerobin n'utilise pas de base de donnée, ainsi vous pouvez choisir une instance Python avec la base de donnée de votre choix, celle-ci ne sera pas utilisée.

$ gandi paas create --name zerobin --type pythonmongodb
password: 
Repeat for confirmation: 
Creating your PaaS instance.

Étape 2 - Mise en place de l'applicatif

Puis nous clonons le dépôt en local, ce qui aura pour effet de créer un répertoire default, dans lequel nous devrons placer notre application :

$ gandi paas clone zerobin

On se rend ensuite dans le répertoire default afin de créer les fichiers nécessaires au fonctionnement de l'application :

$ cd default
$ touch requirements.txt
$ touch wsgi.py

Nous allons ensuite ajouter la dépendance à zerobin dans le fichier 'requirements.txt' :

$ echo "zerobin" > requirements.txt

Nous allons maintenant télécharger le contenu de zerobin qui se trouve sur le dépôt officiel Github :

$ git clone https://github.com/sametmax/0bin.git

Puis déplaçons l'applicatif uniquement (qui est une application Django) à la racine du répertoire default :

$ cp -r 0bin/zerobin .

Nous ajoutons un fichier .gitignore afin d'ajouter le répertoire '0bin' qui contient tout le projet, dans notre cas nous ne pousserons que l'application sur l'instance.

echo 0bin > .gitignore

Vous devriez maintenant avoir cette structure :

$ tree -La 2
.
├── 0bin
│   ├── compress.sh
│   ├── docs
│   ├── .editorconfig
│   ├── .git
│   ├── .gitignore
│   ├── libs
│   ├── README.rst
│   ├── screenshot.png
│   ├── setup.py
│   ├── tools
│   └── zerobin.py
├── .gandi.config.yaml
├── .git
│   ├── branches
│   ├── COMMIT_EDITMSG
│   ├── config
│   ├── description
│   ├── FETCH_HEAD
│   ├── HEAD
│   ├── hooks
│   ├── index
│   ├── info
│   ├── logs
│   ├── objects
│   └── refs
├── .gitignore
├── requirements.txt
├── wsgi.py
└── zerobin
    ├── default_settings.py
    ├── __init__.py
    ├── paste.py
    ├── privilege.py
    ├── routes.py
    ├── static
    ├── utils.py
    └── views

Les fichiers statiques (images, fichiers CSS et javascripts) doivent être placées à la racine sur une instance Python, dans notre cas, l'application dispose déjà d'un répertoire où se trouvent les fichiers statiques, dans zerobin/static. Nous allons donc créer un simple lien symbolique vers ce répertoire afin de simplifier les mises à jours futures :

$ ln -s zerobin/static static

Étape 3 - Écriture du fichier wsgi.py

Apache est utilisé avec le mod_wsgi afin de servir les pages. Nous allons donc remplir le fichier wsgi.py en suivant  la documentation de l'application :

$ nano wsgi.py
import os, sys
 
# make sure the zerobin module is in the PYTHON PATH and importable
ZEROBIN_PARENT_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.insert(0, ZEROBIN_PARENT_DIR)
 
# create the wsgi callable
from zerobin.routes import get_app
settings, application = get_app(compressed_static=True)

Étape 5 - Déployez l'application sur l'instance

Il nous suffit désormais de pousser l'application via git et de la déployer :

$ git add .
$ git commit -am 'First install of Zerobin'
$ git push origin master
$ gandi deploy

Une fois ceci effectué, votre application devrait être disponible à l'adresse que vous avez déclaré sur l'instance.

Dernière modification: le 20/08/2015 à 14:58 par Alexandre J. (Gandi)