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.

Configuration :

Une paire de clés RSA est nécessaire pour ActivityPub.
Elles peuvent être générées ainsi :


Bloc de code
languagepy
from Crypto.PublicKey import RSA

activitypub_key = RSA.generate(2048)

# Generate the private key
# Add the content of this command in 'pod/custom/settings_local.py'
# in a variable named ACTIVITYPUB_PRIVATE_KEY
with open("pod/activitypub/ap.key", "w") as fd:
    fd.write(activitypub_key.export_key().decode())

# Generate the public key
# Add the content of this command in 'pod/custom/settings_local.py'
# in a variable named ACTIVITYPUB_PUBLIC_KEY
with open("pod/activitypub/ap.pub", "w") as fd:
    fd.write(activitypub_key.publickey().export_key().decode())
Astuce

Nous appellerons dans la suite de cette documentation, serveur frontal le serveur où la partie web serveur est installée et serveur encodage le serveur où est déporté la tache ActivityPub

...


Rajouter la configuration Celery/Redis dans le fichier settings_local.py

Bloc de code
languagebash
(django_pod) pod@pod:/usr/local/django_projects/podv3$ nano pod/custom/settings_local.py


Bloc de code
languagepy
titlesettings_local.py
# Configuration ActivityPub sur le frontal
USE_ACTIVITYPUB = True
ACTIVITYPUB_CELERY_BROKER_URL = "redis://127.0.0.1:6379/67" # on utilise la db 7 comme espace file d'attente sur redis

with open("pod/activitypub/ap.key") as fd:
    ACTIVITYPUB_PRIVATE_KEY = fd.read()

with open("pod/activitypub/ap.pub") as fd:
    ACTIVITYPUB_PUBLIC_KEY = fd.read() 

...

Il faut installer Pod sans réinitialiser la base et sans nginx/uwsgi/Elasticsearch. Vous pouvez suivre la doc Installation de la plateforme Pod.

Rajouter la configuration de tout ça dans le fichier de configuration

Il faut maintenant dire au serveur d’encodage :

  • Que l’on souhaite utiliser CELERY
  • Donner l’adresse du serveur front de CELERY BROKER
Bloc de code
languagebash
(django_pod) pod@pod-encodage:/usr/local/django_projects/podv3$ nano pod/custom/settings_local.py

 

Bloc de code
languagepy
USE_XAPI = True
XAPI_ANONYMIZE_ACTOR = False
XAPI_LRS_LOGIN = "XXX"
XAPI_LRS_PWD = "XXX"
XAPI_LRS_URL = "http://monserveurLRS/xAPI/statements/"
USE_XAPI_VIDEO = True
XAPI_CELERY_BROKER_URL = "redis://redis:6379/6" # on utilise la db6 comme espace file d'attente sur redis

Activer Celery

...

Mettre le contenu de https://raw.githubusercontent.com/celery/celery/main/extra/generic-init.d/celeryd dans /etc/init.d/celeryd-activitypub

Bloc de code
languagebash
(django_pod) pod@pod-enc:~/django_projects/podv3$:~$ sudo nano /etc/init.d/celeryd-activitypub 
(django_pod) pod@pod-enc:~/django_projects/podv3$:~$ sudo chmod u+x /etc/init.d/celeryd-activitypub

Créer le fichier default associé :

Bloc de code
languagebash
(django_pod) pod@pod-enc:/usr/local/django_projects/podv3$:~$ sudo nano /etc/default/celeryd-activitypub


Bloc de code
languagebash
title/etc/default/celeryd-activitypub
CELERYD_NODES="worker-activitypub"                                     # Nom du/des worker(s). Ajoutez autant de workers que de tache à executer en parallele.
CELERY_BIN="/home/pod/.virtualenvs/django_pod/bin/celery"              # répertoire source de celery
CELERY_APP="pod.activitypub.tasks"                                     # application où se situe celery
CELERYD_CHDIR="/usr/local/django_projects/podv3"                       # répertoire du projet Pod (où se trouve manage.py)
CELERYD_OPTS="--time-limit=86400 --concurrency=1 --max-tasks-per-child=1  --prefetch-multiplier=1" # options à appliquer en plus sur le comportement du/des worker(s)
CELERYD_LOG_FILE="/var/log/celery/%N.log"                              # fichier log
CELERYD_PID_FILE="/var/run/celery/%N.pid"                              # fichier pid
CELERYD_USER="pod"                                                     # utilisateur système utilisant celery
CELERYD_GROUP="pod"                                                    # groupe système utilisant celery
CELERY_CREATE_DIRS=1                                                   # si celery dispose du droit de création de dossiers
CELERYD_LOG_LEVEL="INFO"                                               # niveau d'information qui seront inscrit dans les logs

...

Vérifier que tout est OK :

Bloc de code
languagebash
(django_pod) pod@pod-enc:~:/usr/local/django_projects/podv3$ celery --app pod.activitypub.tasks worker --loglevel INFO --queues activitypub --concurrency 1 --hostname activitypub

Démarrer Celeryd

Bloc de code
languagebash
pod@pod:~$ sudo /etc/init.d/celeryd-activitypub start

Lancer Celeryd automatiquement au reboot serveur

Bloc de code
languagebash
pod@pod:~$ sudo systemd-sysv-install enable celeryd-activitypub

Pour vérifier si Celery fonctionne tourne bien :

Bloc de code
languagebash
celery -A pod.activitypub.tasks -l INFO -Q activitypub --concurrency 1 -n activitypub(django_pod) pod@pod:/usr/local/django_projects/podv3$ celery --broker=redis://127.0.0.1:6379/7 inspect active