Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Bloc de code
languagebash
themeMidnight
titleServeur(s) Pod / Compte %userpod%
[%userpod%@ts-sun-video ~]$ cd
[%userpod%@ts-sun-video ~]$ source .bashrc
[%userpod%@ts-sun-video ~]$ cd /data/www/%userpod%/django_projects/podv2
[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/podv2]$ workon django_pod
(django_pod) [%userpod%@ts-sun-video][/data/www/%userpod%/django_projects/podv2] pip3 install --upgrade pip
(django_pod) [%userpod%@ts-sun-video][/data/www/%userpod%/django_projects/podv2] pip3 install -r requirements.txt 


(avertissement) Il faut vérifier que l'on se trouve bien dans l'environnement virtuel (présence de "(django_pod)" au début l'invite de commande. Sinon, il faut lancer la commande, dans le bon répertoire $> workon django_pod.

...

Utilisé pour la génération des overviews. A installer sur le serveur d'encodage.

Pour CentOS 8, ajoutez :

yum config-manager --set-enabled PowerTools


Bloc de code
languagebash
themeMidnight
[root@ts-sun-video ~]# yum install ImageMagick ImageMagick-devel

...

Bloc de code
languagepy
themeMidnight
[root@ts-sun-video ~]# yum -y install epel-release
[root@ts-sun-video ~]# rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
[root@ts-sun-video ~]# # Attention : modification du 0-1 en 0-5 par rapport à la documentation ci-dessus
[root@ts-sun-video ~]# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
[root@ts-sun-video ~]# yum repolist

Pour CentOS 8, ajouter :
yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm -y

[root@ts-sun-video ~]# yum install --enablerepo=epel ffmpeg ffmpeg-devel
[root@ts-sun-video ~]# yum install --enablerepo=epel ffmpegthumbnailer

...

Info

Au final, le serveur contient 2 versions différentes de ffmpeg :

  • une version installée à la main (cf. paragraphe précédent), qui sera la plus récente possible. C'est cette version qui sera utilisée par Pod.
  • une version installée via yum. Cette version sera seulement utilisée via ffmpegthumbnailer.

...

Elasticsearch

Pour utiliser Elasticsearch, il faut avoir java8 sur sa machine.

Installation de

...

A installer uniquement sur le serveur principal (1 seul RabbitMQ est utile).

Installation d'Erlang
Info

Si besoin : pour supprimer les anciennes versions d'Erlang  : (yum list installed | grep erl | grep -v perl)

yum remove 'erlang-*'

La documentation officielle : https://www.erlang-solutions.com/resources/download.html

...

java

Dans l'environnement applicatif UM, Java est installé de base; cette étape n'est alors pas nécessaire.

Bloc de code
languagepy
themeMidnight
[root@ts-sun-video ~]# yum install java-1.8.0-openjdk.x86_64


Installation Elasticsearch

1.PGP
Bloc de code
languagebash
titleServeur principal Pod / Compte rootRepository pour Elasticsearch (compte root)
[root@ts-sun-video ~]# rpm cd
[root@ts-sun-video ~]# wget import https://githubartifacts.elastic.com/rabbitmq/erlang-rpm/releases/download/v21.2.3/erlang-21.2.3-1.el7.centos.x86_64.rpm
[root@ts-sun-video ~]# yum install erlang-21.2.3-1.el7.centos.x86_64.rpm
Installation de RabbitMQ
co/GPG-KEY-elasticsearch
2. Création du fichier /etc/yum.repos.d/elasticsearch.repo
Bloc de code
languagetext
themeEmacs
titleemacs /etc/yum.repos.d/elasticsearch.repo (compte root)
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
3. Installation via yum
Bloc de code
languagebash
titleE / Installation Elasticsearch (compte root)
Bloc de code
languagebash
titleServeur principal Pod / Compte root
[root@ts-sun-video ~]# cd
[root@ts-sun-video ~]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server-3.7.10-1.el7.noarch.rpm
[root@ts-sun-video ~]# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
[root@ts-sun-video ~]# yum install rabbitmq-server-3.7.10-1.el7.noarch.rpm
[root@ts-sun-video ~]# # Démarrage du service la 1° foiselasticsearch

(avertissement) S'il y a besoin de supprimer une ancienne installation d'Elasticsearch, exécuter la commande suivante, en tant que root : yum erase elasticsearch


4. Mise en service
Bloc de code
languagebash
titleMise en service Elasticsearch (compte root)
[root@ts-sun-video ~]# systemctl daemon-reload
[root@ts-sun-video ~]# systemctl start rabbitmq-server
enable elasticsearch.service
6. Gestion des droits des répertoires
Bloc de code
languagebash
titleE / Droits des répertoires Elasticsearch (compte root)
[root@ts-sun-video ~]# # ActivationCréation des pluginsrépertoires RabbitMQ (utile pour l'interface Web)de base
[root@ts-sun-video ~]# rabbitmq-plugins enable rabbitmq_management
Utilisation de Rabbitmq management console

Il est possible d'utiliser une interface Web pour gérer Rabbitmq; cette interfaçe se nomme Rabbitmq management console.

La version installée contient - de base - cette interface. Il n'y a plus besoin d'installation complémentaire.

Il est ensuite possible d'accéder à cette interface via le port 15672 : http://[serverPod]:15672/

(avertissement) Penser à rendre accessible ce port pour les utilisateurs concernés de la DSI.

Gestion de la sécurité
Bloc de code
languagebash
titleServeur principal Pod / Compte root
mkdir /data/elasticsearch/data -p
[root@ts-sun-video ~]# mkdir /data/elasticsearch/logs
[root@ts-sun-video ~]# #chown On crée un nouvel utilisateur pod qui dispose d'un mot de passe xxxxxelasticsearch:elasticsearch /data/elasticsearch/ -R
[root@ts-sun-video ~]# rabbitmqctl add_user pod xxxxxchown elasticsearch:elasticsearch /usr/share/elasticsearch/ -R
[root@ts-sun-video ~]# #chown On donne les droits administrateurs. Commande documentée mais ne fonctionne pas dans mon cas "rabbitmqctl set_admin pod" remplacée par celle ci-dessous
[root@ts-sun-video ~]# rabbitmqctl set_user_tags pod administrator
[root@ts-sun-video ~]# # Commande documentée mais ne fonctionne pas elasticsearch:elasticsearch /etc/elasticsearch/ -R
6. Paramétrage
Bloc de code
languagetext
themeEmacs
titleemacs /etc/elasticsearch/elasticsearch.yml (compte root)
cluster.name: %userpod%
node.name: node-1
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
# Mettre l'adresse IP du serveur
network.host: 162.38.xx.xx
# Au cas où, il est aussi possible de mettre 0.0.0.0
# network.host: 0.0.0.0
# Adresse IP du ou des serveurs pod
discovery.zen.ping.unicast.hosts: ["162.38.xx.xx"]
7. Démarrage et test ES
Bloc de code
languagebash
titleServeur(s) Pod / Démarrage et test Elasticsearch (compte root)
[root@ts-sun-video ~]# systemctl start elasticsearch.service
# Mettre l'adresse IP du serveur Elasticsearchdans mon cas "abbitmqctl clear_admin guest" remplacée par celle ci-dessous
[root@ts-sun-video ~]# rabbitmqctlcurl set_permissions -pXGET / pod ".*" ".*" ".*"

Installation de Celery

Configuration Pod & Celery
Info

Celery est intégré à Pod dans le fichier requirements.txt à la racine du projet. Pensez à vérifier que vous avez bien installé les prérequis python au passage (n'oubliez pas d'être en environnement virtuel) :

(django_pod) %userPod%@ts-sun-video:~/django_projects/pod$ pip3 install -r requirements.txt

Les fichiers relatifs à Celery sont déjà créés dans Pod. L'installation est donc terminée.

Configurer le fichier settings_local.py de Pod, pour utiliser l'encodage déporté.

Bloc de code
languagetext
# Encode with Celery
CELERY_TO_ENCODE = True
CELERY_BROKER_URL = "amqp://pod:xxxx@162.38.xxx//"

(avertissement) La valeur du celery_broker doit pointer vers le serveur RabbitMQ (installé sur le serveur principal).

(avertissement) Cette configuration a changé entre Pod v1 et Pod v2. Il faut maintenant utiliser CELERY_BROKER_URL.

Avertissement

Le paragraphe suivant concerne le serveur d'encodage. Dans son cas, il doit recevoir les ordres d'encodage qui lui ont été envoyés.
La création des fichiers celeryd permettent au serveur d'encodage de recevoir ces ordres !

Installations complémentaires (Celeryd)

A réaliser UNIQUEMENT sur le serveur d'encodage.

...

http://162.38.xx.xx:9200/_cat/nodes

8. Installation du plugin ICU

Pour utiliser la recherche dans Pod, nous allons avoir besoin également du plugin ICU:

Bloc de code
languagebash
titleServeur(s) Pod / Installation plugin ICU (compte root)
[root@ts-sun-video ~]# cd /usr/share/elasticsearch/ ????
[root@ts-sun-video ~]# bin/elasticsearch-plugin install analysis-icu
[root@ts-sun-video ~]# systemctl restart elasticsearch

Installation et configuration du module H5PP

Pour installer H5PP avec Podv2, la procédure est un peu particulière.

Voici les étapes nécessaires à cette installation :

1. Installation des packages

Bloc de code
languagebash
titleServeur(s) Pod / Installation H5PP (compte %userpod%)
[%userpod%@ts-sun-video ~]# cd
[%userpod%@ts-sun-video ~]# source .bashrc
[%userpod%@ts-sun-video ~]# cd /data/www/%userpod%/django_projects
# Installation requests
[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# pip3 install requests
[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# workon django_pod
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# git clone https://github.com/EsupPortail/H5PP.git
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# cd H5PP
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/H5PP]# git checkout --track origin/dev
# Création du package H5PP (-> création de dist/H5PP-0.1.9.tar.gz)
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/H5PP]# python setup.py sdist
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/H5PP]# cd ../podv2
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/podv2]# pip3 install  ../H5PP/dist/H5PP-0.1.9.tar.gz

