@@ -, +, @@ --- Makefile.PL | 15 ++++++++- misc/bin/koha-plack.sh | 70 ++++++++++++++++++++++++-------------- rewrite-config.PL | 1 + skel/var/lock/koha/plack/README | 1 + skel/var/run/koha/plack/README | 1 + 5 files changed, 61 insertions(+), 27 deletions(-) mode change 100644 => 100755 misc/bin/koha-plack.sh mode change 100644 => 100755 misc/bin/koha.psgi create mode 100644 skel/var/lock/koha/plack/README create mode 100644 skel/var/run/koha/plack/README --- a/Makefile.PL +++ a/Makefile.PL @@ -196,6 +196,14 @@ Directory for Zebra's data files. Directory for Zebra's UNIX-domain sockets. +=item PLACK_LOCK_DIR + +Directory for Plack's lock files. + +=item PLACK_RUN_DIR + +Directory for Plack's UNIX-domain sockets. + =item MISC_DIR Directory for for miscellaenous scripts, among other @@ -298,7 +306,8 @@ my $target_map = { './skel' => 'NONE', './skel/var/log/koha' => { target => 'LOG_DIR', trimdir => -1 }, './skel/var/spool/koha' => { target => 'BACKUP_DIR', trimdir => -1 }, - './skel/var/run/koha/plack' => { target => 'PLACK_RUN_DIR', trimdir => -1 }, + './skel/var/run/koha/plack' => { target => 'PLACK_RUN_DIR', trimdir => -1 }, + './skel/var/lock/koha/plack' => { target => 'PLACK_LOCK_DIR', trimdir => 6 }, './skel/var/run/koha/zebradb' => { target => 'ZEBRA_RUN_DIR', trimdir => -1 }, './skel/var/lock/koha/zebradb/authorities' => { target => 'ZEBRA_LOCK_DIR', trimdir => 6 }, './skel/var/lib/koha/zebradb/authorities/key' => { target => 'ZEBRA_DATA_DIR', trimdir => 6 }, @@ -598,6 +607,7 @@ my %test_suite_override_dirs = ( ZEBRA_LOCK_DIR => ['var', 'lock', 'zebradb'], ZEBRA_DATA_DIR => ['var', 'lib', 'zebradb'], ZEBRA_RUN_DIR => ['var', 'run', 'zebradb'], + PLACK_LOCK_DIR => ['var', 'lock', 'plack'], PLACK_RUN_DIR => ['var', 'run', 'plack'], ); @@ -1316,6 +1326,7 @@ sub get_target_directories { $dirmap{'BACKUP_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'spool'); $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb'); $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb'); + $dirmap{'PLACK_LOCK_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lock', 'plack'); $dirmap{'PLACK_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'plack'); } elsif ($mode eq 'dev') { my $curdir = File::Spec->rel2abs(File::Spec->curdir()); @@ -1347,6 +1358,7 @@ sub get_target_directories { $dirmap{'BACKUP_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'spool'); $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb'); $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb'); + $dirmap{'PLACK_LOCK_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'lock', 'plack'); $dirmap{'PLACK_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'plack'); } else { # mode is standard, i.e., 'fhs' @@ -1370,6 +1382,7 @@ sub get_target_directories { $dirmap{'BACKUP_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'spool', $package); $dirmap{'ZEBRA_DATA_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'lib', $package, 'zebradb'); $dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'zebradb'); + $dirmap{'PLACK_LOCK_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'lock', $package, 'plack'); $dirmap{'PLACK_RUN_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'plack'); } --- a/misc/bin/koha-plack.sh +++ a/misc/bin/koha-plack.sh @@ -1,7 +1,7 @@ -#!/bin/sh -e - +#!/bin/bash + # This file is part of Koha. -# +# # Koha 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 @@ -15,10 +15,13 @@ # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA -### BEGIN INIT INFO# Provides: koha-plack +### BEGIN INIT INFO +# Provides: koha-plack-daemon # Required-Start: $syslog $remote_fs -# Required-Stop: $syslog $remote_fs# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6# Short-Description: Plack server for Koha +# Required-Stop: $syslog $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Plack server daemon for Koha ### END INIT INFO export KOHA_CONF=__KOHA_CONF_DIR__/koha-conf.xml @@ -28,46 +31,61 @@ export LOGDIR=__LOG_DIR__ USER=__KOHA_USER__ GROUP=__KOHA_GROUP__ RUNDIR=__PLACK_RUN_DIR__ -PIDFILE=$RUNDIR/plack.pid +LOCKDIR=__PLACK_LOCK_DIR__ +PIDFILE=$LOCKDIR/plack.pid # Use one of these lines to choose between TCP port and UNIX socket listeners SOCKET=$RUNDIR/plack.sock #PORT=5000 +OTHERUSER='' +if [[ $EUID -eq 0 ]]; then + OTHERUSER="--user $USER --group $GROUP" +fi + case "$1" in start) - echo "Starting Koha Plack Daemon" + echo "Starting Plack Server" # create run and lock directories if needed; # /var/run and /var/lock are completely cleared at boot # on some platforms - if [ ! -d $RUNDIR ]; then + if [[ ! -d $RUNDIR ]]; then umask 022 mkdir -p $RUNDIR - if [ $EUID -eq 0 ]; then + if [[ $EUID -eq 0 ]]; then chown $USER:$GROUP $RUNDIR fi fi - - opt="$opt --access-log $LOGDIR/koha-access.log --error-log $LOGDIR/koha-error.log" - opt="$opt -M FindBin --max-requests 50 --workers 2 -E deployment" - if [ $SOCKET ]; then - opt="$opt --listen $SOCKET -D --pid $PIDFILE" - elif [ $PORT ]; then - opt="$opt --port $PORT -D --pid $PIDFILE" + if [[ ! -d $LOCKDIR ]]; then + umask 022 + mkdir -p $LOCKDIR + if [[ $EUID -eq 0 ]]; then + chown -R $USER:$GROUP $LOCKDIR fi - starman $opt __SCRIPT_DIR__/koha.psgi + fi - if [ $SOCKET ]; then - chown $USER:$GROUP $SOCKET - chmod 660 $SOCKET - fi - ;; + opt="$opt $OTHERUSER" + opt="$opt --access-log $LOGDIR/koha-access.log --error-log $LOGDIR/koha-error.log" + opt="$opt -M FindBin --max-requests 50 --workers 2 -E deployment" + if [ $SOCKET ]; then + opt="$opt --listen $SOCKET -D --pid $PIDFILE" + elif [ $PORT ]; then + opt="$opt --port $PORT -D --pid $PIDFILE" + fi + starman $opt __SCRIPT_DIR__/koha.psgi + + if [ $SOCKET ]; then + chown $USER:$GROUP $SOCKET + chmod 662 $SOCKET + fi + ;; stop) - start-stop-daemon --stop --pidfile $PIDFILE - ;; + echo "Stopping Plack Server" + start-stop-daemon --stop --pidfile $PIDFILE + ;; *) echo "Usage: koha-plack {start|stop}" exit 1 ;; -esac +esac --- a/rewrite-config.PL +++ a/rewrite-config.PL @@ -124,6 +124,7 @@ $prefix = $ENV{'INSTALL_BASE'} || "/usr"; '__ZEBRA_LOCK_DIR__' => "$prefix/var/lock/zebradb", '__ZEBRA_DATA_DIR__' => "$prefix/var/lib/zebradb", '__ZEBRA_RUN_DIR__' => "$prefix/var/run/zebradb", + '__PLACK_LOCK_DIR__' => "$prefix/var/lock/plack", '__PLACK_RUN_DIR__' => "$prefix/var/run/plack", '__ZEBRA_MARC_FORMAT__' => 'marc21', '__ZEBRA_LANGUAGE__' => 'en', --- a/skel/var/lock/koha/plack/README +++ a/skel/var/lock/koha/plack/README @@ -0,0 +1, @@ +Plack lock dir --- a/skel/var/run/koha/plack/README +++ a/skel/var/run/koha/plack/README @@ -0,0 +1, @@ +Plack Unix-domain sockets --