====================================================== Configurer le Stockage ====================================================== .. note :: La configuration du DataStore est facultative. Cependant, si vous sautez cette étape, le :doc:`Fonctionnalités du DataStore ` ne sera pas disponible et les tests DataStore échoueront. --------------------------------------------------------------------------- 1. Configurer l'upload de fichiers --------------------------------------------------------------------------- .. note :: L'upload de fichiers est necessaire que si le stockage se fait en loac. Dans le cas ou l'extension ckanext-s3filestore est active, on n'aura pas necessairement de besoin de Configurer l'upload de ficher Pour configurer le FileStore de CKAN avec un stockage de fichiers en local: Créer le répertoire où CKAN stockera les fichiers téléchargés: .. parsed-literal:: sudo mkdir -p |storage_path| Ajouter la ligne suivante à votre fichier de configuration CKAN, après la ligne "[app:main]``: .. parsed-literal:: ckan.storage_path = |storage_path| Définir les permissions pour le répertoire :ref:`ckan.storage_path`: .. parsed-literal:: sudo chown www-data |storage_path| sudo chmod u+rwx |storage_path| Redémarrer le serveur web --------------------------------------------------------------------------- 2. L'extension DataStore --------------------------------------------------------------------------- L'extension CKAN DataStore fournit une base de données *ad hoc* pour le stockage de données structurées provenant de ressources CKAN. ressources CKAN. Les données peuvent être extraites des fichiers de ressources et stockées dans dans le DataStore. Lorsqu'une ressource est ajoutée au DataStore, vous obtenez : * Des aperçus automatiques des données sur la page de la ressource, en utilisant l'extension :ref:`Data Explorer `. * `L'API DataStore`_ : rechercher, filtrer et mettre à jour les données, sans devoir télécharger et télécharger l'ensemble du fichier de données Le DataStore est intégré au :doc:`CKAN API ` et au système d'autorisation. Le DataStore est généralement utilisé aux côtés du `DataPusher `_, qui va télécharger automatiquement les données vers le DataStore à partir de fichiers appropriés, qu'ils soient téléchargés dans le FileStore de CKAN ou liés de manière externe. --------------------------------------------------------------------------- Relation avec le FileStore --------------------------------------------------------------------------- Le DataStore est distinct mais complémentaire du FileStore (voir :doc:`filestore`). Contrairement au FileStore qui fournit un stockage "blob" de des fichiers entiers sans possibilité d'accéder ou d'interroger des parties de ce fichier, le DataStore est comme une base de données dans laquelle des données individuelles sont stockées. DataStore est comme une base de données dans laquelle les éléments de données individuels sont accessibles et interrogeables. Pour illustrer cette distinction, considérons le stockage d'un fichier de feuille de calcul comme un document CSV ou Excel. Dans le FileStore, ce fichier serait stocké directement. Pour y accéder, vous devez télécharger le fichier dans son intégralité. En revanche, si les données de la feuille de calcul sont stockées dans le DataStore, on peut accéder à aux lignes individuelles de la feuille de calcul par le biais d'une simple API Web, ainsi qu'aux des requêtes sur le contenu de la feuille de calcul. --------------------------------------------------------------------------- Configurer le DataStore --------------------------------------------------------------------------- Activer le plugin ================================================================ Ajoutez le plugin ``datastore`` à votre fichier de configuration CKAN:: ckan.plugins = datastore Configurer la base de données ================================================================== .. warning:: Assurez-vous que vous suivez correctement les étapes de la section `Set Permissions`_ ci-dessous. Des paramètres incorrects peuvent entraîner de graves problèmes de sécurité. Le DataStore nécessite une base de données PostgreSQL séparée pour y enregistrer les ressources du DataStore. Liste des bases de données existantes:: sudo -u postgres psql -l a. Créer les utilisateurs et la base de données ------------------------------------------------------------------------------ .. parsed-literal:: sudo -u postgres createuser -S -D -R -P -l |database_user| Créez un utilisateur de base de données appelé |datastore_user|. Cet utilisateur recevra accès en lecture seule à votre base de données DataStore dans l'étape `Set Permissions`_ ci-dessous. ci-dessous : .. parsed-literal:: sudo -u postgres createuser -S -D -R -P -l |datastore_user| Créer la base de données (appartenant à |database_user|), que nous appellerons |datastore| : .. parsed-literal:: sudo -u postgres createdb -O |database_user| |datastore| -E utf-8 b. Définir les URLs ------------------------ Maintenant, décommentez les lignes :ref:`ckan.datastore.write_url` et :ref:`ckan.datastore.read_url` dans votre fichier de configuration CKAN et modifiez-les si nécessaire, par exemple : .. parsed-literal:: ckan.datastore.write_url = postgresql://|database_user|:pass@localhost/|datastore| ckan.datastore.read_url = postgresql://|datastore_user|:pass@localhost/|datastore| Remplacer ``pass`` par les mots de passe que vous avez créés pour vos utilisateurs de la base de données |database_user| et |datastore_user| de la base de données. .. _datastore-set-permissions: c. Définir les permissions --------------------------------------------- Une fois que la base de données DataStore et les utilisateurs sont créés, les permissions sur la base de données DataStore et CKAN doivent être définies. CKAN fournit une commande ckan pour vous aider à définir correctement ces permissions. Si vous pouvez utiliser la commande ``psql`` pour vous connecter à votre base de données comme un super-utilisateur, vous pouvez utiliser la commande ``datastore set-permissions`` pour émettre le SQL approprié pour définir les permissions. Par exemple, si vous pouvez vous connecter à votre serveur de base de données en tant que superutilisateur ``postgres`` en utilisant:: :. superutilisateur en utilisant :: sudo -u postgres psql Vous pouvez ensuite utiliser cette connexion pour définir les autorisations : .. parsed-literal:: ckan -c |ckan.ini| datastore set-permissions | sudo -u postgres psql --set ON_ERROR_STOP=1 Si vous ne pouvez pas utiliser la commande ``psql`` de cette manière, vous pouvez simplement copier et coller la sortie de la commande : .. parsed-literal:: ckan -c |ckan.ini| datastore set-permissions dans une console |postgres| superutilisateur. d. Tester la configuration ====================================================== Le DataStore est maintenant configuré. Pour tester l'installation, (re)lancez CKAN et exécutez la commande suivante commande suivante pour lister toutes les ressources du DataStore :: curl -X GET "http://127.0.0.1:5000/api/3/action/datastore_search?resource_id=_table_metadata" Ceci devrait retourner une page JSON sans erreur. --------------------------------------------------------------------------- 3. Datapusher --------------------------------------------------------------------------- DataPusher est un service Web autonome qui télécharge automatiquement tout fichier de données tabulaires (CSV ou Excel) à partir des ressources d'un site CKAN lorsqu'elles sont ajoutées au site CKAN, les analyse pour en extraire les données réelles, puis utilise l'API DataStore pour pousser les données dans le DataStore du site CKAN. Les données des fichiers de ressources sont ainsi disponibles via l'API DataStore du site CKAN. En particulier, de nombreux plugins de visualisation et d'aperçu des données de CKAN ne fonctionneront (ou fonctionneront beaucoup mieux) qu'avec des fichiers dont le contenu se trouve dans le DataStore. a. Installer les paquets nécessaires:: - sudo apt-get update - sudo apt-get install python-dev python3-virtualenv build-essential libxslt1-dev libxml2-dev zlib1g-dev git libffi-dev b. Créer un virtualenv et y installer le datapusher:: - virtualenv /usr/lib/ckan/datapusher - mkdir /usr/lib/ckan/datapusher/src - cd /usr/lib/ckan/datapusher/src - git clone https://github.com/ckan/datapusher.git - cd datapusher/ - . ../../bin/activate c. Installer les dependences:: - pip install -r requirements.txt - pip install -r requirements-dev.txt - pip install -e . d. Demarrer le DataPusher:: - pip3 install --upgrade requests - python datapusher/main.py deployment/datapusher_settings.py