2. Configuration du plugin dans Pod

Pour activer le plugin dans Pod, il est nécessaire d'éditer son fichier custom/settings_local.py :

Bloc de code
languagetext
titleServeur(s) Pod / emacs /data/www/%userpod%django_projects/podv2/custom/settins_local.py (compte %userpod%)
THIRD_PARTY_APPS = ['live', 'enrichment', 'interactive']


##
# H5P relative parameters
#
H5P_ENABLED = True

...

Bloc de code
CELERYD_NODES="worker1"                                                        # Nom du/des worker(s)
DJANGO_SETTINGS_MODULE="pod.settings"                                  # settings de votre Pod
CELERY_BIN="/data/www/%userpod%/.virtualenvs/django_pod/bin/celery"              # répertoire source de celery
CELERY_APP="pod.main"                                      	# Active the module or not
#H5P_VERSION = '7.x'          # application  se situe celery
CELERYD_CHDIR="/data/www/%userpod%/django_projects/podv2"	           # répertoire du projet Pod (où se trouve manage.py)
CELERYD_OPTS="--time-limit=86400 --concurrency=1 --maxtasksperchild=1"         # options à appliquer en plus sur le comportement du/des worker(s)
CELERYD_LOG_FILE="/var/log/celery/%N.log" # Current version of H5P module
H5P_DEV_MODE = 0                                        # Active the development mode or not
#H5P_PATH = os.path.join(BASE_DIR, 'h5pp/static/h5p')   # fichier log
CELERYD_PID_FILE="/var/run/celery/%N.pid"Path to static ressources of H5PP module
H5P_URL = '/h5p/'                                       # fichier pid
CELERYD_USER="%userpod%"All H5PP pages begin with this url
H5P_SAVE = 30                                           # How often current content state should be saved
H5P_EXPORT = '/exports/'      # utilisateur système utilisant celery
CELERYD_GROUP="nginx"                      # Location of exports (packages .h5p)
H5P_LANGUAGE = 'fr'                            # groupe système utilisant celery
CELERY_CREATE_DIRS=1     # Language of the module H5P.
BASE_URL     = 'https://pod-test.umontpellier.fr'                                            # si celery dispose du droit de création de dossiers
CELERYD_LOG_LEVEL="INFO"                                                       # niveau d'information qui seront inscrit dans les logs

