Running Koha from git checkout

From Koha Wiki
Jump to navigation Jump to search

From time to time you might want to modify your Koha install from Debian package to point into git checkout.

This page is result of hand-on git tutorial on Koha hackfest in Edinburgh, 2012. Other useful pages on this topic are Git bz configuration and Tips and tricks

Checkout Koha source from git

In this example, we are using hackfest instance to point to our newly created git checkout. In this example, we are using koha_hackfest directory to checkout Koha inside my home directory which is /home/dpavlin and Koha site named hackfest.

 dpavlin@koha-dev:~$ pwd
 /home/dpavlin
 dpavlin@koha-dev:~$ git clone git://git.koha-community.org/Koha-community/Koha.git koha_hackfest
 # git output follows...

Make local copy of apache config

We need to copy apache configuration over since we need to modify paths in it:

 koha-dev:/etc/koha/sites/hackfest# cp /etc/koha/apache-shared-{opac,intranet}.conf .

Modify paths in koha-conf.xml and apache configuration =

Here is example of script which will help you modify configuration:

 koha-dev:/home/dpavlin/koha_hackfest# to=/home/dpavlin/koha_hackfest/ /srv/koha-git-paths.sh /etc/koha/sites/hackfest/koha-conf.xml \
 /etc/koha/sites/hackfest/apache-shared-*.conf /etc/apache2/sites-enabled/hackfest 

Here is a script which does all replacements of paths in configurations:

koha-dev:/home/dpavlin/koha_hackfest# cat /srv/koha-git-paths.sh 
#!/bin/sh -x

conf="/etc/koha/koha-conf.xml /etc/apache2/sites-available/koha /etc/koha/sites/*/koha-conf.xml"
test -z "$to" && to=/srv/koha

if [ ! -z "$*" ] ; then
        conf=$*
else
        echo "Usage: to=/srv/koha $0 /path/to/config/file(s)"
        exit 1
fi

echo "# working on $conf -> $to"

perl -p -i -n -e "s:/usr/share/koha/opac/cgi-bin/opac:$to/opac/cgi-bin/opac:g" $conf
perl -p -i -n -e "s:/usr/share/koha/opac/htdocs/opac-tmpl:$to/koha-tmpl/opac-tmpl:g" $conf

perl -p -i -n -e "s:/usr/share/koha/intranet/htdocs/:$to/koha-tmpl/:g" $conf
perl -p -i -n -e "s:/usr/share/koha/intranet/cgi-bin:$to:g" $conf
perl -p -i -n -e "s:/usr/share/koha/intranet/htdocs/intranet-tmpl:$to/koha-tmpl/intranet-tmpl:g" $conf

perl -p -i -n -e "s:/usr/share/koha/lib:$to:g" $conf
perl -p -i -n -e "s:/usr/share/koha/opac/htdocs:$to/opac:g" $conf

perl -p -i -n -e "s:/usr/share/koha:$to:g" $conf

# fix opac cgi-bin links
perl -p -i -n -e "s:/opac/cgi-bin/opac/:/opac/:g" $conf


/etc/init.d/apache2 reload

Fix Apache virtual host file

As a last step you will have to modify /etc/apache2/sites-enabled/hackfest to include newly modified versions of apache-shared-{opac,intranet}.conf like this:

diff --git a/koha-dev/etc/apache2/sites-enabled/hackfest b/koha-dev/etc/apache2/sites-enabled/hackfest
index 03271b6..38705fe 100644
--- a/koha-dev/etc/apache2/sites-enabled/hackfest
+++ b/koha-dev/etc/apache2/sites-enabled/hackfest
@@ -3,8 +3,9 @@
 # OPAC
 <VirtualHost *:80>
    Include /etc/koha/apache-shared.conf
+   SetEnv PERL5LIB "/home/dpavlin/koha_hackfest/"                                            
 #  Include /etc/koha/apache-shared-disable.conf
-   Include /etc/koha/apache-shared-opac.conf
+   Include /etc/koha/sites/hackfest/apache-shared-opac.conf
 
    ServerName hackfest.koha-dev.rot13.org
    SetEnv KOHA_CONF "/etc/koha/sites/hackfest/koha-conf.xml"
@@ -18,8 +19,9 @@
 # Intranet
 <VirtualHost *:8080>
    Include /etc/koha/apache-shared.conf
+   SetEnv PERL5LIB "/home/dpavlin/koha_hackfest/"                                            
 #  Include /etc/koha/apache-shared-disable.conf
-   Include /etc/koha/apache-shared-intranet.conf
+   Include /etc/koha/sites/hackfest/apache-shared-intranet.conf
    
    ServerName hackfest.koha-dev.rot13.org
    SetEnv KOHA_CONF "/etc/koha/sites/hackfest/koha-conf.xml"

PERL5LIB is very important because if you don't add it, you will still be using old koha source from Debian package.

Tweak intranet dir

Script included above isn't perfect. so if you get error like:

 Warning: DocumentRoot [/home/dpavlin/koha_hackfest/intranet/htdocs] does not exist

You will have to manually modify DocumentRoot in apache-shared-{opac,intranet}.conf to be like:

 DocumentRoot /home/dpavlin/koha_hackfest/koha-tmpl

in both files.

Test that everything is setup right

Open http://hackfest.koha-dev.rot13.org:8080/cgi-bin/koha/about.pl (or similar URL on your installation) and verify that Perl @INC has /home/dpavlin/koha_hackfest/ in it and *not* /usr/share/koha/lib (which is patch to Debian koha-common installation)