[Koha-patches] [PATCH 1/3] Bug 11404: Apache 2.4 expects the sites definition files use the sufix '.conf'

Tomas Cohen Arazi tomascohen at gmail.com
Fri May 9 20:26:52 CEST 2014


To reproduce:
- Install the 'koha-common' package on Debian 7 or Ubuntu 13.10+
  (both known to include Apache 2.4).
- Create an instance (for example testlibrary) using the supplied commands:
 $ koha-create --create-db testlibrary
> FAIL: apache reports an error like this:
"ERROR: Site testlibrary does not exist!"

This patch adds a test on the Apache version and appends the needed ".conf" sufix
if needed.

To test:

1st step: koha-create gets fixed:

-- The hard way --
- Apply the patch, and build the koha-common package on top of this commit.
- Install the built package on an Apache 2.4 Debian-based distro (Debian 7 or Ubuntu 13.10 will work)
- Create a test instance:
 $ koha-create --create-db testlibrary
> SUCCESS: no more apache sites related error.

-- The easy way --
- Apply the patch, and copy the koha-create into an Apache 2.4 Debian-based distro
- Create a test instance using the koha-create script you just copied:
 $ ./koha-create --create-db testlibrary
> SUCCESS: no more apache sites related error.

2nd step: the rest of the touched scripts keep working as usual

koha-disable
koha-dump
koha-enable
koha-list
koha-remove
koha-restart-zebra
koha-stop-zebra
koha-start-zebra

They should all keep working. Can be tested "the easy way" too.

Then sign on the patch.

Note: there might be another issues regarding Apache 2.4 deployments like the need for

 $ a2enmod access_compat

and perhaps some directory permissions tweak, which I think should be properly
documented on the install instructions.

Regards
To+

Sponsored-by: Universidad Nacional de Cordoba
---
 debian/scripts/koha-create        | 62 ++++++++++++++++++++++++++++++---------
 debian/scripts/koha-disable       |  6 ++--
 debian/scripts/koha-dump          |  5 ++--
 debian/scripts/koha-enable        |  6 ++--
 debian/scripts/koha-list          |  3 +-
 debian/scripts/koha-remove        |  7 +++--
 debian/scripts/koha-restart-zebra |  3 +-
 debian/scripts/koha-start-zebra   |  3 +-
 debian/scripts/koha-stop-zebra    |  3 +-
 9 files changed, 72 insertions(+), 26 deletions(-)

diff --git a/debian/scripts/koha-create b/debian/scripts/koha-create
index 826163c..a96cf3e 100755
--- a/debian/scripts/koha-create
+++ b/debian/scripts/koha-create
@@ -123,6 +123,50 @@ getinstancemysqldatabase() {
     xmlstarlet sel -t -v 'yazgfs/config/database' "/etc/koha/sites/$1/koha-conf.xml"
 }
 
