Déploiement de Virtuoso
De Dbpedia.fr.
Sommaire |
Sources
Ces informations ont été tirées principalement des sites suivants :
- How to Install Virtuoso Open Source (VOS) on Fedora Core Linux
- Example for DBpedia data sets Upload
- Guide for Internationalization Developers
- Documentation officielle
Installation de Virtuoso
Installation depuis un dépôt Linux
Sur Fedora 15 et RHEL 6:
# yum install virtuoso-opensource
Il est aussi utile d'installer une invite de commande SQL pour virtuoso : isql (attention, ce n'est pas la même commande que pour odbc) :
# yum install virtuoso-opensource-utils
L'interface d'aministration en ligne est aussi très utile :
# yum install virtuoso-opensource-conductor
Compilation des sources
Téléchargement des sources
Page correspondante de la doc Openlink
$ git clone git://github.com/openlink/virtuoso-opensource.git $ git checkout --track remotes/origin/stable/7
pour télécharger la dernière version stable de la branche 7.x.
Compilation
Page correspondante de la doc Openlink
- Spécifier les paramètres de compilation donnés dans cette page, dans le cas d'une machine Linux 64:
$ export CFLAGS="-O2 -m64"
- Génération des fichiers de configuration :
$ cd virtuoso-opensource $ ./autogen.sh
- configuration du chemin d'installation, différentes options sont décrites sur cette page, par exemple pour installer virtuoso dans le répertoire /usr/bin/virtuoso :
$ ./configure --prefix=/usr/local/virtuoso --program-transform-name="s/isql/isql-v/"
Rq. l'option --prefix=/usr/local/virtuoso spécifie l'emplacement où sera installé virtuoso, --program-transform-name="s/isql/isql-v/" permet de renommer l'interface de commande sql de virtuoso en isql-v pou éviter un clash avec celle de unixODBC.
- compilation et installation
$ make # make install # ln -s /usr/local/virtuoso/bin/virtuoso-t /usr/bin/virtuoso-t
Mise en place de l'interface web d'administration
Le serveur peut être administré par l'interface web à l'adresse /condutor. Pour l'activer :
$ isql-v > vad_install ('/usr/local/virtuoso/share/virtuoso/vad/conductor_dav.vad',0);
Remarque : le répertoire /usr/local/virtuoso/share/virtuoso/vad/ ou un répertoire parent doit être listé dans l'entrée DirsAllowed du fichier de configuration virtuoso.ini.
Démarage automatique de Virtuoso
Le mieux est d'utiliser le système de gestion de démons installé par défault avec la distribution utilisée, Systemd pour Fedora, Upstart pour Ubuntu, SystemV pour les plus anciennes distributions.
Avec Systemd
Systemd un système de gestion utilisé dans Fedora 17-, Debian, ...
Copier le code suivant dans le fichier /usr/lib/systemd/system/virtuoso.service:
[Unit] Description=The Virtuoso Server After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=simple ExecStart=/usr/bin/virtuoso-t -f -c /data/virtuoso/db/virtuoso.ini +wait PrivateTmp=true [Install] WantedBy=multi-user.target
Vérifier que la configuration est bien prise en compte:
systemctl status virtuoso
Le champ Loaded ne doit pas contenir d'erreur. Pour démarrer le service:
# systemctl start virtuoso
Pour l'arrêter, c'est pareiol avec la commande stop. Pour faire en sorte que le service soit lancé au démarrage :
# systemctl enable virtuoso
Avec Upstart
Upstart un système de gestion utilisé dans Ubuntu.
Copier le code suivant dans le fichier /etc/init/virtuoso.conf:
# myservice - myservice job file description "Virtuoso" author "Julien Cojan <julien.cojan@inria.fr>" # Stanzas # # Stanzas control when and how a process is started and stopped # See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn # When to start the service start on runlevel [2345] # When to stop the service stop on runlevel [016] # Automatically restart process if crashed respawn # Start the process script virtuoso-t -d -c /data/virtuoso/db/virtuoso.ini +wait sleep 60 end script
où /data/virtuoso/db/virtuoso.ini est le chemin du fichier de configuration à utiliser. (adapté de http://thegeekcorner.pagesperso-orange.fr/fr/memo/creer_script_upstart.html).
Recharger la configuration de Upstart:
# initctl reload-configuration
Virtuoso devrait être lancé au démarrage et redémarrer automatiquement après une pause de 60 secondes en cas d'arrêt.
Pour le démarrer manuellement:
$ initctl start virtuoso
Pour l'arrêter (il n'y aura pas de redémarrage auto):
$ initctl stop virtuoso
Ancienne version, avec system V
Un modèle de script de démarage est donné dans les sources de virtuoso : debian/init.d
Après l'avoir édité :
# cp [chemin vers le fichier édité] /etc/init.d/virtuoso # chmod ugo+rx /etc/init.d/virtuoso
Cela permet de lancer virtuoso par la commande service:
$ service virtuoso start
(idem pour l'arrêt en remplaçant start par stop).
Pour faire démarrer virtuoso lors du boot:
# ln -s /etc/init.d/virtuoso /etc/rc2.d/S99virtuoso # ln -s /etc/init.d/virtuoso /etc/rc3.d/S99virtuoso # ln -s /etc/init.d/virtuoso /etc/rc5.d/S99virtuoso
Voir les instructions sur les instructions de openlink.
Commandes et emplacement des fichiers
Fichier de configuration : virtuoso.ini, par défault il se trouve dans /var/lib/virtuoso/db/.
Démarrage de virtuoso :
virtuoso-t -f -c [chemin/vers/virtuoso.ini]
L'option -f permet d'avoir la sortie dans la console (foreground), l'option -c permet de spécifier le fichier de configuration.
Configuration
- Pour activer les logs d'accès au serveur http de Virtuoso, il faut ajouter la ligne suivante (la décommenter) au fichier virtuoso.ini :
HTTPLogFile = ../logs/http.log
A l'exécution de Virtuoso, les fichiers de log auront des noms de la forme http[date sous forme JJMMAAA].log
- Pour rendre le serveur http de Virtuoso accessible sur le port 80 :
- autoriser virtuoso-t à lire les ports sécurisés (<1024), avec les droits root :
# setcap 'cap_net_bind_service=+ep' /usr/bin/virtuoso-t
(où /usr/bin:virtuoso-t est le chemin d'accès à virtuoso-t). Cela permet d'accéder au port 80 sans pour autant donner les droits root à virtuoso.
- configurer Virtuoso pour lire sur le port 80
- soit directement dans le fichier virtuoso.ini
- soit par isql (méthode recommandée par l'équipe de DBpedia).
- configurer Virtuoso pour lire sur le port 80