Open mpo-deltacode opened 5 years ago
Bonjour,
Solr est très capricieux. Je vous conseille de mettre RAILS_ENV=production
avant bundle exec
.
Verifiez bien que les fichiers data ont été copiés correctement, suivez bien la partie troubleshooting à la fin du README du repo sirene_as_api.
Vous pouvez vous rendre sur http://localhost:8982/solr/ (ou autre port definit dans config/sunspot.yml) pour interagir avec le serveur solr dans votre navigateur, cela peut aider au debug.
Si malgrès tout cela vous n'y arrivez pas, je compte dockeriser l'API dans les mois qui viennent.
Bonjour, Tout d'abord merci de votre réponse Pour l'instant, j'ai déployer l'API en development. Le problème, c'est qu'en production Solr n'apparait jamais dans ma liste de processus. Après le déploiement de Mina, malgré que, dans l'historique de deploy.rb il me dise que solr à bien été redémarré, je ne vois pas apparaître ce dernier.
Et même en essayant de le démarrer à la main, j'ai un retour me disant qu'il à bien démarrer, mais encore une fois, je ne le vois pas apparaître dans les processus.
Est ce que ça pourrait être du à une erreur dans un fichier ? Ou peut-être que je dois remplacer une valeur dans un certain fichier ?
Cordialement
Sunspot (la librairie ruby pour Solr) a la facheuse habitude de vous dire que solr a démarré même en cas d'échec. Executez bundle exec rake sunspot:solr:run
au lieu de start et le processus se lancera dans le shell, ce sera plus facile de vérifier quelle erreur intervient.
J'insiste pour que vous jetiez un oeil, si pas encore fait, au troubleshooting dans le README de l'autre repo sirene_as_api :) cela vous aidera beaucoup à affronter les problèmes de Solr.
Pardonner moi de la réponse tardive.
Merci beaucoup, je vous tiendrais informé de l'evolution
Et une dernière question : Y a t-il une commande pour lancer la tache CRON qui permet de mettre automatiquement à jour la base de données de l'application ?
Cordialement
Depuis la dernière réponse nous avons dockerisé l'app ;) les changements n'ont pas encore été mergés, mais vous pouvez cloner la branche dockerize
. Tout retour d'utilisateur nous serait précieux.
cron est le logiciel disponible sur les plateforms unix, macOs, ect. qui execute tout ce qui se trouve dans le fichier crontab. Normalement, un deploiement par notre script execute la gem whenever
qui met à jour la crontab pour y ajouter nos taches rake qui updatent l'API. Les taches cron sont disponibles/modifiables par la commande suivante sur le systeme d'installation : crontab -e
Pour consulter les taches rake disponibles : (ajouter RAILS_ENV=production en environnement de production) :
bundle exec rake -T
De mémoire, il me semble que la tache à lancer est :
bundle exec rake sirene_as_api:update_database
En esperant vous avoir aidé
Bonjour, je reviens vers vous après quelques tests
Premièrement, je n'ai pas encore vraiment pu tester votre version dockerize de Siren, je la testerai prochainement et je vous ferai un retour
Ensuite, je rencontre un petit problème. J'ai mis à jour la base de données samedi, j'ai réindexé les données hier, mais lorsque je compare mon Siren au Siren officiel, je constate des différences dans les resultats (souvent, mon Siren contient plus d'objets que le Siren officiel), est ce que c'est normal ?
Et petite question pour le lancement de la tache Cron de whenever : j'ai beau modifier le fichier schedule.rb pour y remplacer l'environnement "sandbox" par mon environnement "development" et passer la variable NODE_ENV=development devant ma commande whenever --update-crontab
, la tache cron se lance en environnement production
J'ai aussi essayer la commande whenever -s environment=development
, lorsque je met à jour le cron, mais ça ne change rien
Auriez vous une idée ?
Merci d'avance
Cordialement
Bonjour,
Ensuite, je rencontre un petit problème. J'ai mis à jour la base de données samedi, j'ai réindexé les données hier, mais lorsque je compare mon Siren au Siren officiel, je constate des différences dans les resultats (souvent, mon Siren contient plus d'objets que le Siren officiel), est ce que c'est normal ?
Tristement, nos données ne sont pas à jour actuellement. L'INSEE a récemment changé les formats de fichiers (de V2 vers V3), ce qui implique des changements longs et couteux de notre coté. L'ancien format n'est plus delivré depuis fin 2018. Le nouveau format consiste en de multiples fichiers avec un fonctionnement tout à fait différent.
Nous avons temporairement utilisé un script pour convertir les fichiers V3 en fichiers V2. Cette solution était temporaire et imparfaite. Les données actuelles sont les données V3 de février, au format V2.
Ce passage à la V3 est cependant notre priorité la plus urgente, et une release sera probablement disponible dans 1 ou 2 mois. Il y aura un certain nombre de breaking changes avec cette release, car nous réecrivons quasiment toute l'API. Cela vient quand même avec de bonnes nouvelles : les données sur les établissements fermés seront disponibles. Davantage de possibilités pour les requêtes.
Tout cela sera expliqué dans la prochaine newsletter que nous adresserons à nos utilisateurs.
Si vous vous interrogez sur les données geographiques des établissements, c'est un service gracieusement fournis par Étalab et par certains passionnés d'open source / open data. Nous géolocalisons les établissements pour permettre les recherches géographiques.
J'ai aussi essayer la commande whenever -s environment=development, lorsque je met à jour le cron, mais ça ne change rien
A priori nous avons configuré whenever (lancé automatiquement par le script de déploiement mina, dans deploy.rb) pour modifier automatiquement la crontab du serveur en environnement de production. Garder une base à jour en environnement de développement n'est pas une pratique courante.
Le plus simple à faire est surement de modifier votre crontab à la main : crontab -e
sur environnement ubuntu / debian / probablement iOS aussi mais je n'ai pas testé. Cela devrait vous permettre de modifier la crontab à la main. Voici un exemple de ce que vous pouvez y mettre :
30 3 * * * /bin/bash -l -c 'cd /path/vers/mon/dossier/rails && RAILS_ENV=development bundle exec rake sirene_as_api:automatic_update_database --silent'
Ceci lancera la commande bundle exec rake sirene_as_api:automatic_update_database
dans votre dossier rails sirene_as_api tous les jours à 3h30 du matin.
Très bien, pas de soucis pour les données, c'est juste que j'étais étonné de ne pas retrouver les mêmes, mais je comprend mieux maintenant. Très bien, j'attend donc votre newsletter avec impatience ahah
Je vois, très bien, j'avais déja modifié manuellement la crontab, je vais voir si ma commande est donc exacte
Merci pour votre aide
Bonjour, Je reviens vers vous après avoir installé la version de docker de l'INSEE sur mon serveur Tout se déroule très bien, juste deux ou trois petits points et questions :
Dans la documentation, vous dites qu'il faut exécuter la commande docker-compose run sirene db:create
et docker-compose run sirene db:migrate
, mais j'ai eu besoin de rajouter bundle exec rake
entre sirene et db, sinon j'avais une erreur du type /docker-entrypoint.sh: 5: exec: db:create: not found
Après une mise à jour avec la tache cron, est ce que le reindexage est automatique ? Ou est ce que je dois ajouter une tache cron pour reindexer apres la mise a jour ?
Est-il possible de passer le conteneur de sirene sur le port 80, plutot que le port 3000 ? Est ce que je dois mettre en place un serveur ou conteneur nginx à coté pour faire cela ?
Merci d'avance
Cordialement
Bonjour,
1/ Merci pour ce point important ! je le rajouterais dans la documentation.
2/ A priori le reindexage est toujours automatique après import oui
3/ Bien sur. A priori pas besoin de changer la config de rails, une modification sur le fichier docker-compose devrait suffire. Ligne 19, changer :
- "3000:3000"
Pour :
- "80:3000"
N'oubliez pas de rebuild le docker-compose ! A priori c'est l'ordre correct pour mapper le port 3000 du conteneur vers votre localhost:80, si ça ne marche pas essayez 3000:80
Je viens de finir le reindexage des données, mais seul le /siren et /siret me retournent un résultat, les points /near_etablissement, /fulltext et /near_point me retournent une réponse "not found"
Et pour le port 80, je ne souhaiterai pas toucher au docker-compose, car lorsqu'il y aura une modif à cloner (par exemple la nouvelle version des fichiers), je devrais rechanger le port. J'aimerai pouvoir mettre un conteneur nginx qui permettrait de mapper le port 3000 en 80 sur le serveur, pensez vous que c'est possible ?
Merci
Pour le reindexage : avez vous interrogé /full_text juste après reindex ou avez vous fermé / rebuild le conteneur entre temps ? Il est possible que les indexs n'aient pas étés persistés correctement dans un volume fixe et que les données soient perdus à la fermeture du conteneur.
Si vous avez effectivement testé après fermeture ou rebuild, testez sans. Si cela fonctionne prévenez moi et je lancerais un fix la semaine prochaine.
Si cela ne fonctionne toujours pas (tandis que /siren fonctionne) , il faudrait verifier si le serveur solr est bien lancé et accessible au sein du conteneur. Par exemple en pinguant le tableau de bord Solr avec cette commande : docker-compose run sirene curl -Is http://localhost:8982/solr/\#/
Concernant le mapping des ports, j'imagine que nginx doit faire l'affaire.
J'avais interrogé directement après le reindex, je n'avais pas rebuild le conteneur. Pour l'instant j'ai supprimer la version docker, je la remettrai sur une VPS spécifique pour Docker, je vous tiendrai au courant de l'evolution
Je reviens vers vous.
Je suis entrain de tester l'API en production. J'arrive a remplir la base de données, le début se passe très bien. Mais a la fin de la population de la BDD les patchs ne s'installent pas et j'obtiens l'erreur ✖ Error: could not update etablissement attributes: rsolr::error::http | Time: 00:00:00 ETA: ??:??:?? make sure solr server is launched on the right environment and accessible.
Et pour le reindexage, la console me retourne une erreur Error using progress bar: FATAL: password authentication failed for user "sirene_as_api_production" FATAL: password authentication failed for user "sirene_as_api_production"
Pourtant j'ai bien modifié le database.yml avant de lancer le ansible. Jessai de démarrer le solr dans /var/www/sirene_api_production/release/1
, ou dans /var/www/sirene_api_production/current
, mais toujours la même erreur ou bien la commande ne lance rien
Auriez vous une idée de pourquoi solr ne fonctionne pas ?
Merci d'avance
Cordialement
Il semble y avoir deux problèmes distincts :
1/ Accès à la base de donnée Postgres : le mot de passe est-il le bon dans la partie production
du fichier database.yml
?
2/ Lancement de Solr : regardez bien la partie troubleshooting à la fin du README du repo sirene_as_api : il est mentionné qu'il peut y avoir un problème de copie des fichiers solr, ce qui peut empecher Solr de se lancer. Avez vous essayé la solution proposée ?
Bonjour, je pense avoir trouvé d'où vient le problème, mais je n'ai pas encore tester (je pense que, vu que dans le fichier database.yml, je ne passe le mot de passe que de l'environnement production, et que les autres environnements les récupèrent de "default", il doit y avoir un problème lors du passage du mot de passe, du coup je vais tester en faisant en sorte que chaque environnement ai son mot de passe directement écrit, et non récupérer )
Mais ce matin je me confronte à un nouveau problème. J'ai réussi a peupler la base vendredi dernier sans soucis, mais aujourd'hui, je réessaye et je tombe sur l'erreur Error : http://data.cquest.org/geo_sirene/2019-07/geo_sirene.csv.gz could not be reached.
et effectivement il n'y a pas le dossier geo_sirene du mois de Juillet. Est ce parce que vous faites une mise à jour de l'API ? Ou une erreur?
Cordialement
C'est du à la mise à jour en effet. A priori il faudra attendre la nouvelle release (chantier en cours) pour avoir des données à jour
Une autre question, j'ai installé INSEE sur un deuxième serveur, mais au lieu d'indiquer l'adresse IP du serveur, j'ai indiqué le nom de domaine que j'ai associé à ce serveur.
J'ai donc, dans le fichier sirene_as_api.yml, dans la clé client_server_name
, le nom de domaine de mon serveur. Puis dans le fichier deploy.rb
Le déploiement s'est passé sans soucis, mais lorsque j'ai tenter de faire une requête comme celle ci example.mondomaine.fr/v1/siren/852832260
l'API me retourne 'result not found'
Y a t-il un autre fichier où je dois indiquer le nom de domaine ?
Cordialement
A priori ces soucis tiennent davantage d'un problème personnel que du code, les issues github sont donc peu adaptées pour ça. Je vais fermer ici. Envoyez moi un message à l'occasion, si j'ai du temps libre je regarderais.
Je comprend, pas de soucis, je vais regarder de plus pres
Merci a vous
Bonjour, je viens vers vous pour vous demander des conseils sur différents problèmes que je rencontre lors du déploiement de Sirene
En environnement de production, après la commande
mina deploy to=production
, je ne vois pas apparaitre SOLR avec la commandeps aux | grep solr
, alors que je n'ai eu aucune erreur dans le déploiement. Ce problème a l'air d'apparaitre seulement en production, car la commandebundle exec rake sunspot:solr:start RAILS_ENV=monEnvironnement
fonctionne avec l'environnement de test et de développementDonc j'ai essayé de déployer en environnement de développement, je vois bien le processus SOLR apparaitre, j'arrive à peupler ma base de données, mais lors de la mise à jour des patchs, une erreur apparait
make sure solr server is launched on the right environment and accessible.
, alors que SOLR est bien chargé dans le bon environnement. Et quand l'update demande de supprimer la base pour la recréer, après l'avoir supprimer, j'obtiens une erreur de ce typeno implicit conversion of nil into String
Merci d'avance pour votre lectures et vos réponses
Cordialement