...

# Hostname of your django ap


Avertissement

Comme tout changement majeur au fichier settings_local.py, il sera sûrement nécessaire de réaliser une migration de la base de données via les commandes suivantes :

  • python manage.py makemigrations
  • python manage.py migrate

N'oubliez pas de relancer tous les services en lien avec ce fichier de configuration (en cas de cache) : uWSGI, celeryd voire nginx et rabbitmq (cf. document d'exploitation v2).

3. Librairies nécessaires au module H5P

Il reste maintenant à installer les librairies nécessaires au module sous-jacent H5P.

Pour cela, il suffit de se rendre à l'URL http://<adresse_serveur>/h5p/home/.

Puis, dans cette page :

  • Télécharger H5P via le lien donnée Official Release (fichier au format H5P),
  • Se positionner dans l'onglet "Libraries", puis d'uploader ce fichier H5P via "Upload H5P File" et "Proceed".

Ainsi, les librairies H5P seront accessibles dans Pod, et l'icône d'ajout d'interactivité sera ajouté aux vidéos.

(avertissement) Il semblerait qu'il manque des éléments de style (CSS, images...) pour l'affichage dans Pod v2, mais l'ajout de librairies fonctionne correctement. 


4. Actions complémentaires

Il semblerait que l'ensemble des fichiers statiques ne soient pas positionnés par défaut au bon endroit : avec Pod v2, la variable H5P_PATH ne semble pas être pris en compte et provoque même une erreur au démarrage.

