From 1087d4bffa42eda25106b400306823c4b776d865 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Mon, 16 Dec 2013 14:32:40 -0300 Subject: [PATCH] Bug 11404: Apache 2.4 expects the sites definition files use the sufix '.conf' 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 < /dev/null | grep -q 'rewrite_module'; then + cat 1>&2 < /dev/null | grep -q 'rewrite_module' -then - cat 1>&2 < /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