-
Notifications
You must be signed in to change notification settings - Fork 22
Installation
- Pré-requis
-
Bases et sources
- Mise en place avant les sources
- Récupération des sources
- Paramétrage
- Base de données
-
Installation tierce
- FFMPEG
- Elasticsearch
- Optionnel : Memcached
- Optionnel : Serveur FTP
- Optionnel : CAS et LDAP
- Traduction
- Thème
- Tests
- Serveur de développement
Système d'exploitation : Installation effectuée sur Debian 7.8 64bits - Fonctionne également sur Debian Jessie (v8)
Voici quelques petits exemples d'architectures utilisés par des universités utilisant Pod :
Exemples de matériels
-
Lille :
- (Encodage) Serveur dédié 8coeurs / 4,5Go de ram / 150Go disque
- (Frontal) Machine virtuelle 2coeurs / 1Go de ram / 3,5To disque
- (BDD) Machine virtuelle 1coeur / 1Go de ram / 35Go disque
-
Valenciennes :
- (Complet) Machine virtuelle 4VCPU / 8Go de ram
-
CNAM (Paris) :
- (Complet) Machine virtuelle Debian(wheezy) 16Go de ram ajustable / CPU 2x2 coeurs ajustable
-
Nice :
- Hébergement chez ovh
Si besoin voici une liste complète des architectures des universités utilisant Pod : Détail des installations
Les démarches pour installer l'environnement de travail pour Pod
Mise en place avant les sources
Dans un terminal avec l'utilisateur root ou un utilisateur appartenant au groupe sudo :
$ adduser pod
$ adduser pod sudoSi par défaut vous n'avez pas de sudo installé vous pouvez faire cette commande en root:
$ apt-get install sudoroot@podvm:$ su
root@podvm:$ aptitude update
root@podvm:$ aptitude install python-pip python-dev build-essential git libmysqlclient-dev graphviz libgraphviz-dev pkg-config libldap2-dev libsasl2-dev libssl-dev libjpeg-dev python-imaging libfreetype6-devInstallation complémentaire pour python :
- python-chardet : Détecteur universel d'encodage de caractères pour Python2
- python-fpconst : Utilities for handling IEEE 754 floating point special values
- python-apt : Interface Python pour libapt-pkg
- python-debian : modules python pour travailler avec des formats de données utilisés dans Debian
- python-debianbts : Python interface to Debian's Bug Tracking System
- python-reportbug : modules Python pour interagir avec des systèmes de gestion de bogues
- python-soappy : SOAP Support for Python
root@podvm:$ aptitude install python-chardet python-fpconst python-apt python-debian python-debianbts python-reportbug python-reportbug python-soappyEn tant qu'utilisateur pod
pod@podvm:$ sudo pip install virtualenvwrapper
pod@podvm:$ vim .bashrcAjouter ces deux lignes à la fin :
...
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
Prendre en compte les modifications :
pod@podvm:$ source .bashrcEt créer un nouvel environnement virtuel :
pod@podvm:$ mkvirtualenv --system-site-packages django_pod
New python executable in django_pod/bin/python
Installing setuptools, pip...done.
(django_pod)pod@podvm:$Vérification de la présence du répertoire .virtualenvs
(django_pod)pod@podvm:$ ls -al
...
drwxr-xr-x 3 pod pod 4096 mai 19 14:54 .virtualenvs
...Récupération des sources
Concernant l'emplacement du projet, je conseille de le mettre dans /usr/local/django_projects
(django_pod)pod@podvm:~$ sudo mkdir /usr/local/django_projectsVous pouvez faire un lien symbolique dans votre home pour arriver plus vite dans le répertoire django_projects:
(django_pod)pod@podvm:~$ ln -s /usr/local/django_projects django_projectsPlacez vous dans le répertoire django_projects
(django_pod)pod@podvm:~$ cd django_projects
(django_pod)pod@podvm:~/django_projects$On récupère les sources https://github.com/esupportail/pod: Attention, si vous devez utiliser un proxy, vous pouvez le spécifier avec cette commande :
$> git config --global http.proxy http://PROXY:PORT(django_pod)pod@podvm:~$ sudo chown pod:pod /usr/local/django_projects
(django_pod)pod@podvm:~$ ls -ld /usr/local/django_projects
drwxr-sr-x 2 pod pod 4096 mars 13 10:02 /usr/local/django_projects
(django_pod)pod@podvm:~$ cd django_projects
(django_pod)pod@podvm:~/django_projects$ git clone https://github.com/esupportail/pod.git
Cloning into 'pod'...
remote: Counting objects: 350, done.
remote: Compressing objects: 100% (277/277), done.
remote: Total 350 (delta 66), reused 336 (delta 58), pack-reused 0
Receiving objects: 100% (350/350), 2.07 MiB | 972 KiB/s, done.
Resolving deltas: 100% (66/66), done.(django_pod)pod@podvm:~/django_projects/pod$ pip install -r requirements.txtDe même, si vous devez utiliser un proxy :
$> pip install --proxy="PROXY:PORT" -r requirements.txtLes démarches concernant les fichiers de configuration de Pod
Paramètrage
Il faut faire une copie des fichiers de configuration.
(django_pod)pod@podvm:~/django_projects/pod$ cd pod_project/pod_project/
(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ ls -l
total 160
-rw-r--r-- 1 pod pod 653 juin 23 13:15 celery.py
-rwxr-xr-x 1 pod pod 2251 juin 23 13:15 ckeditor.py
-rw-r--r-- 1 pod pod 289 juin 23 13:15 cursusCodes.py
-rwxr-xr-x 1 pod pod 285 nov. 10 16:34 __init__.py
-rwxr-xr-x 1 pod pod 4465 juin 23 13:15 ISOLanguageCodes.py
-rw-r--r-- 1 pod pod 3901 juin 23 13:15 rest_curl_sample.txt
-rw-r--r-- 1 pod pod 916 juin 23 13:15 rest_router.py
-rw-r--r-- 1 pod pod 13972 nov. 21 12:02 settings_local-sample.py
-rwxr-xr-x 1 pod pod 6603 nov. 21 12:02 settings-sample.py
-rw-r--r-- 1 pod pod 287 juin 23 13:15 tasks.py
-rwxr-xr-x 1 pod pod 7806 nov. 21 12:02 urls-sample.py
-rw-r--r-- 1 pod pod 397 juin 23 13:15 wsgi-sample.pyOn commence par le fichier wsgi-sample.py
(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp wsgi-sample.py wsgi.pyIl n'y a plus rien à changer dans ce fichier
Ensuite, on fait de même pour les fichiers de configuration principaux : settings-sample.py et settings_local-sample.py
(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp settings-sample.py settings.py
(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp settings_local-sample.py settings_local.pyDans le fichier settings_local, il faut renseigner les noms et adresses mail des administrateurs. Ensuite, la variable DEBUG doit etre laissé à True en mode développement, ca permet d'afficher les erreurs dans le navigateur lors de la navigation. Par contre, il faut la mettre à False en production.
De même pour la base de données, il faut utiliser sqlite pour les tests et d'autres SGBD (mysql, postgreSQL, etc...) pour la production.
ALLOWED_HOSTS doit contenir la ou les adresses de connexion à la plateforme.
MEDIA_ROOT est le chemin pour accéder aux fichiers media. C'est dans ce répertore que vont être stockés les vidéos et leur encodage.
Il faut ensuite configurer le mail, le CAS et éventuellement le ldap.
Si vous n'utilisez pas les fonctions de Streaming, live diffusion vous devez faire attention à laisser vide les champs fms_live_url et fms_root_url.
En début de fichier le champ secret_key doit être renseigné. Vous pouvez trouver des générateurs de clé django sur internet.
Pour finir, il faut personnaliser les variables de template et d'établissement.
Pour plus d'informations vous pouvez consulter la page de référencement des paramêtres du fichier settings_local.py
Il reste ensuite le fichier urls-sample.py
(django_pod)pod@podvm:~/django_projects/pod/pod_project/pod_project$ cp urls-sample.py urls.pyEnfin il est nécessaire de créer un dossier "media" à la racine du projet dans pod_project.
C'est terminé pour les paramètrages.
Mise en place de la base de données de Pod
Migrations et données
En développement, la base de données est en sqlite, elle va nous permettre de tester le fonctionnement de la plateforme avant sa mise en production
En production, il faudra utiliser du MySql ou du PostgreSql (voir ci-après pour cette mise en place).
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py makemigrations
...
Migrations for 'filer':
0002_auto_20150602_1113.py:
- Alter field polymorphic_ctype on file
Migrations for 'flatpages':
0002_auto_20150602_1113.py:
- Add field content_en to flatpage
- Add field content_fr to flatpage
- Add field title_en to flatpage
- Add field title_fr to flatpage
...Migration des tables :
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ ./manage.py migrate
Operations to perform:
Synchronize unmigrated apps: jquery, taggit_templatetags, django_cas_gateway, ckeditor, modeltranslation, haystack, bootstrap3
Apply all migrations: core, filer, admin, sessions, sites, auth, contenttypes, flatpages, taggit, pods, easy_thumbnails
Synchronizing apps without migrations:
Creating tables...
Creating table taggit_templatetags_amodel
Installing custom SQL...
Installing indexes...
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying sites.0001_initial... OK
Applying flatpages.0001_initial... OK
Applying filer.0001_initial... OK
Applying core.0001_initial... OK
Applying easy_thumbnails.0001_initial... OK
Applying easy_thumbnails.0002_thumbnaildimensions... OK
Applying filer.0002_auto_20150602_1113... OK
Applying flatpages.0002_auto_20150602_1113... OK
Applying taggit.0001_initial... OK
Applying pods.0001_initial.../home/moot/.virtualenvs/django_pod/local/lib/python2.7/site-packages/django/db/models/fields/__init__.py:1282: RuntimeWarning: DateTimeField Mediacourses.date_added received a naive datetime (2015-06-02 11:13:33.643534) while time zone support is active.
RuntimeWarning)
OK
Applying sessions.0001_initial... OKOn charge ensuite des données de base en base de données :
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py loaddata core/fixtures/initial_data.jsonEt on créé le superutilisateur :
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py createsuperuser --username rootLes différentes installations à coté de Pod. Nécessaire pour l'encodage et le moteur de recherche. Contient aussi des instructions pour l'installation d'utilitaires optionnels.
Mise en place de l'utilitaire d'encodage
Utilisé pour l'encodage des vidéos.
Pour installer FFMPEG, j'ai télécharger la dernière version fournit sur le site officiel : http://ffmpeg.org/download.html#build-linux
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ su
Mot de passe :
root:/home/pod/django_projects/pod/pod_project# cd /usr/local/
root:/usr/local# mkdir ffmpeg && cd ffmpeg
root:/usr/local/ffmpeg# wget http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz
root:/usr/local/ffmpeg# tar -Jxvf ffmpeg-release-64bit-static.tar.xz
root:/usr/local/ffmpeg# ln -s ffmpeg-2.6.3-64bit-static ffmpegIl faut modifier le fichier settings.py pour indiquer les chemins ffmpeg et ffprobe
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ vim pod_project/settings.pyLa génération des vignettes des vidéos utilise ffmpegthumbnailer. Il est nécessaire de l'ajouter en plus de ffmpeg :
(django_pod)pod@podvm:~$ sudo apt-get install ffmpegthumbnailerDepuis la version 1.6.0 la génération de la prévisualisation (overview) utilise imagemagick (Si vous êtes sur un autre système que Linux, il existe aussi ce paquet sous MacOS et Windows : imagemagick)
(django_pod)pod@podvm:~$ sudo apt-get install imagemagickMise en place du moteur de recherche
Nécessite java pour etre lancé. Si votre machine n'a pas de version 8 ou supérieur, vous pouvez l'installer.
root:~# aptitude install oracle-java8-installerIl est peut-être nécessaire d'utiliser un dépot supplémentaire pour récupérer Java8 sous Linux : Java8 sous Linux
Pod utilise Elasticsearch comme moteur de recherche.
Si vous utilisez un Pod avec une version 1.8 ou supérieure :
Si vous utilisez un Pod avec une version antérieure à 1.8 :
Il est nécessaire de respecter la version majeur de votre Elasticsearch. Pour un Pod 1.8 toutes les versions d'Elasticsearch 6.x.x sont compatibles. Pour un Pod avant la 1.8 toutes les versions d'Elasticsearch 2.4.x sont compatibles. Une mauvaise version peut empêcher le fonctionnement du moteur de recherche de Pod.
Il faut ensuite modifier le fichier de configuration d'elasticsearch pour le paramétrer. Exemple de paramètres :
# Name your cluster here to whatever.
# Machine is called "Pod", so...
cluster.name: pod
node.name: "Pod1"
network.host: 127.0.0.1
# Unicast Discovery (disable multicast)
discovery.zen.ping.multicast.enabled: false //Ne pas ajouter cette ligne si vous utilisez ES6
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
Vous pouvez également changer les paths :
logs: /usr/local/var/log
data: /usr/local/var/data
Si vous utilisez Elasticsearch version 6.x.x il est nécessaire d'installer un composant supplémentaire pour le moteur de recherche :
--> Procédures
Pour optimiser la recherche, il faut créer l'index Pod dans elasticsearch et pousser le template fourni :
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py create_pod_indexUne commande est fournie dans le cadre où l'on souhaiterais indexer ou réindexer une, plusieurs ou toutes les vidéos.
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py index_videos < __ALL__ || pod_id, pod_id...>Installations optionnels
root@podvm:~# aptitude install memcachedCommencez par installer le package pour le serveur FTP
sudo apt-get install vsftpdIl est nécessaire parfois d'ajouter un utilisateur ftp manuellement
sudo useradd --system ftp- INSTALLDIR correspond au futur répertoire d'installation.
- NOMFTPUSER correspond à l'utilisateur FTP.
- PASSFTPUSER correspond au mot de passe de l'utilisateur FTP.
En sachant cela, procéder comme suit en ligne de commande:
INSTALLDIR=/data
NOMFTPUSER="ftpuser"
PASSFTPUSER="a_changer"
mkdir $INSTALLDIR/audiovideocours
useradd -m -d $INSTALLDIR/audiovideocours/ftp $NOMFTPUSER
echo "$NOMFTPUSER:$PASSFTPUSER"|chpasswd
mkdir -p $INSTALLDIR/audiovideocours/ftp/canceled $INSTALLDIR/audiovideocours/ftp/client_update $INSTALLDIR/audiovideocours/ftp/live $INSTALLDIR/audiovideocours/ftp/releases
mkdir -p $INSTALLDIR/audiovideocours/cours
aptitude install vsftpd
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd.conf
sed -i 's/#local_enable=YES/local_enable=YES/' /etc/vsftpd.conf
sed -i 's/#write_enable=YES/write_enable=YES/' /etc/vsftpd.conf
sed -i 's/#local_umask=022/local_umask=022/' /etc/vsftpd.conf
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd.conf
sed -i 's/\/audiovideocours\/ftp/\/audiovideocours\/\.\/ftp/' /etc/passwd
echo "local_root=$INSTALLDIR/audiovideocours/ftp" >> /etc/vsftpd.conf
echo "passwd_chroot_enable=yes" >> /etc/vsftpd.conf
echo "pasv_enable=YES" >> /etc/vsftpd.conf
echo "pasv_min_port=5000" >> /etc/vsftpd.conf
echo "pasv_max_port=5100" >> /etc/vsftpd.conf
chmod go-w $INSTALLDIR/audiovideocours/ftp
chown -R $NOMFTPUSER:$NOMFTPUSER $INSTALLDIR/audiovideocours/ftp/*
/etc/init.d/vsftpd restartEnsuite il sera nécessaire de configurer l'enregistreur. A partir d'ici il n'existe pas de généralisation de configuration, tout dépends de ce que vous disposez. A titre d'exemple voici une configuration de l'enregistreur de l'université de Strasbourg :
ftpUrl="pod.univ-lille1.fr"
#"FTP URL server for online publication"
urlserver= "http://pod.univ-lille1.fr/mediacourses_add/"
#"Default URL of the audiovideocours server containing the submit form"
#######################################################
urlLiveState="http://pod.univ-lille1.fr/liveState"
Par défaut l'authentification sur le site se fait localement. Cependant, il est possible d'utiliser l'authentification CAS pour avoir accès au site. De plus il est possible de peupler la base de données du site avec les utilisateurs provenant d'un annuaire LDAP. Quand c'est le cas, un utilisateur du LDAP s'authentifiant par le CAS avec succès se verra inscrit dans la base Utilisateurs de Pod. Il s'agit là d'un import par la connexion de l'utilisateur, et pas d'un import global de tout les utilisateurs enregistrés dans le LDAP.
Pour activer l'authentification par le CAS il faut, dans le fichier settings_local.py, modifier la valeur de la variable USE_CAS à True. Et renseigner au minimum l'adresse du CAS dans la variable CAS_SERVER_URL. Pour activer le peuplement de la BDD en utilisant LDAP il faut passer la variable USE_LDAP_TO_POPULATE_USER à True. Normalement cette variable est par défaut sur cette valeur.
Quand le peuplement par LDAP est activé il est ensuite nécessaire de renseigner les variables dans la catégorie "LDAP settings" du fichier. Par défaut dans la variable AUTH_LDAP_USER_SEARCH, l'identifiant utilisateur recherché est l'attribut 'uid' dans le LDAP. Si vous n'utilisez pas ce nom d'attribut vous pouvez changez :
"(uid=%(uid)s)"par
"(<votre_attribut>=%(uid)s)"Pour le moment le site Pod récupère quatres informations du LDAP pour completer sa base de données :
- Le prénom
- Le nom de famille
- L'adresse mail
- L'affiliation
Démarches à suivre si vous désirez apporter vos propres traductions à votre instance de Pod.
Utilitaire de traduction et fichiers de langues
La plateforme est par défaut seulement en anglais et en français mais il est possible d'apporter vos propres traductions En root
root@podvm:~# aptitude install gettextRevenir ensuite en tant qu'utilisateur pod (ctrl+d). Par défaut le dossier locale se situe à la racine du projet :
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ ls -l
total 956
drwxr-xr-x 7 pod pod 4096 mai 19 16:00 core
-rw-r--r-- 1 pod pod 215040 mai 19 16:02 db.sqlite3
drwxr-xr-x 2 pod pod 4096 mai 19 15:59 django_cas_gateway
drwxr-xr-x 2 pod pod 4096 mai 19 16:42 locale
-rwxr-xr-x 1 pod pod 254 avril 25 17:24 manage.py
drwxr-xr-x 2 pod pod 4096 mai 19 16:04 pod_project
drwxr-xr-x 5 pod pod 4096 mai 19 16:00 pods
-rwxr-xr-x 1 pod pod 730429 avril 25 17:24 schema_bdd.jpgLa commande ci-après va créer un fichier nommé django.po avec toutes les phrases clés de la plateforme qu'il est nécessaire de traduire. Encore une fois par défaut ce fichier est déjà renseigné en Anglais + Français. Il est tenu à jour à chaque releases. Cette manipulation est à faire si vous faites vos propres modifications, dans ce cas cette commande va ajouter dans le fichier django.po les phrases qui n'ont pas encore de traduction.
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ django-admin.py makemessages -l fr
processing locale fr
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ cd locale/fr/LC_MESSAGES/
(django_pod)pod@podvm:~/django_projects/pod/pod_project/locale/fr/LC_MESSAGES$ ls -l
total 64
-rw-r--r-- 1 pod pod 61855 mai 19 16:43 django.poCe fichier peut être édité directement (avec vim ou poedit). Une phrase se traduit selon ce modèle :
#: core/forms.py:63
msgid "Please indicate the result of the following operation hereunder"
msgstr "Veuillez compléter le champ ci-dessous avec le résultat de l'opération"core/forms.py:63 correspond au fichier contenant la phrase à traduire ainsi que sa ligne
msgid la phrase originale
msgstr la phrase traduite
Une fois le fichier renseigné avec les traductions, il faut le compiler.
(django_pod)pod@podvm:~/django_projects/pod/pod_project/locale/fr/LC_MESSAGES$ cd ../../..
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ django-admin.py compilemessages
processing file django.po in /home/pod/django_projects/pod/pod_project/locale/fr/LC_MESSAGESCela génère un fichier django.mo (votre .po compilé).
Mise en place d'un thème personnalisé
Ajouter un nouveau thème
1°) Dupliquer le dossier « core/theme/LILLE1 » et son contenu vers un dossier « core/theme/nom_du_theme ».
2°) Dans le fichier « pod_project/settings_local.py », remplacer « TEMPLATE_THEME = 'DEFAULT' » par « TEMPLATE_THEME = 'nom_du_theme' ».
3°) Les images, styles et éléments de template personnalisables de votre instance se trouvent maintenant respectivement dans les sous-dossiers:
- « core/theme/nom_du_theme/assets/images »,
- « core/theme/nom_du_theme/assets/css »,
- « core/theme/nom_du_theme/templates ».
4°) Toujours dans le fichier « pod_project/settings_local.py »
- « TEMPLATE_USE_PRE_HEADER » et « TEMPLATE_USE_FOOTER » positionné à « False » donnera une mise en page standard, sans « footer » ni « pre-header » ;
- « TEMPLATE_USE_PRE_HEADER » et « TEMPLATE_USE_FOOTER » positionné à une autre valeur permettra d’utiliser ces éléments de mise en page.
5°) Templates personnalisés:
- « core/theme/nom_du_theme/templates/footer.html » ajoute un pied de page dans lequel apparaissent les liens définis dans la partie « Core/Pages menu du bas » de l’interface d’administration, ainsi que d’autres liens définis en dur dans le fichier ;
- « core/theme/nom_du_theme/templates/pre-header.html » ajoute un bandeau supplémentaire permettant d’ajouter un menu de navigation vers d’autres sites de l’université ;
- si seul le footer est souhaité, supprimer le contenu de « pre-header ».
6°) Styles
- la feuille de style concernant l’interface utilisateur est « core/theme/nom_du_theme/assets/css/pod.css » ;
- celle concernant l’interface d’administration est « core/theme/nom_du_theme/assets/css/admin.css » ;
- plutôt que d’éditer directement ces feuilles de style, il est recommandé de surcharger les règles concernées en fin de fichier, ce qui en facilitera la mise à jour.
7°) Images : voir « Correspondance des images » ci-après.
8°) Dossier « static » :
- son emplacement est défini par « STATIC_ROOT » dans le fichier « settings-local.py » ;
- s’il n’est pas vide, supprimer tout le contenu de ce dossier.
9°) Une fois le theme finalisé, lancez la collecte des fichiers statiques depuis l’environnement virtuel.
Correspondance des images (dans « pod_project/settings.py ») :
- LOGO_SITE : situé à gauche, au dessus du menu, en face de la sélection des langues et du bouton de connexion ;
- LOGO_COMPACT_SITE : est utilisé dans la barre contenant le menu sur les interfaces mobiles, en remplacement de LOGO_SITE ;
- LOGO_ETB : utilisé dans la version par défaut du template personnalisé « templates/pre-header.html » du thème ;
- LOGO_PLAYER : utilisé dans la barre de commandes du lecteur vidéo ;
- SERV_LOGO : utilisé dans la partie gauche du pied de page « templates/footer.html » du thème.
Le thème lille1 est basé sur bootstrap v3, vous pouvez le télécharger et le personnaliser à ces adresses : http://getbootstrap.com/ et http://getbootstrap.com/customize/
D'autre part, il vous est possible de créer un header et un footer personnalisés. Pour se faire, il vous faut copier le dossier custom situé dans le dossier templates et modifier les fichier header et footer s'y trouvant. Une fois fait il ne reste plus qu'à indiquer dans votre settings.py où se trouvent vos templates personnalisés en mettant à jour la constante “TEMPLATE_CUSTOM” (seul le nom du dossier qui se trouve dans “templates” est nécessaire, pas besoin du chemin complet).
Comment lancer les tests sur Pod. Il est important de procéder à des tests avant chaque déploiements et/ou après des modifications du code source pour s'assurer de la bonne intégrité du programme.
Lancement des tests
Tout un ensemble de tests dit unitaires ont été ajoutés depuis la version 1.1. Ils permettent de vérifier la création, la lecture, la mise à jour et la suppression d'éléments sur la plateforme. De plus, selon la configuration, ils vérifient également la connexion Elasticsearch, CAS, LDAP et testent un encodage.
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py test core pods.tests.tests_models pods.tests.tests_views pods.tests.tests_delete_videoAprès chaque lancement de tests unitaires il sera nécessaire de réindexer elasticsearch (voir le chapitre sur Elasticsearch).
Le serveur de développement permet de tester vos futurs modifications facilement.
Lancement du serveur
N'hésitez pas à lancer le serveur de développement pour vérifier vos modifications au fur et à mesure.
À ce niveau, vous devriez avoir le site en français et en anglais et voir l'ensemble de la page d'accueil.
(django_pod)pod@podvm:~/django_projects/pod/pod_project$ python manage.py runserver ADRESSE_IP/NOM_DNS:8080Vérifier l'accès à la plateforme en saisissant les paramètres fournis http://ADRESSE_IP:8080 ou http://NOM_DNS:8080
Avant la mise en production, il faut vérifier le fonctionnement de la plateforme dont l'ajout d'une vidéo, son encodage et sa suppression.
Attention, pour ajouter une vidéo, il doit y avoir au moins un type de vidéo disponible. Si vous avez correctement peuplé votre base de données avec le fichier initial_data.json vous devez au moins avoir other/autres.
il faut vérifier l'authentification CAS, le moteur de recherche etc.
Pod, plateforme de gestion de video
Avec la participation de :
[UNR Nord pas de calais] (http://www.unr-npdc.org/) ![UNR Nord pas de calais] (http://www.unr-npdc.org/sites/www.unr-npdc.org/themes/unrnpdc/img/logo_unr.gif "UNR Nord pas de calais")
Ministère de l'éducation nationale, de l'enseignement supérieur et de la recherche