+check_apache_config()
+{
+
+    # Check that mpm_itk is installed and enabled
+    if ! /usr/sbin/apachectl -M 2> /dev/null | grep -q 'mpm_itk'; then
+        # Check Apache version
+        APACHE_DISABLE_MPM_MSG=""
+        if /usr/sbin/apache2ctl -v | grep -q "Server version: Apache/2.4"; then
+            # mpm_event or mpm_worker need to be disabled first. mpm_itk depends
+            # on mpm_prefork, which is enabled if needed. See
+            # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=734865
+            if /usr/sbin/apachectl -M 2> /dev/null | grep -q 'mpm_event'; then
+                APACHE_DISABLE_MPM_MSG=" sudo a2dismod mpm_event ;"
+            elif /usr/sbin/apachectl -M 2> /dev/null | grep -q 'mpm_worker'; then
+                APACHE_DISABLE_MPM_MSG=" sudo a2dismod mpm_worker ;"
+            # else mpm_prefork: a2enmod mpm_itk works
+            fi
+        # else Apache 2.2: a2enmod mpm_itk works
+        fi
+
+        cat 1>&2  <<EOM
+
+Koha requires mpm_itk to be enabled within Apache in order to run.
+Typically this can be enabled with:
+
+   $APACHE_DISABLE_MPM_MSG sudo a2enmod mpm_itk
+EOM
+
+        die
+    fi
+
+    # Check that mod_rewrite is installed and enabled.
+    if ! /usr/sbin/apachectl -M 2> /dev/null | grep -q 'rewrite_module'; then
+        cat 1>&2  <<EOM
+
+Koha requires mod_rewrite to be enabled within Apache in order to run.
+Typically this can be enabled with:
+
+    sudo a2enmod rewrite
+EOM
+        die
+    fi
+}
+
 set_biblios_indexing_mode()
 {
     local indexing_mode=$1
@@ -373,7 +417,7 @@ elif [ "$CLO_MEMCACHED_SERVERS" != "" ] || \
 
 Error: you provided memcached configuration switches but memcached is not enabled.
 Please set USE_MEMCACHED="yes" on /etc/koha/koha-sites.conf or use the
---use-memcached optio switch to enable it.
+--use-memcached option switch to enable it.
 
 EOF`
 
@@ -391,18 +435,8 @@ then
     die "This script must be run with root privileges."
 fi
 
-# Check that mod_rewrite is installed so we can bail out if it's not.
-if ! /usr/sbin/apachectl -M 2> /dev/null | grep -q 'rewrite_module'
-then
-    cat 1>&2  <<EOM
-
-Koha requires mod_rewrite to be enabled within Apache in order to run.
-Typically this can be enabled with:
-
-    sudo a2enmod rewrite
-EOM
-    die
-fi
+# Check everything is ok with Apache, die otherwise
+check_apache_config
 
 opacdomain="$OPACPREFIX$name$OPACSUFFIX$DOMAIN"
 intradomain="$INTRAPREFIX$name$INTRASUFFIX$DOMAIN"
@@ -493,7 +527,7 @@ eof
 
     # Generate and install Apache site-available file and log dir.
     generate_config_file apache-site.conf.in \
-        "/etc/apache2/sites-available/$name"
+        "/etc/apache2/sites-available/$name.conf"
     mkdir "/var/log/koha/$name"
     chown "$username:$username" "/var/log/koha/$name"
 
diff --git a/debian/scripts/koha-disable b/debian/scripts/koha-disable
index 75e3997..91e31b6 100755
--- a/debian/scripts/koha-disable
+++ b/debian/scripts/koha-disable
@@ -34,13 +34,14 @@ warn()
 is_enabled()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if ! is_instance $instancename; then
         return 1
     fi
 
     if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
-            "/etc/apache2/sites-available/$instancename" ; then
+            "$instancefile" ; then
         return 1
     else
         return 0
@@ -63,10 +64,11 @@ is_instance()
 disable_instance()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if is_enabled $instancename; then
         sed -i 's:^\s*#\(\s*Include /etc/koha/apache-shared-disable.conf\)$:\1:' \
-          "/etc/apache2/sites-available/$instancename"
+          "$instancefile"
         return 0
     else
         return 1
diff --git a/debian/scripts/koha-dump b/debian/scripts/koha-dump
index 02aeb93..fb770d4 100755
--- a/debian/scripts/koha-dump
+++ b/debian/scripts/koha-dump
@@ -54,14 +54,15 @@ mysqldump --databases --host="$mysqlhost" \
 chown "root:$name-koha" "$dbdump"
 chmod g+r "$dbdump"
 
+instancefile="$name.conf"
 
 # Dump configs, logs, etc.
 metadump="$backupdir/$name-$date.tar.gz"
 echo "* configs, logs to $metadump"
 tar -C / -czf "$metadump" \
     "etc/koha/sites/$name" \
-    "etc/apache2/sites-available/$name" \
-    "etc/apache2/sites-enabled/$name" \
+    "etc/apache2/sites-available/$instancefile" \
+    "etc/apache2/sites-enabled/$instancefile" \
     "var/lib/koha/$name" \
     "var/log/koha/$name"
 
diff --git a/debian/scripts/koha-enable b/debian/scripts/koha-enable
index c0bbfa2..b5f0cd2 100755
--- a/debian/scripts/koha-enable
+++ b/debian/scripts/koha-enable
@@ -34,13 +34,14 @@ warn()
 is_enabled()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if ! is_instance $instancename; then
         return 1
     fi
 
     if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
-            "/etc/apache2/sites-available/$instancename" ; then
+            "$instancefile" ; then
         return 1
     else
         return 0
@@ -63,10 +64,11 @@ is_instance()
 enable_instance()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if ! is_enabled $instancename; then
         sed -i 's:^\(\s*Include /etc/koha/apache-shared-disable.conf\)$:#\1:' \
-            "/etc/apache2/sites-available/$instancename"
+            "$instancefile"
         return 0
     else
         return 1
diff --git a/debian/scripts/koha-list b/debian/scripts/koha-list
index 445a22a..ea8ae4b 100755
--- a/debian/scripts/koha-list
+++ b/debian/scripts/koha-list
@@ -28,9 +28,10 @@ die()
 is_enabled()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if grep '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
-            "/etc/apache2/sites-available/$instancename" > /dev/null
+            "$instancefile" > /dev/null
     then
         return 1
     else
diff --git a/debian/scripts/koha-remove b/debian/scripts/koha-remove
index 3fa5ef1..40bb3f6 100755
--- a/debian/scripts/koha-remove
+++ b/debian/scripts/koha-remove
@@ -68,8 +68,11 @@ eof
     
     # If the daemon is not running already, we don't want to fail this loop. So bin the result code if this fails.
     koha-stop-zebra $name || /bin/true
-    [ -f "/etc/apache2/sites-available/$name" ]  && \
-        rm "/etc/apache2/sites-available/$name"
+
+    instancefile="$name.conf"
+
+    [ -f "/etc/apache2/sites-available/$instancefile" ]  && \
+        rm "/etc/apache2/sites-available/$instancefile"
     [ -f "/etc/koha/sites/$name/koha-conf.xml" ] && \
         rm "/etc/koha/sites/$name/koha-conf.xml"
     [ -f "/etc/koha/sites/$name/zebra-biblios.cfg" ] && \
diff --git a/debian/scripts/koha-restart-zebra b/debian/scripts/koha-restart-zebra
index 024251e..8b4b681 100755
--- a/debian/scripts/koha-restart-zebra
+++ b/debian/scripts/koha-restart-zebra
@@ -32,13 +32,14 @@ warn()
 is_enabled()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if ! is_instance $instancename; then
         return 1
     fi
 
     if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
-            "/etc/apache2/sites-available/$instancename" ; then
+            "$instancefile" ; then
         return 1
     else
         return 0
diff --git a/debian/scripts/koha-start-zebra b/debian/scripts/koha-start-zebra
index f63ab42..069b31a 100755
--- a/debian/scripts/koha-start-zebra
+++ b/debian/scripts/koha-start-zebra
@@ -32,13 +32,14 @@ warn()
 is_enabled()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if ! is_instance $instancename; then
         return 1
     fi
 
     if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
-            "/etc/apache2/sites-available/$instancename" ; then
+            "$instancefile" ; then
         return 1
     else
         return 0
diff --git a/debian/scripts/koha-stop-zebra b/debian/scripts/koha-stop-zebra
index e60f2b3..2c8b726 100755
--- a/debian/scripts/koha-stop-zebra
+++ b/debian/scripts/koha-stop-zebra
@@ -32,13 +32,14 @@ warn()
 is_enabled()
 {
     local instancename=$1
+    local instancefile="/etc/apache2/sites-available/$instancename.conf"
 
     if ! is_instance $instancename; then
         return 1
     fi
 
     if grep -q '^[[:space:]]*Include /etc/koha/apache-shared-disable.conf' \
-            "/etc/apache2/sites-available/$instancename" ; then
+            "$instancefile" ; then
         return 1
     else
         return 0
-- 
1.9.1



More information about the Koha-patches mailing list