Pour ma part, j'ai résolu ce problème en positionnant manuellement les fichiers statiques au bon endroit (cela n'est sûrement pas la meilleure méthode, mais cela fonctionne), à savoir :

Bloc de code
languagebash
titleServeur(s) Pod / Copie de fichiers statiques (compte %userpod%)
# Les fichiers statiques sont dans l'environnement virtuel. Il a fallu copier le répertoire h5p :
cp /data/www/%userpod%/.virtualenvs/django_pod/lib/python3.6/site-packages/h5pp/static/h5p /data/www/%userpod%/django_projects/podv2/pod/static/h5p -R




Encodage déporté

Installation de RabbitMQ

A installer uniquement sur le serveur principal (1 seul RabbitMQ est utile).

Installation d'Erlang
Info

Si besoin : pour supprimer les anciennes versions d'Erlang  : (yum list installed | grep erl | grep -v perl)

yum remove 'erlang-*'

La documentation officielle : https://www.erlang-solutions.com/resources/download.html

Voici ce qui a été fait à l'UM :


Bloc de code
languagebash
titleServeur principal Pod / Compte root
Avertissement

Ayant eu des problèmes de droits sur le répertoire contenant les vidéos (qui peuvent être déposés et par le user nginx et par le user Celery), j'ai ajouté l'utilisateur dans le groupe Nginx et j'ai changé quelques droits :

[root@ts-sun-video ~]# usermod -g nginx %userpod%
[root@ts-sun-video ~]# chown %userpod%:nginx /data/www/%userpod%/media -R
[root@ts-sun-video ~]# chmod 755 /data/www/%userpod%/media/ -R

  • Configurer pour que ce service soit démarré lors d'un reboot :
Bloc de code
languagebash
titleMise en service uwsgi-pod (compte root)
[root@ts-sun-video ~]# systemctl daemon-reload
[root@ts-sun-video ~]# systemctl enable celeryd
  • Configurer un système de logrotate pour vider régulièrement les logs de Celery, sur le serveur d'encodage. Pour cela, j'ai créé le fichier /etc/logrotate.d/celery avec le contenu suivant :
