180faa9260
If koha-common is started when Zebra log files are owned by root it will fail to start without any useful message (since Zebra can't write errors in log files because it lacks permissions to do so). This patch creates empty log files and ensure they have correct permissions. I can't pin-point why log files gets owned root, but I suspect it has something to do with Zebra crashing and logrotate, but this is just theory. We have seen this behaviour since koha 3.1 every few months, and every time it happends we have root owned logs and crashed Zebra so this patch will at least help sites which have some kind of automatic koha-common start if it's not running. Signed-off-by: Robin Sheat <robin@catalyst.net.nz> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
140 lines
3.5 KiB
Bash
Executable file
140 lines
3.5 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# koha-start-zebra - Start Zebra for named Koha instances
|
|
# 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
|
|
|
|
die()
|
|
{
|
|
echo "$@" 1>&2
|
|
exit 1
|
|
}
|
|
|
|
warn()
|
|
{
|
|
echo "$@" 1>&2
|
|
}
|
|
|
|
is_enabled()
|
|
{
|
|
local instancename=$1
|
|
|
|
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
|
|
return 1
|
|
else
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
is_instance()
|
|
{
|
|
local instancename=$1
|
|
|
|
if find /etc/koha/sites -mindepth 1 -maxdepth 1 \
|
|
-type d -printf '%f\n'\
|
|
| grep -q -x $instancename ; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
is_zebra_running()
|
|
{
|
|
local instancename=$1
|
|
|
|
if daemon --name="$instancename-koha-zebra" \
|
|
--user="$instancename-koha.$instancename-koha" \
|
|
--running ; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
start_zebra_instance()
|
|
{
|
|
local instancename=$1
|
|
|
|
if is_enabled $instancename; then
|
|
echo "Starting Zebra server for $instancename"
|
|
touch "/var/log/koha/$instancename/zebra-error.log" \
|
|
"/var/log/koha/$instancename/zebra.log" \
|
|
"/var/log/koha/$instancename/zebra-output.log"
|
|
chown "$instancename-koha:$instancename-koha" \
|
|
"/var/log/koha/$instancename/zebra-error.log" \
|
|
"/var/log/koha/$instancename/zebra.log" \
|
|
"/var/log/koha/$instancename/zebra-output.log"
|
|
daemon \
|
|
--name="$instancename-koha-zebra" \
|
|
--errlog="/var/log/koha/$instancename/zebra-error.log" \
|
|
--stdout="/var/log/koha/$instancename/zebra.log" \
|
|
--output="/var/log/koha/$instancename/zebra-output.log" \
|
|
--verbose=1 \
|
|
--respawn \
|
|
--delay=30 \
|
|
--user="$instancename-koha.$instancename-koha" \
|
|
-- \
|
|
zebrasrv \
|
|
-v none,fatal,warn \
|
|
-f "/etc/koha/sites/$instancename/koha-conf.xml" && \
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
usage()
|
|
{
|
|
local scriptname=$0
|
|
cat <<EOF
|
|
Starts Zebra for Koha instances.
|
|
|
|
Usage: $scriptname instancename1 instancename2...
|
|
|
|
EOF
|
|
}
|
|
|
|
# Parse command line.
|
|
#[ $# -ge 1 ] || ( usage ; die "Missing instance name..." )
|
|
|
|
# Loop through the instance names
|
|
for name in "$@"
|
|
do
|
|
if is_instance $name ; then
|
|
if is_enabled $name ; then
|
|
if ! is_zebra_running $name; then
|
|
if ! start_zebra_instance $name; then
|
|
warn "Something went wrong starting Zebra for $name."
|
|
fi
|
|
else
|
|
warn "Zebra already running for instance $name."
|
|
fi
|
|
else
|
|
warn "Instance $name disabled. No action taken."
|
|
fi
|
|
else
|
|
warn "Unknown instance $name."
|
|
fi
|
|
done
|
|
|
|
exit 0
|