Koha/debian/scripts/koha-remove
Robin Sheat 1f5e92fec6 Bug 12312 - correctly upgrade under Apache 2.2
As the way we need to reference Apache instance names has now changed
between 2.2 and 2.4, we need to try it out both ways to make sure we get
it right.

This also allows koha-create/koha-disable to try the .conf version of
the name if the first one doesn't work.

To test:
* Create an instance on an Apache 2.2 system with koha < 3.16
* Upgrade to 3.16 with this patch, saying 'yes' to the renaming question
** Make sure you don't see the warning: Warning: problem enabling $site
   in Apache
* Do a 'service apache2 restart'
* Make sure you can still access the instance
* Make sure that /etc/apache2/sites-enabled/instance.conf exists as a link
  to /etc/apache2/sites-available/instance.conf
* Check that koha-create and koha-remove behave like you'd expect.

Note:
* If you need to make debconf forget that it asked you the question
  about renaming so that it'll do it again, then run:
  echo "unregister koha-common/rename-apache-vhost-files" | sudo debconf-communicate koha-common
* 'debconf-show koha-common' will show you the current debconf
  configuration.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-05-26 03:41:55 +00:00

110 lines
3.9 KiB
Bash
Executable file

#!/bin/sh
#
# koha-remove -- Remove a Koha instance.
# Copyright 2010 Catalyst IT, Ltd
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
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
args=$(getopt -l keep-mysql -o k -n $0 -- "$@")
eval set -- $args
while [ ! -z "$1" ]
do
case "$1" in
-k|--keep-mysql) keepmysql=1; shift;;
--) shift; break;;
*) break;;
esac
shift
done
NAMES="$@"
SITECONFDIR="/etc/koha/sites"
# There has to be a better way of excluding '.' from find. But this works.
INSTANCES=$(get_instances)
if [ -z $NAMES ] ; then
echo "Please specify a Koha instance name. Your choices are:"
echo "$INSTANCES"
exit 1
fi
for name in $NAMES
do
# Does the directory (ie instance) name exist?
if [ ! -d $SITECONFDIR/$name ] ; then
echo Koha configuration directory for instance \"$name\" does not exist, please specify a valid Koha instance
exit 1
fi
echo "Removing Koha instance $name"
mysql_hostname="localhost"
if [ "$keepmysql" != "1" ]
then
# The grant creates the user in case it isn't, we don't want our loop to fail if it has already being deleted.
mysql --defaults-extra-file=/etc/mysql/koha-common.cnf <<eof
GRANT USAGE ON \`koha_$name\`.* TO \`koha_$name\`@\`%\`;
GRANT USAGE ON \`koha_$name\`.* TO \`koha_$name\`@\`$mysql_hostname\`;
DROP USER \`koha_$name\`@\`%\`;
DROP USER \`koha_$name\`@\`$mysql_hostname\`;
DROP DATABASE IF EXISTS \`koha_$name\`;
FLUSH PRIVILEGES;
eof
fi #`
# 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
instancefile=$(get_apache_config_for $name)
[ -f "$instancefile" ] && \
rm "$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" ] && \
rm "/etc/koha/sites/$name/zebra-biblios.cfg"
[ -f "/etc/koha/sites/$name/zebra-biblios-dom.cfg" ] && \
rm "/etc/koha/sites/$name/zebra-biblios-dom.cfg"
[ -f "/etc/koha/sites/$name/zebra-authorities.cfg" ] && \
rm "/etc/koha/sites/$name/zebra-authorities.cfg"
[ -f "/etc/koha/sites/$name/zebra-authorities-dom.cfg" ] && \
rm "/etc/koha/sites/$name/zebra-authorities-dom.cfg"
[ -f "/etc/koha/sites/$name/zebra.passwd" ] && \
rm "/etc/koha/sites/$name/zebra.passwd"
# Maybe a user has left something in the config directory they want to keep? We won't delete it here, nor throw an error if the have.
[ -d "/etc/koha/sites/$name" ] && \
rmdir --ignore-fail-on-non-empty "/etc/koha/sites/$name"
[ -d "/var/lock/koha/$name" ] && \
rm -r "/var/lock/koha/$name"
[ -d "/var/log/koha/$name" ] && \
rm -r "/var/log/koha/$name"
[ -d "/var/run/koha/$name" ] && \
rm -r "/var/run/koha/$name"
getent passwd "$name-koha" > /dev/null && deluser --quiet "$name-koha"
# in case the site has already been disabled, we don't want to break the loop now.
a2dissite "$name" > /dev/null 2>&1 || a2dissite "${name}.conf" > /dev/null 2>&1 || /bin/true
done
service apache2 restart