|
|||||||||||||
|
1. Introduction
2. Installation 3. Le serveur Web 4. Options de configuration 5. Travailler avec Apache, LightTPD ou Xitami 5.1 Apache en mode proxy 5.2 Apache avec mod_cgi 5.3 Apache en hébergement partagé 5.4 lighttpd 5.5 Xitami 6. Programmation 7. Debogage 8. Scripts Python 9. Scripts CGI 10. Services Karrigell 11. Python Inside HTML 12. HTML Inside Python 13. HTMLTags - génère du HTML en Python 14. Inclure des documents 15. Sessions 16. Authentification et gestion des utilisateurs 17. Traduction et Unicode 18. Résumé des noms intégrés |
5. Karrigell avec Apache, lighttpd ou XitamiBien que Karrigell puisse fonctionner de façon autonome avec le serveur Web intégré, il peut être intéressant de le faire fonctionner avec un serveur Web externe. Apache est le serveur le plus répandu dans le monde, il est performant, stable, il permet de travailler en mode sécurisé (SSL), il offre des services de log, etcIl y a plusieurs façons de faire fonctionner Karrigell avec Apache :
Graham Dumpleton a écrit une page d'instructions pour faire fonctionner Karrigell avec WSGI 5.1 Apache en mode proxy5.1.1 IntroductionPour utiliser Karrigell dans Apache vous devrez télécharger et installer les élements suivants : Je préconise que vous utilisiez la dernière version stable de chacun des éléments ci-dessus Je recopie l'essentiel de cette section à partir de la documentation de CherryPy, par Rémi Delon : http://www.cherrypy.org/wiki/BehindApache Une fois que tout ce qui précède est installé (et fonctionne!) tout ce qu'il vous reste à faire est d'ajouter quelques lignes au fichier de configuration Apache Dans la section LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.soAilleurs dans la section Main server configuration, ajoutez les lignes suivantes pour mettre en oeuvre la fonction proxy :
ProxyRequests On
<Proxy *>
Order allow,deny
Deny from none
Allow from all
</Proxy>
Pour demander à Apache d'envoyer les requêtes vers le serveur intégré, mod_rewrite est utilisé. Ce module analyse l'url d'origine et la modifie selon des règles écrites sous forme d'expressions régulières. Ici les lignes à écrire sont : RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !autostart\.cgi$
RewriteRule ^(.*) http://localhost:8081$1 [P]
ErrorDocument 502 /cgi-bin/autostart.cgi
La fonctionnalité essentielle est décrite dans la RewriteRule : elle indique à Apache de réécrire toutes les urls en une url absolue correspondant au serveur intégré qui tourne sur le port 8081, et d'utiliser le mode proxy pour lui passer la requête
Si le serveur intégré ne tourne pas, une erreur 502 est renvoyée ; la dernière ligne indique à Apache d'appeler le script autoscript.cgi est un petit script, qui ressemble à ceci sous Linux/Unix :
La seule chose à adapter est l'emplacement de python sur la première ligne, et le chemin vers Ensuite lancez le serveur intégré sur le port 8081 et démarrez Apache. Ceci devrait suffire pour faire fonctionner l'ensemble. Démarrez (ou redémarrez) Apache pour lui faire lire la nouvelle configuration et commencez à vous en servir.
En fonction de la valeur prise par Pour des raisons de sécurité, sur Linux il vaut mieux démarrer Karrigell sur un port supérieur à 1024 et pas comme root 5.1.2 Hôtes virtuelsLes hôtes virtuels peuvent être utilisés avec Apache pour servir des hôtes différents sur la même machine avec le même serveur. Depuis la version 2.2, Karrigell prend en charge cette notion d'hôte virtuel, ainsi vous pouvez servir tous les hôtes virtuels avec la même instance du serveur intégréSi vous avez configuré
NameVirtualHost 127.0.0.1:80
<VirtualHost 127.0.0.1:80>
ServerName karrigell
# for use with Karrigell
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !autostart\.cgi$
RewriteRule ^(.*) http://karrigell:8081$1 [P]
ErrorDocument 502 /cgi-bin/autostart.cgi
</VirtualHost>
Bien entendu vous changerez l'adresse et le port dans <Virtual Host> aux valeurs appropriées 5.2 Apache avec mod_cgiNouveau en version 2.3.5Au cas où vous ne pourriez pas utiliser le serveur intégré, il faut utiliser une autre méthode pour faire tourner Karrigell derrière un serveur Apache, en faisant simplement appel aux modules mod_rewrite et mod_cgi Toutes les urls qui aboutissent à un fichier dans le répertoire Karrigell
sont "réécrites" par mod_rewrite pour être traités par un script cgi, 5.2.1 Permissions "write" et "execute"Il faut installer le paquetage Karrigell dans un répertoire accessible au serveur Apache, et définir les permissions suivantes si le serveur tourne sous Unix/Linux :
5.2.2 httpd.confRemplacer "C:/cygwin/home/Karrigell" par le chemin du répertoire dans lequel vous avez installé le paquetage Karrigell 1. dans la section DSO, vérifier que ces lignes sont décommentées
LoadModule cgi_module modules/mod_cgi.so LoadModule rewrite_module modules/mod_rewrite.so 2. Remplacer DocumentRoot par le chemin vers le dossier DocumentRoot "C:/cygwin/home/karrigell/webapps" 3. Alias
Alias /admin "C:/cygwin/home/Karrigell/admin" 4. Décommenter la ligne AddHandler cgi-script .cgi 5. Options du répertoire racine Remplacer la section
<Directory />
AllowOverride None
Options -Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
# gerer les urls correspondant a des dossiers
ErrorDocument 403 /cgi-bin/start.cgi
# reecrire les urls pour que Karrigell prenne en charge les scripts
# avec les extensions py,pih,hip and ks
RewriteEngine On
RewriteRule ^(.*)\.(py|pih|hip|ks)$ /cgi-bin/start.cgi
# et les scripts ks avec un nom de fonction
RewriteRule ^(.*)\.ks/.* /cgi-bin/start.cgi
</Directory>
6. Ajouter la configuration pour le répertoire
<Directory /cgi-bin>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
5.2.3 Fichier de configuration KarrigellDans la section [Server] du fichier de configuration (Karrigell.ini) faites persistentSession = 1 debug = 0 Avertissement En mode cgi, les données de session ne peuvent pas être conservées en mémoire. Elles sont stockées sur disque, ce qui entraîne certaines limitations :
5.3 Apache en hébergement partagéSi vous voulez utiliser Karrigell sur un site d'hébergement partagé, vous ne pourrez probablement pas utiliser le serveur intégré, il faut donc utiliser le mode cgi décrit ci-dessusTélécharger le paquetage Karrigell sur votre site et définissez les permissions comme indiqué dans la section 2.1 ci-dessus avec votre client FTP ou SSH Supposons que le répertoire dans lequel vous pouvez stocker vos fichiers sur l'hôte est
Votre site sera configuré comme hôte virtuel ; le fichier httpd.conf de l'hôte aura une section <VirtualHost> dédiée au site Elle aura l'allure suivante :
<VirtualHost 10.193.117.191:80>
ServerAdmin jean.dupont@nullepart.org
ServerName MonSite
DocumentRoot /var/www/html/MonSite/karrigell/webapps
<Directory /var/www/html/MonSite/karrigell/webapps>
AllowOverride None
Options -Indexes FollowSymLinks ExecCGI
Order allow,deny
Allow from all
# gerer les urls correspondant a des dossiers
ErrorDocument 403 /cgi-bin/start.cgi
# reecrire les urls pour que Karrigell prenne en charge les scripts
# avec les extensions py,pih,hip and ks
RewriteEngine On
RewriteRule ^(.*)\.(py|pih|hip|ks)$ /cgi-bin/start.cgi
# et les scripts ks avec un nom de fonction
RewriteRule ^(.*)\.ks/.* /cgi-bin/start.cgi
</Directory>
ScriptAlias /cgi-bin/ "/var/www/html/MonSite/karrigell/webapps/cgi-bin/"
AddHandler cgi-script .cgi
<Directory /var/www/html/MonSite/karrigell/webapps/cgi-bin>
AllowOverride None
Options FollowSymLinks ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Il faudra éditer ce modèle avec les bonnes valeurs pour l'adresse IP address, le port, l'adresse mail du ServerAdmin (la vôtre), le nom du serveur, et bien sûr le répertoire de votre installation 5.4 lighttpdD'après le site de lighttpd :Sécurité, vitesse, conformité et flexibilité - tout ceci décrit LightTPD qui est en train de redéfinir les critères d'efficacité d'un serveur web, qui est conçu et optimisé pour des environnements de haute performance. D'encombrement mémoire réduit par rapport à d'autres serveurs web, une gestion efficace de la charge CPU et un ensemble complet de fonctionnalités (FastCGI, CGI, Auth, compression, réécriture d'URL et bien d'autres) LightTPD est la solution idéale pour les serveurs qui connaissent des problèmes de charge. Et, cerise sur le gâteau, c'est un logiciel libre publié sous la licence BSD Configuration pour Karrigell par Laurent Pointal
|