Arborescence des pages

Vous regardez une version antérieure (v. /wiki/display/ES/Migration+en+Pod+V3+depuis+une+installation+en+Pod+V2) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 15) afficher la version suivante »

Installation sur un nouveau serveur

Pour faire la migration depuis la V2, j'ai (Joshua) fait une installation sur un nouveau serveur. J'ai donc rapatrié les données (hors média) ainsi que la bdd.

$> cd /usr/local/django_projects/
$> tar --exclude='./pod/static' --exclude='./pod/media' -zcvf podv2.tgz ./podv2
$> mysqldump -h bdd.univ.fr -u pod2 -pXXXXXXXXXX pod2 > dumpfile.sql

Pensez a récupérer les scripts de migration des librairies pythons utilisées par pod ($HOME/.local/ sur ubuntu si vous n'utilisez pas de virtual env, sinon ./<votre_virtual_env>) dans une archive tar que vous décompresserez dans votre environnement cible après avoir installé les librairies (pip install)

# Il faut patcher dans le tar la version de python que vous aller utiliser en PODv3
find <path_de_vos_librairies_python> -path "*/migrations/00*.py" -not -name "__init__.py" -exec tar --transform='s|python3.7|python3.9|' -rvf migration.tar {} \;

J'ai rapatrié ces 2 fichiers sur mon nouveau serveur et j'ai déployé les données.

$> cd /usr/local/django_projects
$> tar -xvzf podv2.tgz .
$> mysql -h bdd.univ.fr -u pod2 -pXXXXXXXXXXX  pod3 < dumpfile.sql



→ Ne pas oublier de modifier le fichier de settings_local pour diriger vers la nouvelle BDD

Pour ceux qui utilisaient encore les vidéos interactives :

il faut remonter un environnement virtuel v2 : $> mkvirtualenv --system-site-packages --python=/usr/bin/python3 django_pod2

Ensuite, installer les dépendances qui vont bien : 

$> python3 -m pip install -r requirements.txt

$> pip3 install mysqlclient==2.0.3

Il faut supprimer l'application de la base de données:

$> python manage.py migrate interactive zero

l'application tierce "interactive" n'est plus présente dans le code de Pod3, il faut donc penser à la retirer dans le settings_local (THIRD_PARTY_APPS = ["enrichment", "live"])

J'ai ensuite créé un nouvel environnement virtuel pour pod3

$> mkvirtualenv --system-site-packages --python=/usr/bin/python3 django_pod3

et j'ai récupéré la dernière version de Pod:

(django_pod3) pod@pod3:/usr/local/django_projects/podv3$ git pull origin master

Un MakeFile est maintenant fourni pour simplifier les commandes

(django_pod3) pod@pod3:/usr/local/django_projects/podv3$ cat Makefile

Vous pouvez donc l’utiliser pour finaliser votre installation. Il y a une commande pour tout mettre à jour : $> make upgrade, toutefois, je préfère détailler ici les étapes :

Je commence à installer les lib python :

$> python3 -m pip install -r requirements.txt

Ensuite, je prépare les commandes de mis à jour de la bdd.

Attention

Il se peut qu'une dépendance avec l'application flatpage soit nécessaire, il faut donc aller récupérer le fichier sur l'ancien serveur dans ce répertoire :
pod@pod2:~/.virtualenvs/django_pod/lib/python3.7/site-packages/django/contrib/flatpages/migrations

Sinon vous vous placez dans le même répertoire que lorsque vous avez sauvé vos fichiers de migration un peu plus haut et vous les extrayez

tar xvf migration.tar
$> make updatedb

Si vous rencontrez l'erreur ImportError: cannot import name 'FieldDoesNotExist' from 'django.db.models.fields' alors il faut mettre à jour django_select2_forms via la commande

$> pip3 install django_select2_forms --upgrade

Une fois la préparation de la migration effectuée, je peux migrer ma base de données :

$> make migrate


Attention

Le mode de gestion des composants tiers pour le frontal de Pod à changé en podv3, nous ne les embarquons plus dans le code mais utilisons un gestionnaire de paquets pour cela.

Nous avons fait le choix de Yarn, qu'il vous faut donc installer sur votre environnement. Vous pouvez suivre la documentation suivante pour cela : https://yarnpkg.com/getting-started/install


Enfin, si tout est ok, vous pouvez respirer et collecter les fichiers statics pour Pod. Il suffit pour cela de lancer cette commande :

# Si vous êtes dans un environnement contenairisé et qu'il y a des fichiers customs dans le répertoire static
python3 manage.py collectstatic
# Si vous pouvez vous permettre de tout effacer dans static ( python3 manage.py collectstatic --clear )
make statics

Redis :

Dans cette version l'installation d'un serveur Redis pour la gestion du cache est obligatoire.

Voir la partie Installation de Redis de Installation de Pod V3 ou la doc officielle https://redis.io/docs/getting-started/


ElasticSearch :

Si vous changez d'instance ElasticSearch (notamment si vous n'utilisez pas un service ES déporté), pensez à réindexer les contenus avec cette commande :

cd django_projects/podv3
python manage.py index_videos --all

Si l'indexation échoue, jettez un oeil à pod/video_search/commands/index_videos.py si vous voyez une mention de __VIDEOS__ alors il faut la substituer par pod.video.context_processors.get_available_videos

Si après indexation vous n'avez aucune vidéo sur votre site et lors de vos recherches ou que vous avez des videos mais que vous ne pouvez pas les jouer, il se peut que certaines tables ne soient pas migrées, dans mon cas il fallait migrer:

  • video_encodingvideo => video_encode_transcript_encodingvideo
  • video_encodingaudio => video_encode_transcript_encodingaudio
  • video_encodingstep => video_encode_transcript_encodingstep
  • video_playlistvideo => video_encode_transcript_playlistvideo
  • video_videorendition => video_encode_transcript_videorendition ( attention, cette table a un nouveau field threshold qu'il faut mettre à 0 par défaut)


That's all folks !



  • Aucune étiquette