<page xmlns="http://projectmallard.org/1.0/"
      type="topic" style="task"
      id="install-test" xml:lang="fr">

<info>
  <desc>Première installation et tests.</desc>
  <link type="guide" xref="install"/>
  <title type="sort">2.5 - test</title>
</info>

<title>Première installation et tests locaux</title>

<links type="section" />

<section id="config-base">
<title>Installation de la configuration par défaut</title>

<p>La configuration de l'application se fait dans
<code>/etc/polynum/local_settings.py</code>. Ce fichier doit être lisible par
l'utilisateur de l'application (<code>polynum</code>) et par lui seul, car en
production il contiendra notamment les mots de passe vers la base de données ou
le serveur LDAP.</p>

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

<p>Si vous avez installé Polynum à partir du paquet, le modèle est placé
dans <code>/usr/share/doc/polynum/</code>, il vous suffit donc de faire :</p>

<screen>
<output style="prompt"># </output><input>cd /etc/polynum</input>
<output style="prompt"># </output><input>cp /usr/share/doc/polynum/local_settings.py.example local_settings.py</input>
<output style="prompt"># </output><input>chown polynum:polynum local_settings.py</input>
<output style="prompt"># </output><input>chmod 640 local_settings.py</input>
</screen>

<p>La configuration livrée par défaut utilise une base SQLite locale
<code>/tmp/polynum.sqlite</code>, une authentification locale, lance le système
en mode <em>debug</em>, etc. Sauf si vous savez ce que vous faites, ne la
modifiez pas maintenant.
</p>
</section>


<section id="installation-sqlite">
<title>Création d'une base de données SQLite de test</title>
<note style="warning">
<p>Les manipulations suivantes doivent se faire sous l'utilisateur système
dédiée à polynum (<code>polynum</code> par défaut). Pour changer d'utilisateur,
vous pouvez utiliser une commande de ce style :</p>
<screen>
<output style="prompt"># </output><input>su -s /bin/bash polynum</input>

</screen>
<p>ou :</p>
<screen>
<output style="prompt">$ </output><input>sudo -u polynum /bin/bash</input>
</screen>
</note>

<p>C'est le framework Django qui va se charger de créer la base et les tables
correspondantes, à travers le script <code>polynum-manage.py</code>
(utilisation similaire au script <code>manage.py</code> des projets
Django).</p>

<p>Création des tables et du super administrateur :</p>

<screen>
<output style="prompt">polynum@testserver:~$ </output><input>polynum-manage.py syncdb</input><output>
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
(...)
Creating table editor_contentblock
Creating table delegation_delegation

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): </output><input>yes</input><output>
Username (leave blank to use 'polynum'): </output><input>admin</input><output>
E-mail address: </output><input>moi@univ.fr</input><output>
Password: </output><input>test</input><output>
Password (again): </output><input>test</input><output>
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
</output><output style="prompt">polynum@testserver:~$ </output>
</screen>

<p>Par la suite, si vous voulez repartir avec une base de données vierge,
effacez le fichier <code>/tmp/polynum.sqlite</code> puis reprendre la
procédure (<code>polynum-manage.py syncdb</code>).</p>.
</section>

<section id="installation-init">
<title>Mise en place de données initiales</title>
<p>Des données de démonstration sont livrées avec l'application qui simplifient
la compréhension de l'utilisation du système, et permettent de faire des tests
très rapidement.</p>

<terms>

<item>
<title>Importation des données de tests (sur une nouvelle base seulement) :</title>
<screen>
<output style="prompt">$ </output><input>polynum-manage.py loaddata /usr/share/doc/polynum/fixtures/*.json</input>
<output>Installed 134 object(s) from 6 fixture(s)</output>
</screen>
</item>

<item>
<title>Importation d'un arbre d'entités administratives, pour tests :</title>
<screen>
<output style="prompt">$ </output><input>polynum-manage.py loadentities /usr/share/doc/polynum/fixtures/structures.xml</input>
<output>Parsed 5199

Bounds [0, 15959]
dauphine
presidence
(...)
ceremade
irisso
Added   7980 entities

</output>
</screen>
</item>

</terms>
</section>

<section id="installation-run">
<title>Lancement de l'application en mode test</title>
<p>
</p>
<screen>
<output style="prompt">$ </output><input>polynum-manage.py runserver</input>
<output>
Validating models...

0 errors found
Django version 1.4, using settings 'polynum.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
</output>
</screen>

<p>Après lancement de cette commande, vous pouvez naviguer sur l'URL indiquée
<link href="http://127.0.0.1:8000/">http://127.0.0.1:8000/</link> et tester l'application.
</p>

<p>Arrêtez le serveur avec <keyseq><key>Ctrl</key><key>C</key></keyseq>.</p>

<p>Tapez <code>polynum-manage.py runserver --help</code> pour connaître les
options disponibles. Attention, il s'agit juste d'un serveur web de test, la
commande <code>runserver</code> de Django n'est pas adaptée à la production !
</p>

</section>

<section id="installation-auth">
<title>Tests d'authentification distante (CAS + LDAP)</title>
<p>Polynum peut authentifier les utilisateurs via CAS et LDAP. Dans
<code>/etc/polynum/local_settings.py</code> adapter les paramètres suivants
:</p>

<code>

(... extrait de /etc/polynum/local_settings.py ...)

CAS_SERVER_URL = "https://cas.univ.fr/" # CAS server URL
LDAP_URL = "ldaps://ldap.univ.fr"       # LDAP server URL
LDAP_BIND_DN = "uid=...,ou=...,dc=..."  # DN to authenticate to the LDAP server
LDAP_BIND_PASSWORD = "..."              # password
LDAP_USER_QUERY = "supannAliasLogin=%s" # query to retrieve user, %s is CAS username
LDAP_BASE = "dc=univ,dc=fr"             # base DN for the query


</code>

<p>Vous pouvez modifier ces paramètres puis relancer le serveur de test pour
vérifier que l'authentification fonctionne via CAS et LDAP.</p>

</section>

</page>