Bloc de code
/var/log/celery/*.log {
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
    daily
    dateext
    rotate 7
    size 10M
}

Elasticsearch

Pour utiliser Elasticsearch, il faut avoir java8 sur sa machine.

Installation de java

Dans l'environnement applicatif UM, Java est installé de base; cette étape n'est alors pas nécessaire.

Bloc de code
languagepy
themeMidnight
[root@ts-sun-video ~]# yum install java-1.8.0-openjdk.x86_64

Installation Elasticsearch

1.PGP
Bloc de code
languagebash
titleRepository pour Elasticsearch (compte root)
[root@ts-sun-video ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2. Création du fichier /etc/yum.repos.d/elasticsearch.repo
Bloc de code
languagetext
themeEmacs
titleemacs /etc/yum.repos.d/elasticsearch.repo (compte root)
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
3. Installation via yum
Bloc de code
languagebash
titleE / Installation Elasticsearch (compte root)
[root@ts-sun-video ~]# yum install elasticsearch

(avertissement) S'il y a besoin de supprimer une ancienne installation d'Elasticsearch, exécuter la commande suivante, en tant que root : yum erase elasticsearch

...

Bloc de code
languagebash
titleMise en service Elasticsearch (compte root)
cd
[root@ts-sun-video ~]# systemctl daemon-reload
[root@ts-sun-video wget https://github.com/rabbitmq/erlang-rpm/releases/download/v21.2.3/erlang-21.2.3-1.el7.centos.x86_64.rpm
[root@ts-sun-video ~]# systemctlyum enable elasticsearch.service

...

install erlang-21.2.3-1.el7.centos.x86_64.rpm
Installation de RabbitMQ
Bloc de code
languagebash
titleE / Droits des répertoires Elasticsearch (compte root)Serveur principal Pod / Compte root
[root@ts-sun-video ~]# # Création des répertoires de basecd
[root@ts-sun-video ~]# mkdir /data/elasticsearchwget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server-3.7.10-1.el7.noarch.rpm
[root@ts-sun-video ~]# mkdir /data/elasticsearch/datarpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
[root@ts-sun-video ~]# mkdir /data/elasticsearch/logsyum install rabbitmq-server-3.7.10-1.el7.noarch.rpm
[root@ts-sun-video ~]# # Démarrage chown elasticsearch:elasticsearch /data/elasticsearch/ -Rdu service la 1° fois
[root@ts-sun-video ~]# chownsystemctl elasticsearch:elasticsearch /usr/share/elasticsearch/ -Rstart rabbitmq-server
[root@ts-sun-video ~]# chown elasticsearch:elasticsearch /etc/elasticsearch/ -R

...

 # Activation des plugins RabbitMQ (utile pour l'interface Web)
[root@ts-sun-video ~]# rabbitmq-plugins enable rabbitmq_management
Utilisation de Rabbitmq management console

Il est possible d'utiliser une interface Web pour gérer Rabbitmq; cette interfaçe se nomme Rabbitmq management console.

La version installée contient - de base - cette interface. Il n'y a plus besoin d'installation complémentaire.

Il est ensuite possible d'accéder à cette interface via le port 15672 : http://[serverPod]:15672/

(avertissement) Penser à rendre accessible ce port pour les utilisateurs concernés de la DSI.

Gestion de la sécurité
Bloc de code
theme
languagetextbashEmacs
titleemacs /etc/elasticsearch/elasticsearch.yml (compte root)
cluster.name: %userpod%
node.name: node-1
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
# Mettre l'adresse IP du serveur
network.host: 162.38.xx.xx
# Au cas où, il est aussi possible de mettre 0.0.0.0
# network.host: 0.0.0.0
# Adresse IP du ou des serveurs pod
discovery.zen.ping.unicast.hosts: ["162.38.xx.xx"]
7. Démarrage et test ES
Serveur principal Pod / Compte root
[root@ts-sun-video ~]# # On crée un nouvel utilisateur pod qui dispose d'un mot de passe xxxxx
[root@ts-sun-video ~]# rabbitmqctl add_user pod xxxxx
[root@ts-sun-video ~]# # On donne les droits administrateurs. Commande documentée mais ne fonctionne pas dans mon cas "rabbitmqctl set_admin pod" remplacée par celle ci-dessous
Bloc de code
languagebash
titleServeur(s) Pod / Démarrage et test Elasticsearch (compte root)
[root@ts-sun-video ~]# systemctl start elasticsearch.service
# Mettre l'adresse IP du serveur Elasticsearchrabbitmqctl set_user_tags pod administrator
[root@ts-sun-video ~]# curl -XGET http://162.38.xx.xx:9200/_cat/nodes

...

Pour utiliser la recherche dans Pod, nous allons avoir besoin également du plugin ICU:

Bloc de code
languagebash
titleServeur(s) Pod / Installation plugin ICU (compte root)
[root@ts-sun-video ~]# systemctl cd /usr/share/elasticsearch/ # Commande documentée mais ne fonctionne pas dans mon cas "abbitmqctl clear_admin guest" remplacée par celle ci-dessous
[root@ts-sun-video ~]# bin/elasticsearch-plugin install analysis-icu
[root@ts-sun-video ~]# systemctl restart elasticsearch

Installation et configuration du module H5PP

Pour installer H5PP avec Podv2, la procédure est un peu particulière.

Voici les étapes nécessaires à cette installation :

1. Installation des packages

rabbitmqctl set_permissions -p / pod ".*" ".*" ".*"


Installation de Celery

Configuration Pod & Celery
Info

Celery est intégré à Pod dans le fichier requirements.txt à la racine du projet. Pensez à vérifier que vous avez bien installé les prérequis python au passage (n'oubliez pas d'être en environnement virtuel) :

(django_pod) %userPod%@ts-sun-video:~/django_projects/pod$ pip3 install -r requirements.txt

Les fichiers relatifs à Celery sont déjà créés dans Pod. L'installation est donc terminée.

Configurer le fichier settings_local.py de Pod, pour utiliser l'encodage déporté.

Bloc de code
languagetext
# Encode with Celery
CELERY_TO_ENCODE = True
CELERY_BROKER_URL = "amqp://pod:xxxx@162.38.xxx//"

(avertissement) La valeur du celery_broker doit pointer vers le serveur RabbitMQ (installé sur le serveur principal).

(avertissement) Cette configuration a changé entre Pod v1 et Pod v2. Il faut maintenant utiliser CELERY_BROKER_URL.


Avertissement

Le paragraphe suivant concerne le serveur d'encodage. Dans son cas, il doit recevoir les ordres d'encodage qui lui ont été envoyés.
La création des fichiers celeryd permettent au serveur d'encodage de recevoir ces ordres !

Installations complémentaires (Celeryd)

A réaliser UNIQUEMENT sur le serveur d'encodage.

Bloc de code
CELERYD_NODES="worker1"                                                        # Nom du/des worker(s)
DJANGO_SETTINGS_MODULE="pod.settings"                                  # settings de votre Pod
CELERY_BIN="/data/www/%userpod%/.virtualenvs/django_pod/bin/celery"              # répertoire source de celery
CELERY_APP="pod.main"                                                       # application où se situe celery
CELERYD_CHDIR="
Bloc de code
languagebash
titleServeur(s) Pod / Installation H5PP (compte %userpod%)
[%userpod%@ts-sun-video ~]# cd
[%userpod%@ts-sun-video ~]# source .bashrc
[%userpod%@ts-sun-video ~]# cd /data/www/%userpod%/django_projects
# Installation requests
[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# pip3 install requests
[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# workon django_pod
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# git clone https://github.com/EsupPortail/H5PP.git
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects]# cd H5PP
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/H5PP]# git checkout --track origin/dev
# Création du package H5PP (-> création de dist/H5PP-0.1.9.tar.gz)
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/H5PP]# python setup.py sdist
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/H5PP]# cd ../podv2
(django_pod)[%userpod%@ts-sun-video /data/www/%userpod%/django_projects/podv2]#"	 pip3 install  ../H5PP/dist/H5PP-0.1.9.tar.gz

2. Configuration du plugin dans Pod

Pour activer le plugin dans Pod, il est nécessaire d'éditer son fichier custom/settings_local.py :

Bloc de code
languagetext
titleServeur(s) Pod / emacs /data/www/%userpod%django_projects/podv2/custom/settins_local.py (compte %userpod%)
THIRD_PARTY_APPS = ['live', 'enrichment', 'interactive']


##
# H5P relative parameters
#
H5P_ENABLED =répertoire Truedu projet Pod (où se trouve manage.py)
CELERYD_OPTS="--time-limit=86400 --concurrency=1 --maxtasksperchild=1"         # options à appliquer en plus sur le comportement du/des worker(s)
CELERYD_LOG_FILE="/var/log/celery/%N.log"            	# Active the module or not
#H5P_VERSION = '7.x'                   # fichier log
CELERYD_PID_FILE="/var/run/celery/%N.pid"               # Current version of H5P module
H5P_DEV_MODE = 0                # fichier pid
CELERYD_USER="%userpod%"                      # Active the development mode or not
#H5P_PATH = os.path.join(BASE_DIR, 'h5pp/static/h5p')   # Path to static ressources of H5PP module
H5P_URL = '/h5p/'              # utilisateur système utilisant celery
CELERYD_GROUP="nginx"                     # All H5PP pages begin with this url
H5P_SAVE = 30                           # groupe système utilisant celery
CELERY_CREATE_DIRS=1            # How often current content state should be saved
H5P_EXPORT = '/exports/'                                # Location of exports (packages .h5p)
H5P_LANGUAGE = 'fr'        # si celery dispose du droit de création de dossiers
CELERYD_LOG_LEVEL="INFO"                              # Language of the module H5P.
BASE_URL = 'https://pod-test.umontpellier.fr'                         # Hostname of your django ap
Avertissement

Comme tout changement majeur au fichier settings_local.py, il sera sûrement nécessaire de réaliser une migration de la base de données via les commandes suivantes :

  • python manage.py makemigrations
  • python manage.py migrate

N'oubliez pas de relancer tous les services en lien avec ce fichier de configuration (en cas de cache) : uWSGI, celeryd voire nginx et rabbitmq (cf. document d'exploitation v2).

3. Librairies nécessaires au module H5P

Il reste maintenant à installer les librairies nécessaires au module sous-jacent H5P.

Pour cela, il suffit de se rendre à l'URL http://<adresse_serveur>/h5p/home/.

Puis, dans cette page :

  • Télécharger H5P via le lien donnée Official Release (fichier au format H5P),
  • Se positionner dans l'onglet "Libraries", puis d'uploader ce fichier H5P via "Upload H5P File" et "Proceed".

Ainsi, les librairies H5P seront accessibles dans Pod, et l'icône d'ajout d'interactivité sera ajouté aux vidéos.

(avertissement) Il semblerait qu'il manque des éléments de style (CSS, images...) pour l'affichage dans Pod v2, mais l'ajout de librairies fonctionne correctement. 

...

 niveau d'information qui seront inscrit dans les logs
  • Démarrage si nécessaire du service : systemctl start celeryd

Avertissement

Ayant eu des problèmes de droits sur le répertoire contenant les vidéos (qui peuvent être déposés et par le user nginx et par le user Celery), j'ai ajouté l'utilisateur dans le groupe Nginx et j'ai changé quelques droits :

[root@ts-sun-video ~]# usermod -g nginx %userpod%
[root@ts-sun-video ~]# chown %userpod%:nginx /data/www/%userpod%/media -R
[root@ts-sun-video ~]# chmod 755 /data/www/%userpod%/media/ -R

  • Configurer pour que ce service soit démarré lors d'un reboot :
Bloc de code
languagebash
titleMise en service uwsgi-pod (compte root)
[root@ts-sun-video ~]# systemctl daemon-reload
[root@ts-sun-video ~]# systemctl enable celeryd


  • Configurer un système de logrotate pour vider régulièrement les logs de Celery, sur le serveur d'encodage. Pour cela, j'ai créé le fichier /etc/logrotate.d/celery avec le contenu suivant :


Bloc de code
/var/log/celery/*.log {
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
    daily
    dateext
    rotate 7
    size 10M
}

Il semblerait que l'ensemble des fichiers statiques ne soient pas positionnés par défaut au bon endroit : avec Pod v2, la variable H5P_PATH ne semble pas être pris en compte et provoque même une erreur au démarrage.

Pour ma part, j'ai résolu ce problème en positionnant manuellement les fichiers statiques au bon endroit (cela n'est sûrement pas la meilleure méthode, mais cela fonctionne), à savoir :

Bloc de code
languagebash
titleServeur(s) Pod / Copie de fichiers statiques (compte %userpod%)
# Les fichiers statiques sont dans l'environnement virtuel. Il a fallu copier le répertoire h5p :
cp /data/www/%userpod%/.virtualenvs/django_pod/lib/python3.6/site-packages/h5pp/static/h5p /data/www/%userpod%/django_projects/podv2/pod/static/h5p -R



Configuration Pod v2

Le fichier custom/settings_local.py

...