Installation de loggerhead & co sur une debian

Variables

bzr=/var/bzr
repos=$bzr/repos

Apache

  • Groupe Apache:

    groupadd bzr
    for i in sra mpa www-data; do
        gpasswd -a $i  bzr
    done

Repositories container creation

mkdir $bzr
cd $bzr
mkdir env repos python
chown root:bzr env repos python
chmod 755 env repoos python
ln -sf /var/bzr/repos/ /bzr

Idea

Repos/              rwxr-x---     root:bzr
    tri1/           rwxr-x---     tri1:bzr
    tri2/           rwxr-x---     tri2:bzr

Fix repo rights

cd $bzr/repos
for trigramme in *;do
    chown -Rf $trigramme:bzr $trigramme
    chmod -Rf 750 $trigramme
done

Add a developper repo

Rely on ldap auth. for users creation:

mkdir $bzr/repos/$trigramme
gpasswd -a $trigramme bzr
chown -Rf $trigramme:bzr $trigramme
chmod -Rf 750 $trigramme

Install root repo

Got a python bootstrapper and letz rule:

apt-get install build-essential m4 libtool pkg-config autoconf m4 gettext bzip2
cd $bzr
wget http://hg.minitage.org/hg/minitage/shell/raw-file/tip/PyBootstrapper.sh
bash ./PyBootstrapper.sh python
python/bin/virtualenv --no-site-packages env
source env/bin/activate
# bootstrap, puis install en dev pour bzr-svn
mkdir bzr.repos
cd bzr.repos
easy_install paramiko
easy_install Pyrex
easy_install bzr
bzr branch lp:loggerhead
cd $bzr/bzr.repos/loggerhead && easy_install .
easy_install http://www.owlfish.com/software/simpleTAL/downloads/SimpleTAL-4.1.tar.gz
easy_install Paste

Add a cron job to reset rights

log as root:

crontab -e #and add
* */15 * * * /var/bzr/bin/fix_rights.sh

Add a basic init script to start loggerhead

#!/bin/sh
#
# Loggerhead start/stop script.


host="bzr.makina-nantes.net"
port="8443"
prefix="/var/bzr"
repos="$prefix/repos"
log_folder="$prefix/var/log"
start_cmd="$prefix/env/bin/serve-branches --port $port --host $host $repos --log-folder=$log_folder"
pid_file="$prefix/var/run/loggerhead.pid"
user="www-data"
py="$prefix/env/bin/python"
server_name="Loggerhead"

start() {
        echo "Starting $server_name server"
        start-stop-daemon --start  -c $user  --quiet --background\
        -p $pid_file -m  --exec "$py"  --  $start_cmd
}

stop() {
        echo  "Stopping $server_name  server"
        start-stop-daemon --stop --user $user  \
        -p $pid_file
}


case "$1" in
  'start')
        start
        ;;
  'stop')
        stop
        ;;
  'restart')
        stop
        start
        ;;
  *)
        echo "usage: $0 start|stop|restart"
        exit 1
        ;;
esac
#vim:set ft=bash:

Add apache vhost

Add modrewrite and proxy:

a2enmod rewrite proxy proxy_http
apt-get install libapache2-mod-proxy-html
a2enmod    proxy_html
/etc/init.d/apache2 force-reload

Add the vhost:

# /etc/apache2/sites-available/100-bzr
<VirtualHost *>
        ServerName  bzr.makina-nantes.net
        ServerAlias bzr.makinanantes.net
        # Logs
        ErrorLog "|/usr/bin/cronolog  /var/bzr/var/log/apache/%Y/%W/%d-apache_error.log"
        CustomLog "|/usr/bin/cronolog /var/bzr/var/log/apache/%Y/%W/%d-apache_access.log" combined
        DocumentRoot /var/bzr/htdocs
        <Directory "/var/bzr/htdocs">
          Options       Indexes    ExecCGI IncludesNOEXEC FollowSymLinks SymLinksIfOwnerMatch
          AllowOverride All
          Order         allow,deny
          Allow         from       all
        </Directory>
        <Directory "/var/bzr/repos/">
          Options       Indexes ExecCGI IncludesNOEXEC FollowSymLinks SymLinksIfOwnerMatch
          AllowOverride All
          Order         allow,deny
          Allow         from       all
        </Directory>
        <IfModule mod_proxy.c>
                # pas d'open proxy
                ProxyRequests off
                <Proxy http://bzr.makina-nantes.net:8443>
                        Order deny,allow
                        Allow from all
                </Proxy>
                RewriteEngine on
                ProxyPass        / http://bzr.makina-nantes.net:8443/
                ProxyPassReverse / http://bzr.makina-nantes.net:8443/
                SetOutputFilter  proxy-html
                ProxyHTMLExtended On
                ProxyHTMLURLMap  http://bzr.makina-nantes.net:8443/ http://bzr.makina-nantes.net/

        </IfModule>
</VirtualHost>

Letz go

a2ensite 100-bzr
/etc/init.d/apache2 restart

Scripts

  • $bzr/bin/add-dev.sh : add a dev (trigramme)
  • $bzr/bin/fix_rights.sh : reset rights on the repo

Youhou