Difference between revisions of "CGI/fr"
(TuxFamily as a CGI example) |
m |
||
Line 175: | Line 175: | ||
L'utilisation des liens suppose que votre serveur Apache soit correctement configuré, et autorise le suivi de ces liens ({{c|FollowSymLinks}}). L'expérience montre que cette configuration est délicate, et parfois tenue en échec! Il peut être nécessaire de renoncer au lien, et d'avoir une copie du dossier correspondant à cette place. | L'utilisation des liens suppose que votre serveur Apache soit correctement configuré, et autorise le suivi de ces liens ({{c|FollowSymLinks}}). L'expérience montre que cette configuration est délicate, et parfois tenue en échec! Il peut être nécessaire de renoncer au lien, et d'avoir une copie du dossier correspondant à cette place. | ||
+ | |||
+ | Dans l'exemple '''TuxFamily.org''' ci-dessus aucun lien n'est utilisé. La valeur du paramètre {{c|static_path=}} est vide. | ||
== 1&1 hosting, GeneWeb 5 and 6 (archive) == | == 1&1 hosting, GeneWeb 5 and 6 (archive) == |
Revision as of 09:05, 17 March 2018
![]() |
English • français |
---|
Par défaut, GeneWeb est lancé comme un serveur local et il envoie des pages HTML sur le port de communication 2317. Pour que le serveur soit visible depuis Internet, ce port doit être redirigé convenablement et ce transfert de port n’est pas toujours réalisable. Pour pallier ce problème, il est possible d’utiliser GeneWeb avec en mode CGI (option -cgi
de gwd), une interface alternative pour distribuer des pages HTML dynamiques et qui est fréquemment disponible sur les serveurs HTTP distants. Le serveur web reçoit le nom du script CGI et les paramètres associés et lance l'exécution du script (en général un appel à gwd) qui doit renvoyer les pages HTML.
La première étape de l'installation consistera à vérifier le fonctionnement du serveur HTTP avec la CGI et la seconde à installer GeneWeb dans une organisation de dossiers adaptée à l’environnement du serveur.
Vérification des services web et CGI
I. La vérification du serveur web peut être faite en affichant dans votre navigateur favori le contenu d’un fichier HTML basique. Par exemple, si le fichier racine index.html
contient :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
Ceci est une page HTML.
</body>
</html>
Dans votre navigateur, l’adresse http://my.server.adress/index.html
doit afficher Ceci est une page HTML.
GeneWeb ayant une page d’accueil qui lui est propre, la présence de cette page HTML n’est pas obligatoire pour la suite.
II. Le service CGI peut-être vérifié en déclenchant l'exécution d’un script copiant une page HTML simple, par exemple le test-cgi.sh
dont le contenu est :
#!/bin/sh
echo 'Content-type: text/html'
echo ''
echo '<!DOCTYPE html>'
echo '<html xmlns="http://www.w3.org/1999/xhtml">'
echo '<body>'
echo 'Ceci est un test des commandes CGI.'
echo '</body>'
echo '</html>'
Affiché à l’adresse http://my.server.adress/cgi-bin/test-cgi.sh
doit donner une page contenant Ceci est un test des commandes CGI.
Notez le besoin d’un chmod 750 test-cgi.sh
pour avoir les droits de propriétaire et d'accès en lecture/écriture/exécution sur ce script. Voir la section #Droits d'accès et protection.
La localisation de ces fichiers peut varier selon le service d'hébergement que vous utilisez, et est décrite en détail dans la section #Examples d'organisation des dossiers.
Le dossier cgi-bin
Le dossier cgi-bin
contient les commandes CGI qui seront exécutées pas le serveur lors des requêtes envoyées par un navigateur client.
Le fichier gwd.sh
est le script qui lance gwd
avec les paramètres appropriés :
#!/bin/sh
DIR=/root/geneweb-distribution/gw
BASE_DIR=/root/geneweb-bases
OPTIONS="-robot_xcl 19,60 -allowed_tags ./tags.txt -hd ./"
$DIR/gwd -cgi $OPTIONS -bd $BASE_DIR > ./gwd.log 2>&1
Il contient les définitions suivantes :
- DIR pointe vers le dossier contenant les exécutables de la distribution de GeneWeb (par défaut
gw
) ; - BASE_DIR pointe vers le dossier contenant vos bases généalogiques (pas défaut
bases
) ; - OPTIONS définit les paramètres de lancement de gwd, voir gwd pour les détails.
Le détail de ces deux chemins peut varier en fonction de l'organisation de dossiers que vous avez retenue (voir #Examples d'organisation des dossiers).
Il est possible de conserver dans ce dossier plusieurs fichiers gwd-xx.sh
pointant vers différents dossiers contenant différentes versions de GeneWeb, ou démarrant avec des paramètres OPTIONS
différents.
Les paramètres de lancement de gwd peuvent être rassemblés dans un fichier gwd.arg
situé dans le dossier gw
. Notez que dans ce fichier, le nom du paramètre et sa valeur sont sur deux lignes séparées. Faites aussi attention au choix de la fin de ligne (CR, LF, CR/LF) qui est différent selon l'environnement Linux, macOS et Window.
(server):~ > cat /home/geneweb-distribution/gw/gwd.arg -cgi -bd ~/bases -hd ./ -robot_xcl 19,60 -allowed_tags ./tags.txt (server):~ >
Les dossiers distribution et bases
La suite de l'organisation des dossiers suit la même structure que dans le cas d'installation classique avec un ou plusieurs dossiers distribution GeneWeb, et le dossier GeneWeb-Bases contenant une ou plusieurs bases généalogiques.
Examples d'organisation des dossiers
Les organisations suivantes ont été testées sur plusieurs services d'hébergement :
OVH Webm |
OVH VPS |
1&1 |
TuxFamily.org |
Les emplacements des fichiers index.html sont donnés à titres indicatifs.
Lien vers les fichiers style
Dans le cas d'un serveur hébergé en mode CGI, les fichiers style (.css
) et javascript (.js
) sont renvoyés vers votre navigateur par le serveur HTTP plutôt que par gwd. Il est donc nécessaire de fournir au premier un lien situé à la racine web vers les fichiers appropriés de la distribution.
L'exemple ci-dessous correspond à l'organisation d'un serveur OVH-VPS.
root@vps265730:/var/www# ls -al total 660 drwxr-xr-x 7 root root 4096 Sep 25 18:40 . drwxr-xr-x 12 root root 4096 Apr 16 2016 .. drwxr-xr-x 4 root root 4096 Nov 23 15:41 gw -> /root/GW/GeneWeb-7.00/gw -rw-r--r-- 1 root root 3514 Jun 23 13:19 index.html drwxr-xr-x 2 root root 4096 Apr 16 2016 private drwxr-xr-x 2 root root 4096 Apr 16 2016 public -rw-r--r-- 1 root root 27 Apr 28 2016 robot.txt root@vps265730:/var/www#
Vous devez signaler à gwd l'existence de ce lien en ajoutant dans le fichier de configuration .gwf
le paramètre
static_path=../gw/etc/
Notez les ..
en tête du lien dus au fait que l'exécution du script démarrant gwd se fait dans le dossier cgi_bin, un niveau en dessous de la racine web de votre serveur.
http://server_address/cgi-bin/gwd-7.00.sh
L'utilisation des liens suppose que votre serveur Apache soit correctement configuré, et autorise le suivi de ces liens (FollowSymLinks
). L'expérience montre que cette configuration est délicate, et parfois tenue en échec! Il peut être nécessaire de renoncer au lien, et d'avoir une copie du dossier correspondant à cette place.
Dans l'exemple TuxFamily.org ci-dessus aucun lien n'est utilisé. La valeur du paramètre {{{1}}}
est vide.
1&1 hosting, GeneWeb 5 and 6 (archive)
(Conservé ici pour archive)
The following applies to 1&1 hosting, and may differ on other hostings. On this web site, we can easily switch between two versions of GeneWeb: 5.00 and 6.00.
Directories and files
-
mybases: The bases directory, beside the CGI-root directory.
-
root: The CGI-root directory.
basesxg: An alternative bases directory.
css: A copy of the gw/css directory. This directory is used by the Apache server.
gw: The gw directory of the GeneWeb distribution.
gwenv: The gw directory of the Geneweb-5 distribution.
igw: The images directory for Geneweb-5.
images: A directory with copies of
gw/images/gwback.jpg
andgw/images/gwlogo_bas.png
pub: A directory where are readable copies of the CGI scripts (this website is a demo site).
gw6.cgi: The CGI script which launches GenWeb-6.
gw5.cgi: The CGI script which launches GenWeb-5.
issue6.cgi: A test script which displays information about the environment of the server and checks size and md5sum for the gwd binary file.
-
issue5.cgi: The same script, but for the GeneWeb-5 version
You need the “exec” permission on the files gw/gwd
, gw/gwsetup
, and files used by gwsetup (gw/gwc*, gw/gwu,gw/consang, gw/update_nldb). The gwd.arg
file is empty.
The databases folder bases
must be protected either by a .htaccess file, either by a location out of the HTTP server scope. It does not need to be accessible by the HTTP server.
Description of the CGI script
Main parameters:
PWD=$(pwd)
LNG="fr"
GENEWEBSHARE=$PWD/gw
GENEWEBDOC=$PWD/gw/doc
GENEWEBDB=$PWD/../bases
DAEMON=$GENEWEBSHARE/gwd
LOGFILE=$GENEWEBDB/gw.log
|
The CGI working directory.
The language for the user interface.
The programs folder.
The documentation folder (obsolete).
The databases folder.
The program gwd itself.
Gwd log file, it helps to solve problems.
|
Note that although called DAEMON, gwd does not run in -daemon
mode but in -cgi
mode.
Be carefull when using a log file, its size can increase quickly, don’t forget to delete it from time to time.
OPTIONS="-blang -robot_xcl 40,70 -max_clients 15 -conn_tmout 120 -min_disp_req 30 -images_url http://myserver.net/gw/images"
# -allowed_tags $GENEWEBDB/tags.txt
cd $GENEWEBSHARE
$DAEMON -hd$GENEWEBSHARE -dd$GENEWEBDOC -bd$GENEWEBDB -lang$LNG -log$LOGFILE -cgi $OPTIONS 2>/dev/null
Misc. options:
- robot_xcl: To protect your data from HTTrack or WebSite Extractor.
- conn_tmout: For statistics on the bottom line.
- images_url: Icons and images are not sent by GeneWeb, but by your HTTP server (not CGI).
- allowed_tags: Usefull option if you use HTML tags not in default_good_tag_list.
Windows
Under Windows calling a CGI script using batch and cmd.exe can be tricky. An alternative is to directly call a copy of gwd.exe
with its arguments file gwd.arg
in Apache /cgi-bin/ directory file.
Gwd will work behind Apache calling http://localhost/cgi-bin/gwd.exe.
Edit gwd.arg
to point your local GeneWeb installation, for example if it is C:\Program Files (x86)\geneweb\
:
-hd C:\Program Files (x86)\geneweb\gw -bd C:\Program Files (x86)\geneweb\bases -log C:\Program Files (x86)\geneweb\geneweb.log -images_dir C:\Program Files (x86)\geneweb\gw\images -cgi
Problems to solve: - Portrait (all images with m=IMH) are not shown or are corrupted (#103). - Minor problems in 7.00 with loading of new .css/.js files, specialy for templm (#356).
Images missing
-images_dir
parameter create links to local image files like file:///c:\path\to\myimage.jpg
that are not shown for security reason under some browser (like Chrome for ex.). An alternative to previous configuration is to switch to -images_url
parameter so that gwd uses relatives paths for images and to create a virtual directory in your httpd server.
In gwd.arg, modify:
-images_url /images
If you use Apache, edit httpd.conf to have those lines, then restart httpd.exe:
LoadModule access_compat_module modules/mod_access_compat.so LoadModule alias_module modules/mod_alias.so Alias /images " C:\Program Files (x86)\geneweb\gw\images" <Directory " C:\Program Files (x86)\geneweb\gw\images"> Options None AllowOverride All Order allow,deny Allow from all </Directory>
Script pour installer sur votre serveur une copie de votre base
Les fichiers qui suivent s'adressent aux usagers expérimentés et familiers avec les scripts shell et les subtilités de Linux. A utiliser avec précautions. Merci de signaler en retour les erreurs ou amélioration.
Le script base-upload.sh
(download it) prend base_name
comme argument, et en option images
or src
. Il télécharge vers le serveur une copie de votre base présente sur votre ordinateur personnel (Linux ou Mac seulement) en effectuant les étapes suivantes :
- créer une copie fraîche du fichier
base.gw
à partir de votre base sur votre ordinateur eprsonnel. - produit un listing des dossiers
bases/images/base
bases/src/base
etbases/src/base/images
dans trois fichiersls-xxx.txt
. - construit un fichier
remote.sh
(voirremote-base.sh
ouremote-files.sh
) selon le second paramètre. - construit un fichier tar contenant
base.gw
,history
,remote.sh
et els trois fichiersls-*.txt
ci-dessus. - envoie ce fichier tar au serveur distant.
- déclenche sur le serveur distant le dépliement du fichier tar et l'exécution du fichier script
remote.sh
.
Selon la disponibilité de /usr/bin/mail
sur votre serveur, le résultat de ce script pourra être un mail contenant un rapport d'erreur et les différences entre les dossiers images.
Cette procédure sauvegarde la version antérieure de votre base avec un tag "yyyy-mm-dd-hh:mm:ss". Avec le temps, il peut être souhaitable de nettoyer ces fichiers archives.
Le lancement du script avec le paramètre images
ou src
installe sur votre serveur distant une copie des dossiers correspondants de votre ordinateur personnel. Selon la taille de ces dossiers et le nombre de nouvelles images à télécharger, il est possible qu'un téléchargement image par image soit préférable.
Mise au point d'un serveur distant
Mettre au point un serveur distant implique de nombreux aspects qui peuvent en compliquer la bonne fin. Une approche systématique et quelques outils peuvent aider cette tâche.
- Vérifiez que votre serveur HTTP fonctionne correctement en visualisant le contenu du fichier
index.html
situé à la racine web de votre serveur. - Vérifiez le bon fonctionnement du mécanisme CGI en interrogeant
http://your_server_name/cgi-bin/test-cgi.sh
à partir de votre navigateur (voir #Vérification des services Web et CGI).
- Si votre serveur renvoie le message "Internal server error", plusieurs hypothèses sont possibles :
- Votre script CGI ne fonctionne pas correctement. Lancez son exécution directement à partir d'une fenêtre terminal vers vorte serveur (
./test-cgi.sh
). - Votre serveur HTTP peut n'accepter que des fichiers avec l’extension
.cgi
. Renommeztest-cgi.sh
entest-cgi.cgi
et essayez à nouveau. - Les deux premières lignes de votre script ne respectent pas le format imposé (la seconde ligne doit être vide). Notez que la formule "Content-type text/html\n\n" n'a pas fonctionné dans mes essais).
- Vérifiez aussi que vos "fin de ligne" (
EOL
) respectent la convention de votre serveur qui peut être différente de celle de votre ordinateur personnel! - examinez le log d'erreurs de votre serveur HTTP en tapant :
tail /var/log/apache2/access.log
(localisation pour un serveur OVH-VPS).- la localisation de ce fichier peut être différente dans votre environnement. Vous pouvez la découvrir en tapant
find / -name access.log -print
. - L'examen de ce fichier log peut vous donner une indication de la nature de votre problème.
- Votre script CGI ne fonctionne pas correctement. Lancez son exécution directement à partir d'une fenêtre terminal vers vorte serveur (
- Un autre problème classique est celui des droits de propriété et d'accès aux fichiers (voir ci-dessous).
- Regardez aussi le fichier log de gwd précisé dans la commande de lancement.
- Il est possible que GeneWeb ne fonctionne que partiellement, manquant par exemple certains fichiers style ou JavaScript. Une manière de vérifier et de tester cette situation consiste à examiner le fichier source de votre page HTML (les navigateurs fournissent des outils "développeurs" pour cela), et de cliquer sur le lien vers les fichiers qui semblent manquer. Le message d'erreur en retour vous renseignera : "File not found", "You do not have access permission", ...
- Souvenez vous que certains fichiers vous sont renvoyés par le serveur HTTP plutôt que par gwd.
Droits d'accès et protections
En mode CGI, gwd fonctionne derrière un serveur HTTP, typiquement Apache. De ce fait, le processus gwd s'exécute sous l'identification du serveur HTTP. Avec Apache, cette identité est définie dans le fichier http.conf
, et sa valeur apr défaut est user: _www
and group: —www
. Selon votre envoironnement, vous pourrez avoir ou ne pas avoir accès à ces éléments de configuration.
Vous devez donc organiser les droits de protection des différents fichiers de façon cohérente avec ceux du serveur HTTP.
- accès en lecture par défaut
- pour les magiciens, gwd a besoin du droit d'accès en écriture pour les fichiers
bases/cnt/actlog
etbases/cnt/robot
(si vous avez activé l'option -robot_xcl parameter) - et quand des modifications sont apportées, gwd a besoin de l'accès en écriture à
bases/basename.lck
,bases/basename.gwd/notes_link
etbases/basename.gwd/patches
Créer ces fichiers et faire sudo chown _www filename
a été suffisant sur un site OVH-VPS.
Ces problèmes d'accès sont enregistrés dans le fichier log de votre serveur HTTP auquel vous n'avez pas nécessairement accès (dans le cas de serveurs mutualisés par exemple).
L'accès aux fichiers de votre serveur peuvent aussi être contrôlés par un ensemble de fichiers .htaccess
. La gestion de ce mécanisme n'est pas trivial et sujet à erreurs! L'exemple ci dessous s'applique pour une version 2.4 de Apache (les versions antérieures ont une syntaxe légèrement différente).
Options +FollowSymLinks
permet l'utilisation de liens symboliques
Require all denied
interdit l'accès à ce dossier pour tous les usagers.
Require all granted
permet l'accès à ce dossier pour tous les usagers.
AllowOverride AuthConfig AuthType Basic AuthName "Username/Password required" AuthUserFile /Users/Name/SomeFolder/htfriends.auth Require valid-user
permet l'accès à ce dossier aux utilisateurs fournissant un mot de passe valide défini dans le fichier htfriends.auth
.
htpasswd /Users/Name/SomeFolder/htfriends.auth UserName
provoque l'ajout d'un nouvel utilisateur dans ce fichier.
GeneWeb Manual
- Download and install GeneWeb program under GNU/Linux, Mac OS X, Microsoft Windows, FreeBSD; on Mac OS X, Linux or Windows using Docker; or in CGI mode behind a web server.
- Understand GeneWeb server, homonym, consanguinity.
Use and manage genealogical databases
- Import Gedcom
.ged
or GeneWeb.gw
files with gwsetup or in command-line. - Update datas (add/remove individuals and families), merge duplicates, type dates.
- Use wikitext syntax, macros, keyboard shortcuts.
- Clean, recover, rename, save, archive a database.
- Merge and split multiples databases.
Technical annex
- Personalize CSS, header and trailer, templates, lexicon and declension.
- Configuration file
.gwf
(for templm), wizard notes, passwords for friends/wizards and access restrictions to databases. - Add images in notes, further remarks for experts.