Bug 8566: [SIGNED-OFF] Enable koha-foreach to insert the instancename into commands
[koha_fer] / debian / scripts / koha-create
index c277f08..841ef86 100755 (executable)
 
 set -e
 
+# include helper functions
+if [ -f "/usr/share/koha/bin/koha-functions.sh" ]; then
+    . "/usr/share/koha/bin/koha-functions.sh"
+else
+    echo "Error: /usr/share/koha/bin/koha-functions.sh not present." 1>&2
+    exit 1
+fi
+
 usage()
 {
     local scriptname=$0
@@ -63,11 +71,6 @@ Note: the instance name cannot be longer that 11 chars.
 EOF
 }
 
-die() {
-    echo "$@" 1>&2
-    exit 1
-}
-
 # UPPER CASE VARIABLES - from configfile or default value
 # lower case variables - generated within this script
 generate_config_file() {
@@ -123,6 +126,63 @@ 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
+
+    # Check that the CGI module is installed and enabled
+    # (Apache 2.4 may not have it by default.)
+    if ! /usr/sbin/apachectl -M 2> /dev/null | grep -q 'cgi_module'; then
+        cat 1>&2 << EOM
+Koha requires mod_cgi to be enabled within Apache in order to run.
+Typically this can be enabled with:
+
+    sudo a2enmod cgi
+EOM
+        die
+    fi
+
+}
+
 set_biblios_indexing_mode()
 {
     local indexing_mode=$1
@@ -254,7 +314,7 @@ then
     . /etc/koha/koha-sites.conf
 fi
 
-[ $# -ge 2 ] && [ $# -le 16 ] || ( usage ; die "Error: wrong parameters" )
+[ $# -ge 1 ] && [ $# -le 16 ] || ( usage ; die "Error: wrong parameters" )
 
 TEMP=`getopt -o chrpm:l:d:f:b:a: -l create-db,request-db,populate-db,use-db,use-memcached,help,marcflavor:,auth-idx:,biblio-idx:,zebralang:,defaultsql:,configfile:,passwdfile:,database:,adminuser:,memcached-servers:,memcached-prefix:, \
      -n "$0" -- "$@"`
@@ -373,7 +433,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 +451,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 +543,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"
 
@@ -582,7 +632,12 @@ fi
 if [ "$op" = create ] || [ "$op" = populate ] || [ "$op" = use ]
 then
     # Reconfigure Apache.
-    a2ensite "$name"
+    if ! {
+        a2ensite "$name" > /dev/null 2>&1 ||
+            a2ensite "${name}.conf" > /dev/null 2>&1
+    }; then
+        echo "Warning: problem enabling $name in Apache" >&2
+    fi
     service apache2 restart
 
     # Start Zebra.