+++ /dev/null
-Bug 7844 - plack intranet tooling for developers
-
-koha.psgi example and plackup.sh script to run any Koha site
-intranet or opac interface under plack with optional multi-process
-Starman server
-
- plackup.sh site-name [intranet]
-
-site-name is used to find config /etc/koha/sites/site-name/koha-conf.xml
-
-All configuration is specified in koha.psgi, which you are welcomed to edit
-and tune according to your development needs (enable memcache, enable/disable
-debugging modules for plack and so on).
-
-For deployment of opac or intranet you would probably want to take a look
-in plackup.sh and enable starman as web server (which is pre-forking server
-written in perl) and put some web server in front of it to serve static web
-files (e.g. ngnix, apache)
-
-When you are happy with it, rename koha.psgi and plackup.sh it to site name
-and save it for safe-keeping.
-
-This commit message is included in patch as README.plack because it includes
-useful information for people using plack for first time.
-
-Test scenario:
-1. install plack and dependencies, as documented at
- http://wiki.koha-community.org/wiki/Plack
-
-2. start ./plackup.sh sitename i[ntranet]
-
-3. open intranet page http://localhost:5001/ and verify that it redirects
- to http://localhost:5001/cgi-bin/koha/mainpage.pl
-
-4. start ./plackup.sh sitename
-
-5. open OPAC http://localhost:5000/ and verify that it redirects to
- http://localhost:5000/cgi-bin/koha/opac-main.pl
-
-6. next step is to take a look into koha.psgi and enable additional
- debug modules, save file and reload page (plackup will reload
- code automatically)
+++ /dev/null
-#!/usr/bin/perl
-use Plack::Builder;
-use Plack::App::CGIBin;
-use lib qw( ./lib );
-use Plack::Middleware::Debug;
-use Plack::App::Directory;
-
-use CGI qw(-utf8 ); # we will lose -utf8 under plack
-{
- no warnings 'redefine';
- my $old_new = \&CGI::new;
- *CGI::new = sub {
- my $q = $old_new->( @_ );
- $CGI::PARAM_UTF8 = 1;
- Koha::Caches->flush_L1_caches();
- Koha::Cache::Memory::Lite->flush();
- return $q;
- };
-}
-
-BEGIN {
-
-# override configuration from startup script below:
-# (requires --reload option)
-
-$ENV{PLACK_DEBUG} = 1; # toggle debugging
-
-# memcache change requires restart
-$ENV{MEMCACHED_SERVERS} = "localhost:11211";
-#$ENV{MEMCACHED_DEBUG} = 0;
-
-$ENV{PROFILE_PER_PAGE} = 1; # reset persistent and profile counters after each page, like CGI
-#$ENV{INTRANET} = 1; # usually passed from script
-
-#$ENV{DBI_AUTOPROXY}='dbi:Gofer:transport=null;cache=DBI::Util::CacheMemory'
-
-} # BEGIN
-
-use C4::Context;
-use C4::Languages;
-use C4::Members;
-use C4::Boolean;
-use C4::Letters;
-use C4::Koha;
-use C4::XSLT;
-use Koha::DateUtils;
-use Koha::Caches;
-use Koha::Cache::Memory::Lite;
-use Koha::Patron::Categories;
-
-=for preload
-use C4::Tags; # FIXME
-=cut
-
-use Devel::Size 0.77; # 0.71 doesn't work for Koha
-my $watch_capture_regex = '(C4|Koha)';
-
-sub watch_for_size {
- my @watch =
- map { s/^.*$watch_capture_regex/$1/; s/\//::/g; s/\.pm$//; $_ } # fix paths
- grep { /$watch_capture_regex/ }
- keys %INC
- ;
- warn "# watch_for_size ",join(' ',@watch);
- return @watch;
-};
-
-my $CGI_ROOT = $ENV{INTRANET} ? $ENV{INTRANETDIR} : $ENV{OPACDIR};
-warn "# using Koha ", $ENV{INTRANET} ? 'intranet' : 'OPAC', " CGI from $CGI_ROOT\n";
-my $app=Plack::App::CGIBin->new(root => $CGI_ROOT)->to_app;
-my $home = sub {
- return [ 302, [ Location => '/cgi-bin/koha/' . ( $ENV{INTRANET} ? 'mainpage.pl' : 'opac-main.pl' ) ] ];
-};
-
-builder {
-
- # please don't use plugins which are under enable_if $ENV{PLACK_DEBUG} in production!
- # they are known to leek memory
- enable_if { $ENV{PLACK_DEBUG} } 'Debug', panels => [
- qw(Environment Response Timer Memory),
- # optional plugins (uncomment to enable) are sorted according to performance implact
-# [ 'Devel::Size', for => \&watch_for_size ], # https://github.com/dpavlin/p5-plack-devel-debug-devel-size
-# [ 'DBIProfile', profile => 2 ],
-# [ 'DBITrace', level => 1 ], # a LOT of fine-graded SQL trace
-# [ 'Profiler::NYTProf', exclude => [qw(.*\.css .*\.png .*\.ico .*\.js .*\.gif)] ],
- ];
-
- # don't enable this plugin in production, since stack traces reveal too much information
- # about system to potential attackers!
- enable_if { $ENV{PLACK_DEBUG} } 'StackTrace';
-
- # this enables plackup or starman to serve static files and provide working plack
- # setup without need for front-end web server to serve static files
- enable_if { $ENV{INTRANETDIR} } "Plack::Middleware::Static",
- path => qr{^/(intranet|opac)-tmpl/},
- root => "$ENV{INTRANETDIR}/koha-tmpl/";
-
- # + is required so Plack doesn't try to prefix Plack::Middleware::
- enable "+Koha::Middleware::SetEnv";
-
- mount "/cgi-bin/koha" => $app;
- mount "/" => $home;
-
-};
+++ /dev/null
-#!/bin/sh -e
-
-# This is plack startup script for Koha
-
-# ./plackup.sh [site] [intranet]
-
-site=$1
-test ! -z "$site" && shift || ( echo "usage: $0 [site] [i[tranet]]" ; exit 1 )
-
-# extract useful paths from koha-conf.xml
-export KOHA_CONF=/etc/koha/sites/$site/koha-conf.xml
-export LOGDIR="$( sudo -u $site-koha xmlstarlet sel -t -v 'yazgfs/config/logdir' $KOHA_CONF )"
-export INTRANETDIR="$( sudo -u $site-koha xmlstarlet sel -t -v 'yazgfs/config/intranetdir' $KOHA_CONF )"
-export OPACDIR="$( sudo -u $site-koha xmlstarlet sel -t -v 'yazgfs/config/opacdir' $KOHA_CONF | sed 's,/cgi-bin/opac,,' )"
-
-dir=`dirname $0`
-
-# enable memcache - it's safe even on installation which don't have it
-# since Koha has check on C4::Context
-#export MEMCACHED_SERVERS=localhost:11211
-# pass site name as namespace to perl code
-export MEMCACHED_NAMESPACE=$site
-#export MEMCACHED_DEBUG=1
-
-if [ ! -e "$INTRANETDIR/C4" ] ; then
- echo "intranetdir in $KOHA_CONF doesn't point to Koha git checkout"
- exit 1
-fi
-
-if [ -z "$1" ] ; then # type anything after site name for intranet!
- INTRANET=0
- PORT=5000
-else
- INTRANET=1
- PORT=5001
- shift # pass rest of arguments to plackup
-fi
-export INTRANET # pass to plack
-
-# uncomment to enable logging
-#opt="$opt --access-log $LOGDIR/opac-access.log --error-log $LOGDIR/opac-error.log"
-
-# --max-requests 50 decreased from 1000 to keep memory usage sane
-# --workers 4 number of cores on machine
-#test "$INTRANET" != 1 && \ # don't use Starman for intranet
-opt="$opt --server Starman -M FindBin --max-requests 50 --workers 4"
-
-# -E deployment turn off access log on STDOUT
-opt="$opt -E deployment"
-
-# comment out reload in production!
-opt="$opt --reload -R $INTRANETDIR/C4 -R $INTRANETDIR/Koha"
-
-sudo -E -u $site-koha plackup --port $PORT -I $INTRANETDIR -I $INTRANETDIR/installer $opt $* $dir/koha.psgi