Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 278 lines (179 sloc) 11.513 kB
10eb34c add summary
nux authored
1 ---
2 layout: default
3 title: Installation
4 ---
5
6 # Installation
7
6d06b4a forget little translation
nux authored
8 Autre langages : [español](/install/es) | [Japan](/install/ja) | [chinese](/install/zh-cn) | [italiano](/install/it) | [english](/install)
5b8bd6f Add summary and macos X link
nux authored
9
10eb34c add summary
nux authored
10 ## Sommaire
11
12 * <a href="#installation">Installation</a>
5b8bd6f Add summary and macos X link
nux authored
13 * <a href="#macosx">.. sur MacOS X</a>
10eb34c add summary
nux authored
14 * <a href="#dev">Développement</a>
15 * <a href="#prod">Production</a>
16 * <a href="#lighttpd">LightTPD</a>
17 * <a href="#lighttpdfastcgi">...avec FastCGI</a>
18 * <a href="#apache">Apache</a>
19 * <a href="#apachecgi">...avec CGI</a>
20 * <a href="#apachecgihtaccess">.. avec CGI en utilisant .htaccess</a>
21 * <a href="#apachefastcgi">.. avec FastCGI</a>
22 * <a href="#apachescgi">.. avec SCGI</a>
23 * <a href="#apachemodpython">.. avec mod_python</a>
24 * <a href="#apachemodwsgi">.. avec mod_wsgi</a>
25 * <a href="#apachemodrewrite">.. avec mod_rewrite</a>
26
27
28 <a name="installation"></a>
29 ## Installation
30 Pour installer web.py, commencez par télécharger l'archive:
31
32 [web.py-0.33.tar.gz] (/static/web.py-0.33.tar.gz)
33
34 Décompressez l'archive et copier le dossier _web_ dans le dossier de votre application. Ou, pour rendre web.py accessible par toutes les applications, exécutez:
35
36 python setup.py install
37
38 Note: sur certains systèmes Unix (ou Linux), il vous faudra vous connecter en tant que root (commande su) ou exécuter:
39
40 sudo python setup.py install
41
42 voir [paramètrage recommandé](http://www.feuxi.com/Le-web-py-nouveau-est-arrive.html)
43
44 Une autre option est d'utiliser [Easy Install](http://peak.telecommunity.com/DevCenter/EasyInstall). Une fois Easy Install correctement paramétré, exécutez:
45
46
47 easy_install web.py
48
5b8bd6f Add summary and macos X link
nux authored
49 <a name="macosx"></a>
50 ### ... Sur MacOS X
51
52 La procédure d'installation sur MacOS X n'a pas encore été traduite. Vous pouvez cependant visionner la version anglaise pour la version 0.1 : [Install MacOS X](/install_macosx)
53
54
10eb34c add summary
nux authored
55 <a name="dev"></a>
56 ## Développement:
57
58 webpy intègre son propre serveur web. Apprenez comment écrire une application en suivant le [tutoriel](/tutorial3.fr). Quand votre application est écrite, insérez votre code dans `code.py` et démarrez le serveur avec la commande:
59
60 python code.py
61
62 Ouvrez votre navigateur et allez à l'adresse [http://localhost:8080/](http://localhost:8080/) pour visualiser la page. Pour spécifier un port différent, utilisez simplement `python code.py 1234`.
63
64 <a name="prod"></a>
65 ## Production
66
67 Le serveur web intégré à web.py est bien pratique en phase de développement, mais pour un site en production, il vaut mieux prévoir quelque chose de plus sérieux. web.py fonctionne avec n'importe quel serveur http compatible avec [WSGI](http://www.python.org/dev/peps/pep-0333/).
68
69 WSGI est une API permettant la communication entre serveur web et applications, similaire à Java's Servlet Interface. Pour faire fonctionner web.py avec CGI, FastCGI ou SCGI, il vous faudra installer [flup](http://trac.saddi.com/flup) ([téléchargez ici](http://www.saddi.com/software/flup/dist/)), qui permet d'interfacer WSGI avec ces différentes API.
70
71 Pour utiliser une de ces variantes de CGI, ajoutez au début de votre `code.py` la ligne suivante :
72
73 #!/usr/bin/env python
74
75 N'oubliez pas de le rendre exécutable: `chmod +x code.py`.
76
77 <a name="lighttpd"></a>
78 ### LightTPD
79
80 <a name="lighttpdfastcgi"></a>
81 #### .. avec FastCGI
82
83 FastCGI associé à lighttpd est la manière recommandée d'utiliser web.py en production. [reddit.com][3] gère des millions de visites de cette façon.
84
85 [3]: http://reddit.com/
86
87 Votre configuration lighttpd doit ressemble à ceci:
88
89 server.modules = ("mod_fastcgi", "mod_rewrite")
90 server.document-root = "/path/to/root/"
91 fastcgi.server = ( "/code.py" =>
92 (( "socket" => "/tmp/fastcgi.socket",
93 "bin-path" => "/path/to/root/code.py",
94 "max-procs" => 1
95 ))
96 )
97
98 url.rewrite-once = (
99 "^/favicon.ico$" => "/static/favicon.ico",
100 "^/static/(.*)$" => "/static/$1",
101 "^/(.*)$" => "/code.py/$1"
102 )
103
104 Avec certaines versions de lighttpd, il est important de s'assurer que la propriété "check-local" du paramètre fastcgi.server est bien positionné à "false", surtout si votre `code.py` est situé en dehors de la racine.
105
106 Si vous recevez un message d'erreur indiquant qu'il n'est pas possible d'importer _flup_, installez-le en ligne de commande en utilisant la commande "easy_install flup".
107
108 Depuis la revision 145, il est nécessaire de définir une variable "bin-environment" dans la configuration de fastcgi si votre code utilise des redirections. Par exemple, si votre code redirige vers http://domain.com/ et que vous voyez l'URL http://domain.com/code.py/ dans la barre de navigation, vous devrez modifier la configuration de fastcgi.server de la manière suivante:
109
110 fastcgi.server = ( "/code.py" =>
111 ((
112 "socket" => "/tmp/fastcgi.socket",
113 "bin-path" => "/path/to/root/code.py",
114 "max-procs" => 1,
115 "bin-environment" => (
116 "REAL_SCRIPT_NAME" => ""
117 ),
118 "check-local" => "disable"
119 ))
120 )
121
122 <a name="apache"></a>
123 ### Apache
124
125 <a name="apachecgi"></a>
126 #### .. avec CGI
127
128
129 Ajoutez les lignes suivante à `httpd.conf` ou `apache2.conf`.
130
131 Alias /foo/static/ /path/to/static
132 ScriptAlias /foo/ /path/to/code.py
133
134 <a name="apachecgihtaccess"></a>
135 #### .. avec CGI en utilisant .htaccess
136
137 CGI est facile à configurer mais ce n'est pas la meilleure des solutions pour les sites à très fort trafic.
138
139 Ajoutez les lignes suivantes à votre fichier `.htaccess`:
140
141 Options +ExecCGI
142 AddHandler cgi-script .py
143
144 Ouvrez votre navigateur et aller à l'URL `http://example.com/code.py/`. N'oubliez pas le slash final, sinon vous aurez droit à une 'page non trouvée'. Pour que ça fonctionne sans avoir à indiquer `code.py` dans l'URL, il faut activer le 'mod_rewrite' dans votre fichier '.htaccess' (voir en fin de document).
145
146 Note: la manière dont `web.py` est implémenté provoque une erreur du module `cgitb` à cause de la capture du `stdout`. Voici une façon de contourner le problème:
147
148 import cgitb; cgitb.enable()
149 import sys
150
151 # ... import web etc here...
152
153 def cgidebugerror():
154 """
155 """ _wrappedstdout = sys.stdout
156
157 sys.stdout = web._oldstdout
158 cgitb.handler()
159
160 sys.stdout = _wrappedstdout
161
162 web.internalerror = cgidebugerror
163
164 <a name="apachefastcgi"></a>
165 #### .. avec FastCGI
166
167 FastCGI est facile à configurer et est aussi performant que 'mod_python'.
168
169 Ajoutez les lignes suivantes à votre fichier `.htaccess`:
170
171 <Files code.py> SetHandler fastcgi-script
172 </Files>
173
174 Malheureusement, et contrairement à lighttpd, Apache ne donne aucune indication demandant à votre script web.py de fonctionner comme un serveur FastCGI, il faut donc l'indiquer à web.py de façon explicite, en ajoutant le code suivant dans votre script `code.py`, juste avant la ligne
175 `if __name__ == "__main__":` :
176
177 web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
178
179 <a name="apachescgi"></a>
180 #### .. avec SCGI
181
182 Téléchargez et installez le [module mod_scgi](http://www.mems-exchange.org/software/files/mod_scgi/)
183
184 modifier le fichier 'httpd.conf':
185
186 LoadModule scgi_module Modules/mod_scgi.so
187 SCGIMount / 127.0.0.1:8080
188
189 redémarrez le serveur Apache et lancer votre 'code.py' avec la commande suivante:
190
191 python code.py 127.0.0.1:8080 scgi
192
193 lancez votre navigateur et visitez l'adresse suivante 127.0.0.1
194 C'est aussi simple que ça...enfin, si ça marche du premier coup ;-)
195
196 <a name="apachemodpython"></a>
197 #### .. avec mod_python
198
199 mod_python est aussi performant que FastCGI, mais il n'est pas aussi évident à configurer. Suivez le guide:
200
201 Pour Python 2.5, procédez comme suit:
202
203 cd /usr/lib/python2.5/wsgiref
204 # or in windows: cd /python2.5/lib/wsgiref
205 wget -O modpython_gateway.py http://projects.amor.org/misc/browser/modpython_gateway.py?format=raw
206 # or fetch the file from that address using your browser
207
208 Pour Python <2.5, procéder plutôt ceci:
209
210 cd /usr/lib/python2.4/site-packages
211 # or in windows: cd /python2.4/lib/site-packages
212 svn co svn://svn.eby-sarna.com/svnroot/wsgiref/wsgiref
213 cd wsgiref
214 wget -O modpython_gateway.py http://projects.amor.org/misc/browser/modpython_gateway.py?format=raw
215 # or fetch the file from that address using your browser
216
217
218 renommez votre script `code.py` en quelque chose comme `codep.py` et ajoutez le code suivant:
219
220 main = web.wsgifunc(web.webpyfunc(urls, globals()))
221
222 Dans votre fichier `.htaccess`, ajoutez:
223
224
225 AddHandler python-program .py
226 PythonHandler wsgiref.modpython_gateway::handler
227 PythonOption wsgi.application codep::main
228
229
230 Vous aurez surement aussi besoin d'ajouter une `RewriteRule` pour rediriger `/` vers `/codep.py/`
231
232 <a name="apachemodwsgi"></a>
233 #### .. avec mod_wsgi
234
235 mod\_wsgi est un nouveau module Apache [plus performant que mod_python](http://code.google.com/p/modwsgi/wiki/PerformanceEstimates) pour l'hébergement d'applications WSGI, et très facile à mettre en place.
236
237 A la fin de votre script `code.py`, ajoutez la ligne suivante:
238
239 application = web.wsgifunc(web.webpyfunc(urls, globals()))
240
241 mod\_wsgi offre [plusieurs façons différentes](http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives) de spécifier l'URL pointant vers une application WSGI, mais une manière simple peut être d'ajouter le code suivant dans votre fichier '.htaccess':
242
243 <Files code.py>
244 SetHandler wsgi-script
245 Options ExecCGI FollowSymLinks
246 </Files>
247
248 Si vous recevez un message d'erreur du style "ImportError: No module named web" dans le fichier error.log d'Apache, vous pouvez essayer de spécifier un chemin absolu dans votre script 'code.py' avant l'instruction 'import web':
249
250 import sys, os
251 abspath = os.path.dirname(__file__)
252 sys.path.append(abspath)
253 os.chdir(abspath)
254 import web
255
256 Plus d'information dans la section "Application Working Directory" sur [Common problems with WSGI application](http://code.google.com/p/modwsgi/wiki/ApplicationIssues).
257
258 Encore une fois, votre application devrait-être accessible à l'URL suivante: `http://example.com/code.py/` (sans oublier le slash final!!!).
259
260 <a name="apachemodrewrite"></a>
261 #### mod_rewrite pour Apache
262
263 Si vous voulez que webpy soit accessible par l'URL 'http://example.com' au lieu de 'http://example.com/code.py/' ajoutez les directives suivantes dans votre fichier `.htaccess`:
264
265 <IfModule mod_rewrite.c>
266 RewriteEngine on
267 RewriteBase /
268 RewriteCond %{REQUEST_URI} !^/icons
269 RewriteCond %{REQUEST_URI} !^/favicon.ico$
270 RewriteCond %{REQUEST_URI} !^(/.*)+code.py/
271 RewriteRule ^(.*)$ code.py/$1 [PT]
272 </IfModule>
273
274 Si le script `code.py` est situé dans le sous-répertoire `myapp/`, changez la directive `RewriteBase /` en `RewriteBase /myapp/`.
275
276 Si vous avez d'autres fichiers statiques à exclure de la règle de réécriture (fichiers CSS ou des images), indiquez-les également ici, en dupliquant et adaptant la ligne `RewriteCond %{REQUEST_URI} !^/icons.` ,par exemple, autant de fois que nécessaire.
277
278 Pour plus d'information sur le module mod_rewrite et l'utilisation du fichier `.htaccess`, je vous conseille l'excellent article [URL Rewriting pour les nuls] (http://seo.feuxi.com/URL-Rewriting-pour-les-nuls.html).
Something went wrong with that request. Please try again.