1
1
Loggerhead: A web viewer for ``bzr`` branches
2
2
==============================================
4
Loggerhead is a web viewer for projects in Bazaar. It can be used to navigate
4
Loggerhead is a web viewer for projects in Breezy. It can be used to navigate
5
5
a branch history, annotate files, view patches, perform searches, etc.
6
6
Loggerhead is heavily based on `bazaar-webserve
7
7
<https://launchpad.net/bzr-webserve>`_, which was, in turn, loosely
14
14
Loggerhead depends on the following Python libraries.:
16
- SimpleTAL for templating.
18
- simplejson for producing JSON data.
16
- Chameleon for templating.
20
18
- Paste for the server. (You need version 1.2 or newer of Paste).
22
- Paste Deploy (optional, needed when proxying through Apache).
20
- PasteDeploy (optional, needed when proxying through Apache).
24
22
- flup (optional, needed to use FastCGI, SCGI or AJP).
32
$ sudo apt-get install python-simpletal
33
$ sudo apt-get install python-simplejson
30
$ sudo apt-get install python-chameleon
34
31
$ sudo apt-get install python-paste
35
32
$ sudo apt-get install python-pastedeploy
36
33
$ sudo apt-get install python-flup
38
Installing Dependencies Using :command:`easy_install`
39
#####################################################
35
Installing Dependencies Using :command:`pip`
36
############################################
38
You should normally create and activate a virtual environment first.
44
-f http://www.owlfish.com/software/simpleTAL/py2compatible/download.html \
46
$ easy_install simplejson
48
$ easy_install PasteDeploy
42
# Basic installation only
43
$ pip install loggerhead
44
# Installation for proxying through Apache
45
$ pip install 'loggerhead[proxied]'
46
# Installation for FastCGI, SCGI or AJP
47
$ pip install 'loggerhead[flup]'
52
50
Running the Standalone Loggerhead Server
53
51
----------------------------------------
55
53
After installing all the dependencies, you should be able to run
56
:command:`serve-branches` with the branch you want to serve on the
54
:command:`loggerhead-serve` with the branch you want to serve on the
61
./serve-branches ~/path/to/branch
59
./loggerhead-serve ~/path/to/branch
63
61
By default, the script listens on port 8080, so head to
64
62
http://localhost:8080/ in your browser to see the branch.
101
99
$ sudo chkconfig --add loggerheadd
104
Using Loggerhead as a Bazaar Plugin
105
------------------------------------
102
Using Loggerhead as a Breezy Plugin
103
-----------------------------------
107
This branch contains experimental support for using Loggerhead as a Bazaar
105
This branch contains experimental support for using Loggerhead as a Breezy
108
106
plugin. To use it, place the top-level Loggerhead directory (the one
109
containing COPYING.txt) at ``~/.bazaar/plugins/loggerhead``. E.g.:
107
containing COPYING.txt) at ``~/.config/breezy/plugins/loggerhead``. E.g.:
111
109
.. code-block:: sh
113
$ bzr branch lp:loggerhead ~/.bazaar/plugins/loggerhead
111
$ bzr branch lp:loggerhead ~/.config/breezy/plugins/loggerhead
115
113
$ bzr serve --http
132
130
Serving Loggerhead behind Apache
133
131
--------------------------------
135
If you want to view Bazaar branches from your existing Apache
133
If you want to view Breezy branches from your existing Apache
136
134
installation, you'll need to configure Apache to proxy certain
137
135
requests to Loggerhead. Adding lines like this to your Apache
138
136
configuration is one way to do this:
144
142
ProxyPassReverse http://127.0.0.1:8080/branches/
147
If Paste Deploy is installed, the :command:`serve-branches` script can be
145
If Paste Deploy is installed, the :command:`loggerhead-serve` script can be
148
146
run behind a proxy at the root of a site, but if you're running it at
149
147
some path into the site, you'll need to specify it using
150
148
``--prefix=/some_path``.
150
Serving Loggerhead with mod_wsgi
151
--------------------------------
153
A second method for using Loggerhead with apache is to have apache itself
154
execute Loggerhead via mod_wsgi. You need to add configuration for apache and
155
for breezy to make this work. Example config files are in the Loggerhead doc
156
directory as apache-loggerhead.conf and breezy.conf. You can copy them into
157
place and use them as a starting point following these directions:
159
1) Install mod_wsgi. On Ubuntu and other Debian derived distros::
161
sudo apt-get install libapache2-mod-wsgi
163
On Fedora-derived distros::
165
su -c yum install mod_wsgi
167
2) Copy the breezy.conf file where apache will find it (May be done for you if
168
you installed Loggerhead from a distribution package)::
170
# install -d -o apache -g apache -m 0755 /etc/loggerhead
171
# cp -p /usr/share/doc/loggerhead*/breezy.conf /etc/loggerhead/
172
# mkdir -p /var/www/.config
173
# ln -s /etc/loggerhead /var/www/.config/breezy
175
3) Create the cache directory (May be done for you if you installed Loggerhead
176
from a distribution package)::
178
# install -d -o apache -g apache -m 0700 /var/cache/loggerhead/
180
4) Edit /etc/loggerhead/breezy.conf. You need to set http_root_dir to the filesystem
181
path that you will find your bzr branches under. Note that normal
182
directories under that path will also be visible in Loggerhead.
184
5) Install the apache conf file::
186
# cp -p /usr/share/doc/loggerhead*/apache-loggerhead.conf /etc/httpd/conf.d/loggerhead.conf
188
6) Edit /etc/httpd/conf.d/loggerhead.conf to point to the url you desire to
189
serve Loggerhead on. This should match with the setting for
190
http_user_prefix in breezy.conf
192
7) Restart apache and you should be able to start browsing
194
.. note:: If you have SELinux enabled on your system you may need to allow
195
apache to execute files in temporary directories. You will get a
196
MemoryError traceback from python if this is the case. This is because of
197
the way that python ctypes interacts with libffi. To rectify this, you may
198
have to do several things, such as mounting tmpdirs so programs can be
199
executed on them and setting this SELinux boolean::
201
setsebool httpd_tmp_exec on
203
This bug has information about how python and/or Linux distros might solve
204
this issue permanently and links to bugs which diagnose the root cause.
205
https://bugzilla.redhat.com/show_bug.cgi?id=582009