Add koha-create, a script to create a new Koha instance.
Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
parent
483ef82cd3
commit
1285d5a133
|
|
@ -0,0 +1,175 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# koha-create -- Create a new 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
|
||||
|
||||
|
||||
die() {
|
||||
echo "$@" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
|
||||
generate_config_file() {
|
||||
touch "$2"
|
||||
chown "root:$username" "$2"
|
||||
chmod 0640 "$2"
|
||||
sed -e "s/__KOHASITE__/$name/g" \
|
||||
-e "s/__OPACPORT__/80/g" \
|
||||
-e "s/__INTRAPORT__/$INTRAPORT/g" \
|
||||
-e "s/__OPACSERVER__/$domain/g" \
|
||||
-e "s/__INTRASERVER__/$intradomain/g" \
|
||||
-e "s/__ZEBRA_PASS__/$zebrapwd/g" \
|
||||
-e "s/__DB_NAME__/$mysqldb/g" \
|
||||
-e "s/__DB_USER__/$mysqluser/g" \
|
||||
-e "s/__DB_PASS__/$mysqlpwd/g" \
|
||||
-e "s/__UNIXUSER__/$username/g" \
|
||||
-e "s/__UNIXGROUP__/$username/g" \
|
||||
"/etc/koha/$1" > "$2"
|
||||
}
|
||||
|
||||
|
||||
# Set defaults and read config file, if it exists.
|
||||
DOMAIN=""
|
||||
INTRAPORT="8080"
|
||||
INTRAPREFIX=""
|
||||
INTRASUFFIX=""
|
||||
DEFAULTSQL=""
|
||||
if [ -e /etc/koha/koha-sites.conf ]
|
||||
then
|
||||
. /etc/koha/koha-sites.conf
|
||||
fi
|
||||
|
||||
|
||||
# Parse command line.
|
||||
[ "$#" = 1 ] || die "Usage: $0 instancename"
|
||||
name="$1"
|
||||
domain="$name$DOMAIN"
|
||||
if [ "$INTRAPORT" = 80 ] || [ "$INTRAPORT" = "" ]
|
||||
then
|
||||
intradomain="$INTRAPREFIX$name$INTRASUFFIX$DOMAIN"
|
||||
else
|
||||
intradomain="$INTRAPREFIX$name$INTRASUFFIX$DOMAIN:$INTRAPORT"
|
||||
fi
|
||||
|
||||
|
||||
# Create new user and group.
|
||||
username="$name-koha"
|
||||
if getent passwd "$username" > /dev/null
|
||||
then
|
||||
die "User $username already exists."
|
||||
fi
|
||||
if getent group "$username" > /dev/null
|
||||
then
|
||||
die "Group $username already exists."
|
||||
fi
|
||||
adduser --no-create-home --disabled-login --gecos "Koha instance $username" \
|
||||
--quiet "$username"
|
||||
|
||||
|
||||
# Create the site-specific directories.
|
||||
mkdir "/etc/koha/sites/$name"
|
||||
|
||||
mkdir "/var/lock/koha/$name"
|
||||
mkdir "/var/lock/koha/$name/authorities"
|
||||
mkdir "/var/lock/koha/$name/biblios"
|
||||
chown -R "root:$username" "/var/lock/koha/$name"
|
||||
chmod -R g+w "/var/lock/koha/$name"
|
||||
[ -d "/var/spool/koha/$name" ] || mkdir "/var/spool/koha/$name"
|
||||
|
||||
install -d -o "$username" -g "$username" "/var/lib/koha/$name"
|
||||
install -d -o "$username" -g "$username" "/var/lib/koha/$name/authorities"
|
||||
install -d -o "$username" -g "$username" "/var/lib/koha/$name/biblios"
|
||||
install -d -o "$username" -g "$username" "/var/lib/koha/$name/biblios/key"
|
||||
install -d -o "$username" -g "$username" "/var/lib/koha/$name/biblios/register"
|
||||
install -d -o "$username" -g "$username" "/var/lib/koha/$name/biblios/shadow"
|
||||
|
||||
install -d "/var/run/koha/$name/authorities"
|
||||
install -d "/var/run/koha/$name/biblios"
|
||||
|
||||
|
||||
# Generate Zebra database password.
|
||||
zebrapwd="$(pwgen -1)"
|
||||
|
||||
|
||||
# Set up MySQL database for this instance.
|
||||
mysqldb="koha_$name"
|
||||
mysqluser="koha_$name"
|
||||
mysqlpwd="$(pwgen -1)"
|
||||
mysql --defaults-extra-file=/etc/mysql/debian.cnf <<eof
|
||||
CREATE DATABASE $mysqldb;
|
||||
CREATE USER '$mysqluser' IDENTIFIED BY '$mysqlpwd';
|
||||
GRANT ALL PRIVILEGES ON $mysqldb.* TO '$mysqluser';
|
||||
FLUSH PRIVILEGES;
|
||||
eof
|
||||
|
||||
|
||||
# Use the default database content if that exists.
|
||||
if [ -e "$DEFAULTSQL" ]
|
||||
then
|
||||
# Populate the database with default content.
|
||||
zcat "$DEFAULTSQL" |
|
||||
sed "s/__KOHASITE__/$name/g" |
|
||||
mysql --defaults-extra-file=/etc/mysql/debian.cnf
|
||||
|
||||
|
||||
# Change the default user's password.
|
||||
staffpass="$(pwgen -1)"
|
||||
staffdigest=$(echo -n "$staffpass" |
|
||||
perl -e '
|
||||
use Digest::MD5 qw(md5_base64);
|
||||
while (<>) { print md5_base64($_), "\n"; }')
|
||||
mysql --defaults-extra-file=/etc/mysql/debian.cnf <<eof
|
||||
USE \`$mysqldb\`;
|
||||
UPDATE borrowers
|
||||
SET password = '$staffdigest'
|
||||
WHERE borrowernumber = 3;
|
||||
eof
|
||||
echo "staff user password is '$staffpass' but keep that secret"
|
||||
else
|
||||
echo "Koha instance is empty, no staff user created."
|
||||
fi
|
||||
|
||||
|
||||
# Generate and install Apache site-available file and log dir.
|
||||
generate_config_file apache-site.conf.in "/etc/apache2/sites-available/$name"
|
||||
mkdir "/var/log/koha/$name"
|
||||
chown "$username:$username" "/var/log/koha/$name"
|
||||
|
||||
|
||||
# Generate and install main Koha config file.
|
||||
generate_config_file koha-conf-site.xml.in \
|
||||
"/etc/koha/sites/$name/koha-conf.xml"
|
||||
|
||||
|
||||
# Generate and install Zebra config files.
|
||||
generate_config_file zebra-biblios-site.cfg.in \
|
||||
"/etc/koha/sites/$name/zebra-biblios.cfg"
|
||||
generate_config_file zebra-authorities-site.cfg.in \
|
||||
"/etc/koha/sites/$name/zebra-authorities.cfg"
|
||||
generate_config_file zebra-authorities-dom-site.cfg.in \
|
||||
"/etc/koha/sites/$name/zebra-authorities-dom.cfg"
|
||||
|
||||
|
||||
# Reconfigure Apache.
|
||||
a2ensite "$name"
|
||||
service apache2 restart
|
||||
|
||||
# Start Zebra.
|
||||
koha-start-zebra "$name"
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
.\" 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/>.
|
||||
.TH KOHA-CREATE 8 2010-05-03 Koha
|
||||
.SH NAME
|
||||
koha-create \- create a new Koha instance
|
||||
.SH SYNOPSIS
|
||||
.B koha-create
|
||||
.IR instance-name
|
||||
.SH DESCRIPTION
|
||||
.B koha-create
|
||||
creates a new Koha instance.
|
||||
It is meant for a site that provides Koha hosting,
|
||||
and serves several sites from the same host.
|
||||
.PP
|
||||
The name of the instance is used as the domain name for Apache,
|
||||
and Unix user and group names, and MySQL username and table names
|
||||
are derived from it.
|
||||
Unix user and group are named
|
||||
.IR instance -koha.
|
||||
MySQL username is
|
||||
.RI koha_ instance ,
|
||||
and table is
|
||||
.RI koha_ instance .
|
||||
.PP
|
||||
The Unix user has logins disabled.
|
||||
The password for MySQL is generated randomly, and printed to the terminal.
|
||||
.PP
|
||||
The instance name is used as the domain name (ServerName) for Apache.
|
||||
The open catalog (OPAC), for library customers, is on port 80.
|
||||
The librarian intranet interface is on port 8080.
|
||||
.PP
|
||||
After the Koha instance is created, it is ready to be used,
|
||||
but the librarian needs to log in via the intranet and configure things.
|
||||
.PP
|
||||
Several configuration variables are available for adjusting this behavior.
|
||||
The variables are put into
|
||||
.B /etc/koha/koha-site.conf .
|
||||
The following variables are obeyed:
|
||||
.PP
|
||||
.TP
|
||||
.B DOMAIN
|
||||
The domain to append to the instance name, for Apache ServerName.
|
||||
Default is empty.
|
||||
The value must begin with a period.
|
||||
.TP
|
||||
.B INTRAPORT
|
||||
The port for the intranet.
|
||||
If you set this to empty or 80, then you
|
||||
.I must
|
||||
also define
|
||||
.B INTRAPREFIX
|
||||
or
|
||||
.BR INTRASUFFIX .
|
||||
.TP
|
||||
.B INTRAPREFIX
|
||||
This is inserted before the instance name when forming Apache ServerName.
|
||||
For subdomains, make sure it ends with a period.
|
||||
.TP
|
||||
.B INTRASUFFIX
|
||||
This is inserted after the instance name,
|
||||
but before the domain name,
|
||||
when forming Apache ServerName.
|
||||
.TP
|
||||
.B DEFAULTSQL
|
||||
An SQL file (possibly compressed with gzip) that can be fed to
|
||||
.BR mysql (1)
|
||||
to initialize the database after it has been created.
|
||||
Might be created using
|
||||
.BR koha-dump-defaults (8).
|
||||
.SH FILES
|
||||
.TP
|
||||
.B /etc/koha/koha-site.conf
|
||||
Configuration variables are read from this file, if it exists.
|
||||
.SH BUGS
|
||||
The program is a bit fragile.
|
||||
If something goes wrong, it does not clean up after itself.
|
||||
.SH EXAMPLE
|
||||
To create a new Koha instance:
|
||||
.PP
|
||||
.RS
|
||||
koha-create hslibrary
|
||||
.RE
|
||||
.PP
|
||||
The public catalog is now at
|
||||
.I http://hslibrary/
|
||||
and the librarian interface at
|
||||
.IR http://hslibrary:8080/ .
|
||||
.PP
|
||||
To use full domain names, and have the intranet interface on port 80, but
|
||||
on a different domain name, add the following variables to the
|
||||
configuration file:
|
||||
.PP
|
||||
.nf
|
||||
.RS
|
||||
DOMAIN=".example.com"
|
||||
INTRAPORT=""
|
||||
INTRASUFFIX="-intra"
|
||||
.RE
|
||||
.fi
|
||||
.PP
|
||||
This will result in the addresses for the public and intranet interfaces
|
||||
becoming these:
|
||||
.PP
|
||||
.nf
|
||||
.RS
|
||||
http://hslibrary.example.com/
|
||||
http://hslibrary-intra.example.com/
|
||||
.RE
|
||||
.fi
|
||||
.PP
|
||||
Configuration changes only apply to instances created afterwards.
|
||||
.SH "SEE ALSO"
|
||||
.BR koha-remove (8).
|
||||
.PP
|
||||
.B http://koha-community.org/
|
||||
|
||||
Loading…
Reference in New Issue