~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/http_smart_server.txt

Merge from bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
6
6
arbitrary files on your server.**
7
7
 
8
8
This document describes one way to setup a Bazaar HTTP smart server, using
9
 
Apache 2.0 and FastCGI.
 
9
Apache 2.0 and FastCGI or mod_python.
10
10
 
11
11
Example
12
12
=======
21
21
Configuring Apache 2.0
22
22
----------------------
23
23
 
 
24
FastCGI
 
25
~~~~~~~
 
26
 
24
27
First, configure mod_fastcgi, e.g. by adding lines like these to your
25
28
httpd.conf::
26
29
 
67
70
.. _mod_rewrite: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
68
71
.. _mod_fastcgi: http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html
69
72
 
 
73
mod_python
 
74
~~~~~~~~~~
 
75
 
 
76
First, configure mod_python, e.g. by adding lines like these to your
 
77
httpd.conf::
 
78
 
 
79
    LoadModule python_module /usr/lib/apache2/modules/mod_python.so
 
80
 
 
81
Define the rewrite rules with mod_rewrite the same way as for FastCGI, except
 
82
change::
 
83
 
 
84
    RewriteRule ^(.*)/\.bzr/smart$ /srv/example.com/scripts/bzr-smart.fcgi
 
85
 
 
86
to::
 
87
 
 
88
    RewriteRule ^(.*)/\.bzr/smart$ /srv/example.com/scripts/bzr-smart.py
 
89
 
 
90
Like with mod_fastcgi, we also define how our script is to be handled::
 
91
 
 
92
    Alias /srv/example.com/scripts/bzr-smart.py /srv/example.com/scripts/bzr-smart.py
 
93
    <Directory /srv/example.com/scripts>
 
94
        <Files bzr-smart.py>
 
95
            PythonPath "sys.path+['/srv/example.com/scripts']"
 
96
            AddHandler python-program .py
 
97
            PythonHandler bzr-smart
 
98
        </Files>
 
99
    </Directory>
 
100
 
 
101
This instructs Apache to hand requests for any URL ending with `/.bzr/smart`
 
102
inside `/code` to a Bazaar smart server via mod_python.
 
103
 
 
104
Refer to the mod_python_ documentation for further information.
 
105
 
 
106
.. _mod_python: http://www.modpython.org/
 
107
 
 
108
 
70
109
Configuring Bazaar
71
110
------------------
72
111
 
 
112
FastCGI
 
113
~~~~~~~
 
114
 
73
115
We've configured Apache to run the smart server at
74
116
`/srv/example.com/scripts/bzr-smart.fcgi`.  This is just a simple script we need
75
117
to write to configure a smart server, and glue it to the FastCGI gateway.
90
132
 
91
133
.. _flup: http://www.saddi.com/software/flup/
92
134
 
 
135
mod_python
 
136
~~~~~~~~~~
 
137
 
 
138
We've configured Apache to run the smart server at
 
139
`/srv/example.com/scripts/bzr-smart.py`.  This is just a simple script we need
 
140
to write to configure a smart server, and glue it to the mod_python gateway.
 
141
Here's what it looks like::
 
142
 
 
143
    import modpywsgi
 
144
    from bzrlib.transport.http import wsgi
 
145
 
 
146
    smart_server_app = wsgi.make_app(
 
147
        root='/srv/example.com/code',
 
148
        prefix='/code/',
 
149
        path_var='REQUEST_URI')
 
150
 
 
151
    modpywsgi.WSGIServer(smart_server_app).run()
 
152
        
 
153
The `modpywsgi` module can be found at http://trac.pocoo.org/wiki/ModPyWsgi.  It
 
154
is part of pocoo_.
 
155
 
 
156
.. _pocoo: http://trac.pocoo.org/wiki/
 
157
 
93
158
Clients
94
159
-------
95
160