# 4 - sources

<info> <desc>Installation depuis les sources.</desc> </info> Installation «manuelle»

L'application étant programmée en Python (Django), il n'y a pas d'étape de compilation, les fichiers doivent juste être placés aux bons endroits et quelques répertoires créés avec les bonnes permissions.

L'arborescence conseillée pour les fichiers est la suivante, c'est celle qui est prévue dans les scripts livrés et la configuration par défaut :

`/opt/polynum` | répertoire de l'application
`/opt/polynum/polynum` | code de l'application Polynum (Django)
`/opt/polynum/bin` | scripts associés au projet
`/opt/polynum/virtualenv` | environnement virtuel contenant les modules Python spécifiques
`/opt/polynum/static` | fichiers statiques (images, scripts javascript, feuille de style CSS)
`/etc/polynum` | répertoire des fichiers de configuration
`/var/lib/polynum` | répertoire des données (dont les fichiers PDF)
`/var/run/polynum` | données d'exécution (PID du processus, sockets, etc)

Création d'un utilisateur et d'un groupe dédiés

Pour plus de sécurité, un utilisateur et un groupe `polynum` doivent être créés. L'application fonctionnera sous cet utilisateur qui aura des permissions limitées au strict nécessaire :

<screen> # addgroup --system polynum # adduser --system --ingroup polynum --no-create-home --disabled-password polynum # usermod -c "PolyNum daemon user" -d /opt/polynum -g polynum polynum </screen>
Il faut que cet utilisateur dispose des droits d'écriture sur le répertoire des fichiers téléchargés : <screen> # mkdir -p /var/lib/polynum/media # chown polynum:polynum /var/lib/polynum/media # chmod u=rwx,g=rwxs,o= /var/lib/polynum/media </screen>
Installation des modules Python et du <code>virtualenv</code>

On distingue deux types de modules Python nécessaires au fonctionnement de Polynum : les modules standards qui seront installés de façon classique sur le système d'exploitation, et les modules plus récents ou non packagés qui seront installés dans un environnement virtuel (`virtualenv`) Python.

Installation des modules standards

Les paquets standards suivant sont à installer avec `apt-get` ou `yum`, selon votre distribution :

Modules standards (installés par le paquet)
nom | description | deb | RPM
`psycopg2` | connexion avec la base de données PostgreSQL. | `python-psycopg2` | `python-psycopg2`
`ldap` | connexion avec l'annuaire LDAP | `python-ldap` | `python-ldap`

Installation des autres modules Python

Les autres paquets seront installés dans un virtualenv, créé dans `/opt/polynum/virtualenv`.

<note>

Si vous ne savez pas créer un virtualenv, utilisez le script `polynum-build-virtualenv`. Il va créer automatiquement le répertoire `/opt/polynum/virtualenv` contenant tous les modules nécessaires.

</note>

Modules placés dans un <code>virtualenv</code>
nom (pypi) | description
`django` | version 1.4
`south` |
`django-crispy-forms` |
`django-sekizai` |
`django-cas` | prendre la version compatible avec Django 1.4 : `https://bitbucket.org/cpcc/django-cas/get/tip.tar.gz`
`django-grappelli` | prendre la version compatible avec Django 1.4 : `git+https://github.com/sehmaschine/django-grappelli@grappelli_2_4`
`pypdf` |
`flup` |
`django-debug-toolbar` |

Configuration de base l'application

La configuration de l'application se fait dans `/etc/polynum/local_settings.py`

Un fichier d'exemple `local_settings.py.example` est fourni avec Polynum, c'est un modèle pour la création de `/etc/polynum/local_settings.py` : il contient la liste des paramétrages possibles avec explications et exemples.

<screen> # mkdir -p /etc/polynum # cp /sources-de-polynum/local_settings.py.example /etc/polynum/local_settings.py # chown polynum:polynum /etc/polynum/local_settings.py # chmod 640 /etc/polynum/local_settings.py </screen>

Lanceur de l'application

Un script d'initialisation est disponible dans les sources : `debian/init.d`. Il faut éventuellement l'adapter au contexte local de votre système.