View | Details | Raw Unified | Return to bug 9316
Collapse All | Expand All

(-)a/C4/Installer/PerlDependencies.pm (+20 lines)
Lines 284-289 our $PERL_DEPS = { Link Here
284
        'required' => '1',
284
        'required' => '1',
285
        'min_ver'  => '3.15'
285
        'min_ver'  => '3.15'
286
    },
286
    },
287
    'Starman' => {
288
	'usage' => 'preforking PSGI/PLACK web server',
289
	'required' => '0',
290
	'min_ver' => '0.300'
291
     },
292
    'CGI::Emulate::PSGI' => {
293
	'usage' => 'PLACK',
294
	'required' => '0',
295
	'min_ver' => '0.10'
296
    },
297
    'CGI::Compile' => {
298
	'usage' => 'PLACK CGI Compilation',
299
	'required' => '0',
300
	'min_ver' => '0.15'
301
    },
302
    'Plack::Middleware::Debug' => {
303
	'usage' => 'PLACK Debugging',
304
	'required' => '0',
305
	'min_ver' => '0.1'
306
    },
287
    'Class::Factory::Util' => {
307
    'Class::Factory::Util' => {
288
        'usage'    => 'Core',
308
        'usage'    => 'Core',
289
        'required' => '1',
309
        'required' => '1',
(-)a/Makefile.PL (-2 / +57 lines)
Lines 306-311 my $target_map = { Link Here
306
  './skel'                      => 'NONE',
306
  './skel'                      => 'NONE',
307
  './skel/var/log/koha'         => { target => 'LOG_DIR', trimdir => -1 },
307
  './skel/var/log/koha'         => { target => 'LOG_DIR', trimdir => -1 },
308
  './skel/var/spool/koha'       => { target => 'BACKUP_DIR', trimdir => -1 },
308
  './skel/var/spool/koha'       => { target => 'BACKUP_DIR', trimdir => -1 },
309
  './skel/var/run/koha/plack' => { target => 'PLACK_RUN_DIR', trimdir => -1 },
309
  './skel/var/run/koha/zebradb' => { target => 'ZEBRA_RUN_DIR', trimdir => -1 },
310
  './skel/var/run/koha/zebradb' => { target => 'ZEBRA_RUN_DIR', trimdir => -1 },
310
  './skel/var/lock/koha/zebradb/authorities' => { target => 'ZEBRA_LOCK_DIR', trimdir => 6 },
311
  './skel/var/lock/koha/zebradb/authorities' => { target => 'ZEBRA_LOCK_DIR', trimdir => 6 },
311
  './skel/var/lib/koha/zebradb/authorities/key'  => { target => 'ZEBRA_DATA_DIR', trimdir => 6 },
312
  './skel/var/lib/koha/zebradb/authorities/key'  => { target => 'ZEBRA_DATA_DIR', trimdir => 6 },
Lines 354-359 Koha from a git clone with no fuss). Link Here
354
Directory under which most components will go.  Default
355
Directory under which most components will go.  Default
355
value will vary depending on INSTALL_MODE.
356
value will vary depending on INSTALL_MODE.
356
357
358
=item INTRANET_DNS
359
360
Set the DNS entry for staff client
361
362
=item OPAC_DNS
363
364
Set the DNS entry for OPAC
365
366
=item INTRANET_PORT
367
368
Set the port for the staff client
369
370
=item OPAC_PORT
371
372
Set the port for the OPAC
373
357
=item DB_TYPE
374
=item DB_TYPE
358
375
359
Type of DBMS (e.g., mysql or Pg).
376
Type of DBMS (e.g., mysql or Pg).
Lines 414-419 System group that will own Koha's files. Link Here
414
431
415
# default configuration options
432
# default configuration options
416
my %config_defaults = (
433
my %config_defaults = (
434
  'INTRANET_DNS'      => 'localhost',
435
  'OPAC_DNS'          => 'localhost',
436
  'INTRANET_PORT'     => '8080',
437
  'OPAC_PORT'         => '80',
417
  'DB_TYPE'           => 'mysql',
438
  'DB_TYPE'           => 'mysql',
418
  'DB_HOST'           => 'localhost',
439
  'DB_HOST'           => 'localhost',
419
  'DB_NAME'           => 'koha',
440
  'DB_NAME'           => 'koha',
Lines 505-513 get_file_map($target_map, $dirtree, $file_map, $config{'INSTALL_ZEBRA'} eq "yes" Link Here
505
my $pl_files = {
526
my $pl_files = {
506
      'rewrite-config.PL' => [
527
      'rewrite-config.PL' => [
507
         'blib/KOHA_CONF_DIR/koha-conf.xml',
528
         'blib/KOHA_CONF_DIR/koha-conf.xml',
508
         'blib/KOHA_CONF_DIR/koha-httpd.conf',
529
         'blib/KOHA_CONF_DIR/koha-nginx.conf',
509
         'blib/ZEBRA_CONF_DIR/etc/default.idx',
530
         'blib/ZEBRA_CONF_DIR/etc/default.idx',
510
         'blib/MISC_DIR/koha-install-log'
531
         'blib/MISC_DIR/koha-install-log',
532
	 'blib/KOHA_CONF_DIR/koha-httpd.conf',
533
	 'blib/SCRIPT_DIR/koha.psgi',
534
	 'blib/SCRIPT_DIR/koha-plack.sh',
511
         ],
535
         ],
512
	  'fix-perl-path.PL' => [	# this script ensures the correct shebang line for the platform installed on...
536
	  'fix-perl-path.PL' => [	# this script ensures the correct shebang line for the platform installed on...
513
		 'blib'
537
		 'blib'
Lines 567-572 my %test_suite_override_dirs = ( Link Here
567
    ZEBRA_LOCK_DIR => ['var', 'lock', 'zebradb'],
591
    ZEBRA_LOCK_DIR => ['var', 'lock', 'zebradb'],
568
    ZEBRA_DATA_DIR => ['var', 'lib', 'zebradb'],
592
    ZEBRA_DATA_DIR => ['var', 'lib', 'zebradb'],
569
    ZEBRA_RUN_DIR  => ['var', 'run', 'zebradb'],
593
    ZEBRA_RUN_DIR  => ['var', 'run', 'zebradb'],
594
    PLACK_RUN_DIR  => ['var', 'run', 'plack'],
570
);
595
);
571
596
572
WriteMakefile(
597
WriteMakefile(
Lines 873-878 Group); Link Here
873
    }
898
    }
874
899
875
    $msg = q(
900
    $msg = q(
901
Please specify if you would like a DNS
902
entry for the Koha Staff Client.
903
904
Intranet DNS Settings);
905
    $config{'INTRANET_DNS'} = _get_value('INTRANET_DNS', $msg, $defaults->{'INTRANET_DNS'}, $valid_values, $install_log_values);
906
907
    $msg = q(
908
Please specify if you would like a DNS
909
entry for the Koha OPAC.
910
911
OPAC DNS Settings);
912
    $config{'OPAC_DNS'} = _get_value('OPAC_DNS', $msg, $defaults->{'OPAC_DNS'}, $valid_values, $install_log_values);
913
914
    $msg = q(
915
Please specify the port you would
916
like the Koha Staff Client to use.
917
918
Intranet Port Settings);
919
    $config{'INTRANET_PORT'} = _get_value('INTRANET_PORT', $msg, $defaults->{'INTRANET_PORT'}, $valid_values, $install_log_values);
920
    $msg = q(
921
Please specify the port you would
922
like the Koha OPAC to use.
923
924
OPAC Port Settings);
925
    $config{'OPAC_PORT'} = _get_value('OPAC_PORt', $msg, $defaults->{'OPAC_PORT'}, $valid_values, $install_log_values);
926
927
    $msg = q(
876
Please specify which database engine you will use
928
Please specify which database engine you will use
877
to store data in Koha.  The choices are MySQL and
929
to store data in Koha.  The choices are MySQL and
878
PostgreSQL; please note that at the moment
930
PostgreSQL; please note that at the moment
Lines 1246-1251 sub get_target_directories { Link Here
1246
        $dirmap{'PLUGINS_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'koha', 'plugins');
1298
        $dirmap{'PLUGINS_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'koha', 'plugins');
1247
        $dirmap{'ZEBRA_DATA_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb');
1299
        $dirmap{'ZEBRA_DATA_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb');
1248
        $dirmap{'ZEBRA_RUN_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb');
1300
        $dirmap{'ZEBRA_RUN_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb');
1301
        $dirmap{'PLACK_RUN_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'run', 'plack');
1249
    } elsif ($mode eq 'dev') {
1302
    } elsif ($mode eq 'dev') {
1250
        my $curdir = File::Spec->rel2abs(File::Spec->curdir());
1303
        my $curdir = File::Spec->rel2abs(File::Spec->curdir());
1251
        $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir($curdir);
1304
        $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir($curdir);
Lines 1277-1282 sub get_target_directories { Link Here
1277
        $dirmap{'PLUGINS_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'plugins');
1330
        $dirmap{'PLUGINS_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'plugins');
1278
        $dirmap{'ZEBRA_DATA_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb');
1331
        $dirmap{'ZEBRA_DATA_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'lib', 'zebradb');
1279
        $dirmap{'ZEBRA_RUN_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb');
1332
        $dirmap{'ZEBRA_RUN_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'run', 'zebradb');
1333
        $dirmap{'PLACK_RUN_DIR'} =  File::Spec->catdir(@basedir, $package, 'var', 'run', 'plack');
1280
    } else {
1334
    } else {
1281
        # mode is standard, i.e., 'fhs'
1335
        # mode is standard, i.e., 'fhs'
1282
        $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'cgi-bin');
1336
        $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'cgi-bin');
Lines 1300-1305 sub get_target_directories { Link Here
1300
        $dirmap{'PLUGINS_DIR'} =  File::Spec->catdir(File::Spec->rootdir(), 'var', 'lib', $package, 'plugins');
1354
        $dirmap{'PLUGINS_DIR'} =  File::Spec->catdir(File::Spec->rootdir(), 'var', 'lib', $package, 'plugins');
1301
        $dirmap{'ZEBRA_DATA_DIR'} =  File::Spec->catdir(File::Spec->rootdir(), 'var', 'lib', $package, 'zebradb');
1355
        $dirmap{'ZEBRA_DATA_DIR'} =  File::Spec->catdir(File::Spec->rootdir(), 'var', 'lib', $package, 'zebradb');
1302
        $dirmap{'ZEBRA_RUN_DIR'} =  File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'zebradb');
1356
        $dirmap{'ZEBRA_RUN_DIR'} =  File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'zebradb');
1357
        $dirmap{'PLACK_RUN_DIR'} =  File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'plack');
1303
    }
1358
    }
1304
1359
1305
    _get_env_overrides(\%dirmap);
1360
    _get_env_overrides(\%dirmap);
(-)a/etc/koha-httpd.conf (-6 / +6 lines)
Lines 3-13 Link Here
3
#NameVirtualHost *
3
#NameVirtualHost *
4
4
5
## OPAC
5
## OPAC
6
<VirtualHost __WEBSERVER_IP__:__WEBSERVER_PORT__>
6
<VirtualHost __OPAC_DNS__:__OPAC_PORT__>
7
   ServerAdmin  __WEBMASTER_EMAIL__
7
   ServerAdmin  __WEBMASTER_EMAIL__
8
   DocumentRoot __OPAC_WWW_DIR__
8
   DocumentRoot __OPAC_WWW_DIR__
9
   ServerName __WEBSERVER_HOST__
9
   ServerName __OPAC_DNS__:__OPAC_PORT__
10
#  ServerAlias opac.mydomain.com
10
#  ServerAlias __OPAC_DNS__
11
   ScriptAlias /cgi-bin/koha/ "__OPAC_CGI_DIR__/opac/"
11
   ScriptAlias /cgi-bin/koha/ "__OPAC_CGI_DIR__/opac/"
12
   ScriptAlias /index.html "__OPAC_CGI_DIR__/opac/opac-main.pl"
12
   ScriptAlias /index.html "__OPAC_CGI_DIR__/opac/opac-main.pl"
13
   ScriptAlias /opac-search.pl "__OPAC_CGI_DIR__/opac/opac-search.pl"
13
   ScriptAlias /opac-search.pl "__OPAC_CGI_DIR__/opac/opac-search.pl"
Lines 116-126 Link Here
116
</VirtualHost>
116
</VirtualHost>
117
117
118
## Intranet
118
## Intranet
119
<VirtualHost __WEBSERVER_IP__:__WEBSERVER_PORT_LIBRARIAN__>
119
<VirtualHost __INTRANET_DNS__:__INTRANET_PORT__>
120
   ServerAdmin __WEBMASTER_EMAIL__
120
   ServerAdmin __WEBMASTER_EMAIL__
121
   DocumentRoot __INTRANET_WWW_DIR__
121
   DocumentRoot __INTRANET_WWW_DIR__
122
   ServerName __WEBSERVER_HOST__:__WEBSERVER_PORT_LIBRARIAN__
122
   ServerName __INTRANET_DNS__:__INTRANET_PORT__
123
#  ServerAlias intranet.mydomain.com
123
#  ServerAlias __INTRANET_DNS__
124
   ScriptAlias /cgi-bin/koha/ "__INTRANET_CGI_DIR__/"
124
   ScriptAlias /cgi-bin/koha/ "__INTRANET_CGI_DIR__/"
125
   ScriptAlias /index.html "__INTRANET_CGI_DIR__/mainpage.pl"
125
   ScriptAlias /index.html "__INTRANET_CGI_DIR__/mainpage.pl"
126
   ScriptAlias /search "__INTRANET_CGI_DIR__/search.pl"
126
   ScriptAlias /search "__INTRANET_CGI_DIR__/search.pl"
(-)a/etc/koha-nginx.conf (+52 lines)
Line 0 Link Here
1
upstream backendurl {
2
      server unix:__PLACK_RUN_DIR__/plack.sock;
3
}
4
5
server {
6
    listen __OPAC_PORT__;
7
    server_name __OPAC_DNS__;
8
    access_log  __LOG_DIR__/nginx-opac-access.log;
9
    root        __OPAC_WWW_DIR__;
10
11
    rewrite ^/$ /cgi-bin/koha/opac-main.pl;
12
    rewrite ^/cgi-bin/koha/(.*)$ /cgi-bin/koha/opac/$1;
13
14
    location    / {
15
        try_files $uri @plack;
16
    }
17
    location /opac-tmpl/ {
18
        root __OPAC_WWW_DIR__;
19
     }
20
21
    location @plack {
22
        proxy_set_header Host $http_host;
23
        proxy_set_header X-Forwarded-Host $host;
24
        proxy_set_header X-Real-IP $remote_addr;
25
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
26
        proxy_pass  http://backendurl;
27
    }
28
}
29
30
server {
31
    listen __INTRANET_PORT__;
32
    server_name __INTRANET_DNS__;
33
    access_log  __LOG_DIR__/nginx-intranet-access.log;
34
    root        __INTRANET_WWW_DIR__;
35
36
    rewrite ^/$ /cgi-bin/koha/mainpage.pl;
37
38
    location    / {
39
        try_files $uri @plack;
40
    }
41
    location /intranet-tmpl/ {
42
        root __INTRANET_WWW_DIR__;
43
     }
44
45
    location @plack {
46
        proxy_set_header Host $http_host;
47
        proxy_set_header X-Forwarded-Host $host;
48
        proxy_set_header X-Real-IP $remote_addr;
49
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
50
        proxy_pass  http://backendurl;
51
    }
52
}
(-)a/misc/bin/koha-plack.sh (+73 lines)
Line 0 Link Here
1
#!/bin/sh -e
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it under the
6
# terms of the GNU General Public License as published by the Free Software
7
# Foundation; either version 3 of the License, or (at your option) any later
8
# version.
9
#
10
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License along with
15
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
16
# Suite 330, Boston, MA  02111-1307 USA
17
18
### BEGIN INIT INFO# Provides:          koha-plack
19
# Required-Start:    $syslog $remote_fs
20
# Required-Stop:     $syslog $remote_fs# Default-Start:     2 3 4 5
21
# Default-Stop:      0 1 6# Short-Description: Plack server for Koha
22
### END INIT INFO
23
24
export KOHA_CONF=__KOHA_CONF_DIR__/koha-conf.xml
25
#export OPACDIR=__OPAC_WWW_DIR__
26
#export INTRANETDIR=__OPAC_WWW_DIR__
27
export LOGDIR=__LOG_DIR__
28
USER=__KOHA_USER__
29
GROUP=__KOHA_GROUP__
30
RUNDIR=__PLACK_RUN_DIR__
31
PIDFILE=$RUNDIR/plack.pid
32
33
# Use one of these lines to choose between TCP port and UNIX socket listeners
34
SOCKET=$RUNDIR/plack.sock
35
#PORT=5000
36
37
case "$1" in
38
    start)
39
	echo "Starting Koha Plack Daemon"
40
41
      # create run and lock directories if needed;
42
      # /var/run and /var/lock are completely cleared at boot
43
      # on some platforms
44
      if [ ! -d $RUNDIR ]; then
45
        umask 022
46
        mkdir -p $RUNDIR
47
        if [ $EUID -eq 0 ]; then
48
            chown $USER:$GROUP $RUNDIR
49
        fi
50
      fi
51
52
        opt="$opt --access-log $LOGDIR/koha-access.log --error-log $LOGDIR/koha-error.log"
53
        opt="$opt -M FindBin --max-requests 50 --workers 2 -E deployment"
54
        if [ $SOCKET ]; then
55
            opt="$opt --listen $SOCKET -D --pid $PIDFILE"
56
        elif [ $PORT ]; then
57
            opt="$opt --port $PORT -D --pid $PIDFILE"
58
        fi
59
        starman $opt __SCRIPT_DIR__/koha.psgi
60
61
        if [ $SOCKET ]; then
62
            chown $USER:$GROUP $SOCKET
63
	    chmod 660 $SOCKET
64
        fi
65
        ;;
66
    stop)
67
        start-stop-daemon --stop --pidfile $PIDFILE
68
        ;;
69
    *)
70
        echo "Usage: koha-plack {start|stop}"
71
        exit 1
72
        ;;
73
esac
(-)a/misc/bin/koha.psgi (+43 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
BEGIN {
4
    $ENV{'KOHA_CONF'} = '__KOHA_CONF_DIR__/koha-conf.xml';
5
    $ENV{'PERL5LIB'} = '__PERL_MODULE_DIR__';
6
}
7
8
use lib("__PERL_MODULE_DIR__");
9
use lib("__PERL_MODULE_DIR__/installer");
10
use Plack::Builder;
11
use Plack::App::CGIBin;
12
use Plack::App::Directory;
13
use Plack::Middleware::Debug;
14
use Plack::App::URLMap;
15
use C4::Context;
16
use C4::Languages;
17
use C4::Members;
18
use C4::Dates;
19
use C4::Boolean;
20
use C4::Letters;
21
use C4::Koha;
22
use C4::XSLT;
23
use C4::Branch;
24
use C4::Category;
25
26
C4::Context->disable_syspref_cache();
27
28
my $intra=Plack::App::CGIBin->new(root => "__INTRANET_CGI_DIR__" );
29
30
my $opac = Plack::App::CGIBin->new(root => "__OPAC_CGI_DIR__");
31
my $panels = Plack::Middleware::Debug->default_panels;
32
builder {
33
    enable_if{
34
	$ENV{DEBUG}
35
    } 'Debug',  panels => [[ 'DBITrace', level => 1 ], @$panels ];
36
37
    enable "Plack::Middleware::Static";
38
39
    enable 'StackTrace';
40
41
    mount '/cgi-bin/koha/' => $intra;
42
    mount '/cgi-bin/koha/' => $opac;
43
};
(-)a/rewrite-config.PL (-1 / +6 lines)
Lines 83-88 $prefix = $ENV{'INSTALL_BASE'} || "/usr"; Link Here
83
  "__KOHA_INSTALLED_VERSION__" => "no_version_found",
83
  "__KOHA_INSTALLED_VERSION__" => "no_version_found",
84
  "__LOG_DIR__" => "/var/log",
84
  "__LOG_DIR__" => "/var/log",
85
  "__PLUGINS_DIR__" => "/var/lib/koha/plugins",
85
  "__PLUGINS_DIR__" => "/var/lib/koha/plugins",
86
  "__WEBSERVER__" => "apache2",
87
  "__INTRANET_DNS__" => "localhost",
88
  "__OPAC_DNS__" => "localhost",
89
  "__OPAC_PORT__" => "80",
90
  "__INTRANET_PORT__" => "8080",
86
  "__DB_TYPE__" => "mysql",
91
  "__DB_TYPE__" => "mysql",
87
  "__DB_NAME__" => "koha",
92
  "__DB_NAME__" => "koha",
88
  "__DB_HOST__" => $myhost,
93
  "__DB_HOST__" => $myhost,
Lines 120-125 $prefix = $ENV{'INSTALL_BASE'} || "/usr"; Link Here
120
  '__ZEBRA_LOCK_DIR__' => "$prefix/var/lock/zebradb",
125
  '__ZEBRA_LOCK_DIR__' => "$prefix/var/lock/zebradb",
121
  '__ZEBRA_DATA_DIR__' => "$prefix/var/lib/zebradb",
126
  '__ZEBRA_DATA_DIR__' => "$prefix/var/lib/zebradb",
122
  '__ZEBRA_RUN_DIR__' => "$prefix/var/run/zebradb",
127
  '__ZEBRA_RUN_DIR__' => "$prefix/var/run/zebradb",
128
  '__PLACK_RUN_DIR__' => "$prefix/var/run/plack",
123
  '__ZEBRA_MARC_FORMAT__' => 'marc21',
129
  '__ZEBRA_MARC_FORMAT__' => 'marc21',
124
  '__ZEBRA_LANGUAGE__' => 'en',
130
  '__ZEBRA_LANGUAGE__' => 'en',
125
  '__ZEBRA_TOKENIZER__' => 'chr',
131
  '__ZEBRA_TOKENIZER__' => 'chr',
126
- 

Return to bug 9316