From 2c3cc2cfbedcb10c0c83ccfc428424d3ba5e0da5 Mon Sep 17 00:00:00 2001 From: Elliott Davis Date: Mon, 24 Dec 2012 18:46:01 -0500 Subject: [PATCH] Bug 9316: Add ability to install/configure nginx To Test [Amended]: 1) Ensure that you have nginx installed 2) Esure that you have the following packages installed libplack-perl libcgi-emulate-psgi-perl libcgi-compile-perl starman 3) Apply patch 4) Run through the make file, you will notice 5 new configuration options. 5) Make sure you choose NGiNX as your webserver 6) You may choose whatever ports you wish and also whatever DNS entries you wish 7) After you're done configuring run make 8) Run make install (you may need sudo if you've used sudo before) 9) Start plack (you may wish to copy the script to init.d) with the script in koha-dev/bin/koha-plack.sh (requires sudo) 10) TURN OFF APACHE, and start NGiNX 11) go to your web browser and see if everything fires up as normal. --- C4/Installer/PerlDependencies.pm | 20 ++ Makefile.PL | 86 +++++++- debian/control | 442 +++++++++++++++++++++----------------- etc/koha-httpd.conf | 12 +- etc/koha-nginx.conf | 52 +++++ misc/bin/koha-plack.sh | 72 ++++++ misc/bin/koha.psgi | 43 ++++ rewrite-config.PL | 6 + 8 files changed, 529 insertions(+), 204 deletions(-) create mode 100644 etc/koha-nginx.conf create mode 100644 misc/bin/koha-plack.sh create mode 100644 misc/bin/koha.psgi diff --git a/C4/Installer/PerlDependencies.pm b/C4/Installer/PerlDependencies.pm index 16144f9..fee8a35 100644 --- a/C4/Installer/PerlDependencies.pm +++ b/C4/Installer/PerlDependencies.pm @@ -284,6 +284,26 @@ our $PERL_DEPS = { 'required' => '1', 'min_ver' => '3.15' }, + 'Starman' => { + 'usage' => 'preforking PSGI/PLACK web server', + 'required' => '0', + 'min_ver' => '0.300' + }, + 'CGI::Emulate::PSGI' => { + 'usage' => 'PLACK', + 'required' => '0', + 'min_ver' => '0.10' + }, + 'CGI::Compile' => { + 'usage' => 'PLACK CGI Compilation', + 'required' => '0', + 'min_ver' => '0.15' + }, + 'Plack::Middleware::Debug' => { + 'usage' => 'PLACK Debugging', + 'required' => '0', + 'min_ver' => '0.1' + } 'Class::Factory::Util' => { 'usage' => 'Core', 'required' => '1', diff --git a/Makefile.PL b/Makefile.PL index 6c6e186..0191cc0 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -298,6 +298,7 @@ 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/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 }, @@ -345,6 +346,26 @@ Koha from a git clone with no fuss). Directory under which most components will go. Default value will vary depending on INSTALL_MODE. +=item WEBSERVER + +Type of WebServer ( Apache2 or NGINX). + +=item INTRANET_DNS + +Set the DNS entry for staff client + +=item OPAC_DNS + +Set the DNS entry for OPAC + +=item INTRANET_PORT + +Set the port for the staff client + +=item OPAC_PORT + +Set the port for the OPAC + =item DB_TYPE Type of DBMS (e.g., mysql or Pg). @@ -405,6 +426,11 @@ System group that will own Koha's files. # default configuration options my %config_defaults = ( + 'WEBSERVER' => 'apache2', + 'INTRANET_DNS' => 'localhost', + 'OPAC_DNS' => 'localhost', + 'INTRANET_PORT' => '8080', + 'OPAC_PORT' => '80', 'DB_TYPE' => 'mysql', 'DB_HOST' => 'localhost', 'DB_NAME' => 'koha', @@ -464,6 +490,7 @@ else { my %valid_config_values = ( 'INSTALL_MODE' => { 'standard' => 1, 'single' => 1, 'dev' => 1 }, 'DB_TYPE' => { 'mysql' => 1, 'Pg' => 1 }, + 'WEBSERVER' => { 'apache2' => 1, 'nginx' => 1 }, 'INSTALL_ZEBRA' => { 'yes' => 1, 'no' => 1 }, 'INSTALL_SRU' => { 'yes' => 1, 'no' => 1 }, 'AUTH_INDEX_MODE' => { 'grs1' => 1, 'dom' => 1 }, @@ -496,15 +523,27 @@ get_file_map($target_map, $dirtree, $file_map, $config{'INSTALL_ZEBRA'} eq "yes" my $pl_files = { 'rewrite-config.PL' => [ 'blib/KOHA_CONF_DIR/koha-conf.xml', - 'blib/KOHA_CONF_DIR/koha-httpd.conf', + 'blib/KOHA_CONF_DIR/koha-nginx.conf', 'blib/ZEBRA_CONF_DIR/etc/default.idx', - 'blib/MISC_DIR/koha-install-log' + 'blib/MISC_DIR/koha-install-log', ], 'fix-perl-path.PL' => [ # this script ensures the correct shebang line for the platform installed on... 'blib' ], }; +if ($config{'WEBSERVER'} eq "apache2"){ + push @{ $pl_files->{'rewrite-config.PL'} }, ( + 'blib/KOHA_CONF_DIR/koha-httpd.conf', + ); +} +else { + push @{ $pl_files->{'rewrite-config.PL'} }, ( + 'blib/SCRIPT_DIR/koha.psgi', + 'blib/SCRIPT_DIR/koha-plack.sh', + ); +} + if ($config{'INSTALL_ZEBRA'} eq "yes") { push @{ $pl_files->{'rewrite-config.PL'} }, ( 'blib/ZEBRA_CONF_DIR/etc/passwd', @@ -559,6 +598,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_RUN_DIR => ['var', 'run', 'plack'], ); WriteMakefile( @@ -865,6 +905,45 @@ Group); } $msg = q( +Please specify which WebServer you will use +to serve data in Koha. The choices are Apache2 and +NGINX; please note that at the moment +NGINX support is highly experimental. + +WebServer to use); + $msg .= _add_valid_values_disp('WEBSERVER', $valid_values); + $config{'WEBSERVER'} = _get_value('WEBSERVER', $msg, $defaults->{'WEBSERVER'}, $valid_values, $install_log_values); + + $msg = q( +Please specify which WebServer you will use +to serve data in Koha. The choices are Apache2 and +NGINX; please note that at the moment +NGINX support is highly experimental. + +Intranet DNS Settings); + $config{'INTRANET_DNS'} = _get_value('INTRANET_DNS', $msg, $defaults->{'INTRANET_DNS'}, $valid_values, $install_log_values); + + $msg = q( +Please specify if you would like a DNS +entry for the Koha Staff Client. + +OPAC DNS Settings); + $config{'OPAC_DNS'} = _get_value('OPAC_DNS', $msg, $defaults->{'OPAC_DNS'}, $valid_values, $install_log_values); + + $msg = q( +Please specify the port you would +like the Koha Staff Client to use. + +Intranet Port Settings); + $config{'INTRANET_PORT'} = _get_value('INTRANET_PORT', $msg, $defaults->{'INTRANET_PORT'}, $valid_values, $install_log_values); + $msg = q( +Please specify if you would like a DNS +entry for the Koha Staff Client. + +OPAC Port Settings); + $config{'OPAC_PORT'} = _get_value('OPAC_PORt', $msg, $defaults->{'OPAC_PORT'}, $valid_values, $install_log_values); + + $msg = q( Please specify which database engine you will use to store data in Koha. The choices are MySQL and PostgreSQL; please note that at the moment @@ -1237,6 +1316,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_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'plack'); } elsif ($mode eq 'dev') { my $curdir = File::Spec->rel2abs(File::Spec->curdir()); $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir($curdir); @@ -1267,6 +1347,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_RUN_DIR'} = File::Spec->catdir(@basedir, $package, 'var', 'run', 'plack'); } else { # mode is standard, i.e., 'fhs' $dirmap{'INTRANET_CGI_DIR'} = File::Spec->catdir(@basedir, $package, 'intranet', 'cgi-bin'); @@ -1289,6 +1370,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_RUN_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'plack'); } _get_env_overrides(\%dirmap); diff --git a/debian/control b/debian/control index 4447f10..e7b969e 100644 --- a/debian/control +++ b/debian/control @@ -6,107 +6,132 @@ Standards-Version: 3.8.4 # NOTA BENE: Build dependencies end up as runtime dependencies as well. # See debian/rules, the override_dh_gencontrol rules. # There are some exceptions. -Build-Depends: libalgorithm-checkdigits-perl, - libanyevent-http-perl, - libanyevent-perl, - libauthen-cas-client-perl, - libbiblio-endnotestyle-perl, - libbusiness-isbn-perl, - libcache-memcached-fast-perl, - libcgi-pm-perl | perl-modules, +Build-Depends: EEEK: unknown package for Algorithm::CheckDigits, + EEEK: unknown package for AnyEvent, + EEEK: unknown package for AnyEvent::HTTP, + EEEK: unknown package for Authen::CAS::Client, + EEEK: unknown package for Biblio::EndnoteStyle, + EEEK: unknown package for Business::ISBN, + EEEK: unknown package for Cache::Memcached::Fast, + EEEK: unknown package for CGI, + EEEK: unknown package for CGI::Carp, + EEEK: unknown package for CGI::Session, + EEEK: unknown package for CGI::Session::Serialize::yaml, + EEEK: unknown package for Class::Accessor, + EEEK: unknown package for Class::Factory::Util, + EEEK: unknown package for Data::Dumper, + EEEK: unknown package for Data::ICal, + EEEK: unknown package for Data::Pagination, + EEEK: unknown package for Data::Paginator, + EEEK: unknown package for Date::Calc, + EEEK: unknown package for Date::Manip, + EEEK: unknown package for DateTime, + EEEK: unknown package for DateTime::Event::ICal, + EEEK: unknown package for DateTime::Format::DateParse, + EEEK: unknown package for DateTime::Format::ICal, + EEEK: unknown package for DateTime::Format::MySQL, + EEEK: unknown package for DateTime::Set, + EEEK: unknown package for DateTime::TimeZone, + EEEK: unknown package for DBD::Mock, + EEEK: unknown package for DBD::mysql, + EEEK: unknown package for DBD::SQLite2, + EEEK: unknown package for DBI, + EEEK: unknown package for Digest::MD5, + EEEK: unknown package for Digest::SHA, + EEEK: unknown package for Email::Date, + EEEK: unknown package for File::Temp, + EEEK: unknown package for GD, + EEEK: unknown package for GD::Barcode::UPCE, + EEEK: unknown package for Getopt::Long, + EEEK: unknown package for Getopt::Std, + EEEK: unknown package for Graphics::Magick, + EEEK: unknown package for Gravatar::URL, + EEEK: unknown package for HTML::FormatText, + EEEK: unknown package for HTML::Scrubber, + EEEK: unknown package for HTTP::Cookies, + EEEK: unknown package for HTTP::OAI, + EEEK: unknown package for HTTP::Request::Common, + EEEK: unknown package for IPC::Cmd, + EEEK: unknown package for JSON, + EEEK: unknown package for JSON::Any, + EEEK: unknown package for Lingua::Stem, + EEEK: unknown package for Lingua::Stem::Snowball, + EEEK: unknown package for List::MoreUtils, + EEEK: unknown package for List::Util, + EEEK: unknown package for Locale::Currency::Format, + EEEK: unknown package for Locale::Language, + EEEK: unknown package for Locale::PO, + EEEK: unknown package for LWP::Simple, + EEEK: unknown package for LWP::UserAgent, + EEEK: unknown package for Mail::Sendmail, + EEEK: unknown package for MARC::Charset, + EEEK: unknown package for MARC::Crosswalk::DublinCore, + EEEK: unknown package for MARC::File::XML, + EEEK: unknown package for MARC::Record, + EEEK: unknown package for Memoize::Memcached, + EEEK: unknown package for MIME::Base64, + EEEK: unknown package for MIME::Lite, + EEEK: unknown package for MIME::QuotedPrint, + EEEK: unknown package for Modern::Perl, + EEEK: unknown package for Moose, + EEEK: unknown package for MooseX::Storage, + EEEK: unknown package for MooseX::Types, + EEEK: unknown package for Net::LDAP, + EEEK: unknown package for Net::LDAP::Filter, + EEEK: unknown package for Net::Server, + EEEK: unknown package for Net::Z3950::ZOOM, + EEEK: unknown package for Number::Format, + EEEK: unknown package for PDF::API2, + EEEK: unknown package for PDF::API2::Page, + EEEK: unknown package for PDF::API2::Simple, + EEEK: unknown package for PDF::API2::Util, + EEEK: unknown package for PDF::Reuse, + EEEK: unknown package for PDF::Reuse::Barcode, + EEEK: unknown package for PDF::Table, + EEEK: unknown package for POE, + EEEK: unknown package for POSIX, + EEEK: unknown package for Readonly, + EEEK: unknown package for Readonly::XS, + EEEK: unknown package for Schedule::At, + EEEK: unknown package for SMS::Send, + EEEK: unknown package for Storable, + EEEK: unknown package for String::Random, + EEEK: unknown package for String::RewritePrefix, + EEEK: unknown package for Template, + EEEK: unknown package for Term::ANSIColor, + EEEK: unknown package for Test, + EEEK: unknown package for Test::Deep, + EEEK: unknown package for Test::Harness, + EEEK: unknown package for Test::MockModule, + EEEK: unknown package for Test::More, + EEEK: unknown package for Test::Strict, + EEEK: unknown package for Test::Warn, + EEEK: unknown package for Test::YAML::Valid, + EEEK: unknown package for Text::CSV, + EEEK: unknown package for Text::CSV::Encoded, + EEEK: unknown package for Text::CSV_XS, + EEEK: unknown package for Text::Iconv, + EEEK: unknown package for Text::Unaccent, + EEEK: unknown package for Text::Wrap, + EEEK: unknown package for Time::HiRes, + EEEK: unknown package for Time::localtime, + EEEK: unknown package for Time::Progress, + EEEK: unknown package for Unicode::Normalize, + EEEK: unknown package for UNIVERSAL::require, + EEEK: unknown package for URI::Escape, + EEEK: unknown package for XML::Dumper, + EEEK: unknown package for XML::LibXML, + EEEK: unknown package for XML::LibXSLT, + EEEK: unknown package for XML::RSS, + EEEK: unknown package for XML::SAX::ParserFactory, + EEEK: unknown package for XML::SAX::Writer, + EEEK: unknown package for XML::Simple, + EEEK: unknown package for YAML, + EEEK: unknown package for YAML::Syck, libcgi-session-driver-memcached-perl, - libcgi-session-perl, - libcgi-session-serialize-yaml-perl, libchi-driver-memcached-perl, libchi-perl, - libclass-accessor-perl, - libclass-factory-util-perl, - libdata-ical-perl, - libdata-paginator-perl, - libdate-calc-perl, - libdate-manip-perl, - libdatetime-event-ical-perl, - libdatetime-format-dateparse-perl, - libdatetime-format-ical-perl, - libdatetime-format-mysql-perl, - libdatetime-perl, - libdatetime-set-perl, - libdatetime-timezone-perl, - libdbd-mock-perl, - libdbd-mysql-perl, - libdbd-sqlite2-perl, - libdbi-perl, - libdigest-sha-perl | perl, - libemail-date-perl, - libgd-barcode-perl, - libgd-gd2-noxpm-perl | libgd-gd2-perl, - libgraphics-magick-perl, - libgravatar-url-perl, - libhtml-format-perl, - libhtml-scrubber-perl, - libhttp-oai-perl, - libjson-any-perl, - libjson-perl, - liblingua-stem-perl, - liblingua-stem-snowball-perl, - liblist-moreutils-perl, - liblocale-currency-format-perl, - liblocale-po-perl, - libmail-sendmail-perl, - libmarc-charset-perl, - libmarc-crosswalk-dublincore-perl, - libmarc-record-perl, - libmarc-xml-perl, - libmemoize-memcached-perl, - libmime-lite-perl, - libmodern-perl-perl, - libmoose-perl, - libmoosex-storage-perl, - libmoosex-types-perl, - libnet-ldap-perl, - libnet-server-perl, - libnet-z3950-zoom-perl, - libnumber-format-perl, - libpdf-api2-perl, - libpdf-api2-simple-perl, - libpdf-reuse-barcode-perl, - libpdf-reuse-perl, - libpdf-table-perl, - libpoe-perl, - libreadonly-perl, - libreadonly-xs-perl, - libscalar-list-utils-perl, - libschedule-at-perl, - libsms-send-perl, - libstring-rewriteprefix-perl, - libtemplate-perl, - libtemplate-plugin-htmltotext-perl, - libtest-deep-perl, - libtest-mockmodule-perl, - libtest-simple-perl | perl-modules, - libtest-strict-perl, - libtest-warn-perl, - libtest-yaml-valid-perl, - libtext-csv-encoded-perl, - libtext-csv-perl, - libtext-csv-xs-perl, - libtext-iconv-perl, - libtext-unaccent-perl, - libtime-progress-perl, - libuniversal-require-perl, - liburi-perl, - libwww-perl, - libxml-dumper-perl, - libxml-libxml-perl, - libxml-libxslt-perl, - libxml-rss-perl, - libxml-sax-perl, - libxml-sax-writer-perl, - libxml-simple-perl, - libyaml-perl, - libyaml-syck-perl, - perl, - perl-modules, + libtemplate-plugin-htmltotext-perl, debhelper (>= 7.0.50), gettext, python, python-debian, xsltproc, docbook-xsl Package: koha-common @@ -183,107 +208,132 @@ Description: Other dep. for koha daemon, debconf, etc.). Package: koha-perldeps -Depends: libalgorithm-checkdigits-perl, - libanyevent-http-perl, - libanyevent-perl, - libauthen-cas-client-perl, - libbiblio-endnotestyle-perl, - libbusiness-isbn-perl, - libcache-memcached-fast-perl, - libcgi-pm-perl | perl-modules, +Depends: EEEK: unknown package for Algorithm::CheckDigits, + EEEK: unknown package for AnyEvent, + EEEK: unknown package for AnyEvent::HTTP, + EEEK: unknown package for Authen::CAS::Client, + EEEK: unknown package for Biblio::EndnoteStyle, + EEEK: unknown package for Business::ISBN, + EEEK: unknown package for Cache::Memcached::Fast, + EEEK: unknown package for CGI, + EEEK: unknown package for CGI::Carp, + EEEK: unknown package for CGI::Session, + EEEK: unknown package for CGI::Session::Serialize::yaml, + EEEK: unknown package for Class::Accessor, + EEEK: unknown package for Class::Factory::Util, + EEEK: unknown package for Data::Dumper, + EEEK: unknown package for Data::ICal, + EEEK: unknown package for Data::Pagination, + EEEK: unknown package for Data::Paginator, + EEEK: unknown package for Date::Calc, + EEEK: unknown package for Date::Manip, + EEEK: unknown package for DateTime, + EEEK: unknown package for DateTime::Event::ICal, + EEEK: unknown package for DateTime::Format::DateParse, + EEEK: unknown package for DateTime::Format::ICal, + EEEK: unknown package for DateTime::Format::MySQL, + EEEK: unknown package for DateTime::Set, + EEEK: unknown package for DateTime::TimeZone, + EEEK: unknown package for DBD::Mock, + EEEK: unknown package for DBD::mysql, + EEEK: unknown package for DBD::SQLite2, + EEEK: unknown package for DBI, + EEEK: unknown package for Digest::MD5, + EEEK: unknown package for Digest::SHA, + EEEK: unknown package for Email::Date, + EEEK: unknown package for File::Temp, + EEEK: unknown package for GD, + EEEK: unknown package for GD::Barcode::UPCE, + EEEK: unknown package for Getopt::Long, + EEEK: unknown package for Getopt::Std, + EEEK: unknown package for Graphics::Magick, + EEEK: unknown package for Gravatar::URL, + EEEK: unknown package for HTML::FormatText, + EEEK: unknown package for HTML::Scrubber, + EEEK: unknown package for HTTP::Cookies, + EEEK: unknown package for HTTP::OAI, + EEEK: unknown package for HTTP::Request::Common, + EEEK: unknown package for IPC::Cmd, + EEEK: unknown package for JSON, + EEEK: unknown package for JSON::Any, + EEEK: unknown package for Lingua::Stem, + EEEK: unknown package for Lingua::Stem::Snowball, + EEEK: unknown package for List::MoreUtils, + EEEK: unknown package for List::Util, + EEEK: unknown package for Locale::Currency::Format, + EEEK: unknown package for Locale::Language, + EEEK: unknown package for Locale::PO, + EEEK: unknown package for LWP::Simple, + EEEK: unknown package for LWP::UserAgent, + EEEK: unknown package for Mail::Sendmail, + EEEK: unknown package for MARC::Charset, + EEEK: unknown package for MARC::Crosswalk::DublinCore, + EEEK: unknown package for MARC::File::XML, + EEEK: unknown package for MARC::Record, + EEEK: unknown package for Memoize::Memcached, + EEEK: unknown package for MIME::Base64, + EEEK: unknown package for MIME::Lite, + EEEK: unknown package for MIME::QuotedPrint, + EEEK: unknown package for Modern::Perl, + EEEK: unknown package for Moose, + EEEK: unknown package for MooseX::Storage, + EEEK: unknown package for MooseX::Types, + EEEK: unknown package for Net::LDAP, + EEEK: unknown package for Net::LDAP::Filter, + EEEK: unknown package for Net::Server, + EEEK: unknown package for Net::Z3950::ZOOM, + EEEK: unknown package for Number::Format, + EEEK: unknown package for PDF::API2, + EEEK: unknown package for PDF::API2::Page, + EEEK: unknown package for PDF::API2::Simple, + EEEK: unknown package for PDF::API2::Util, + EEEK: unknown package for PDF::Reuse, + EEEK: unknown package for PDF::Reuse::Barcode, + EEEK: unknown package for PDF::Table, + EEEK: unknown package for POE, + EEEK: unknown package for POSIX, + EEEK: unknown package for Readonly, + EEEK: unknown package for Readonly::XS, + EEEK: unknown package for Schedule::At, + EEEK: unknown package for SMS::Send, + EEEK: unknown package for Storable, + EEEK: unknown package for String::Random, + EEEK: unknown package for String::RewritePrefix, + EEEK: unknown package for Template, + EEEK: unknown package for Term::ANSIColor, + EEEK: unknown package for Test, + EEEK: unknown package for Test::Deep, + EEEK: unknown package for Test::Harness, + EEEK: unknown package for Test::MockModule, + EEEK: unknown package for Test::More, + EEEK: unknown package for Test::Strict, + EEEK: unknown package for Test::Warn, + EEEK: unknown package for Test::YAML::Valid, + EEEK: unknown package for Text::CSV, + EEEK: unknown package for Text::CSV::Encoded, + EEEK: unknown package for Text::CSV_XS, + EEEK: unknown package for Text::Iconv, + EEEK: unknown package for Text::Unaccent, + EEEK: unknown package for Text::Wrap, + EEEK: unknown package for Time::HiRes, + EEEK: unknown package for Time::localtime, + EEEK: unknown package for Time::Progress, + EEEK: unknown package for Unicode::Normalize, + EEEK: unknown package for UNIVERSAL::require, + EEEK: unknown package for URI::Escape, + EEEK: unknown package for XML::Dumper, + EEEK: unknown package for XML::LibXML, + EEEK: unknown package for XML::LibXSLT, + EEEK: unknown package for XML::RSS, + EEEK: unknown package for XML::SAX::ParserFactory, + EEEK: unknown package for XML::SAX::Writer, + EEEK: unknown package for XML::Simple, + EEEK: unknown package for YAML, + EEEK: unknown package for YAML::Syck, libcgi-session-driver-memcached-perl, - libcgi-session-perl, - libcgi-session-serialize-yaml-perl, libchi-driver-memcached-perl, libchi-perl, - libclass-accessor-perl, - libclass-factory-util-perl, - libdata-ical-perl, - libdata-paginator-perl, - libdate-calc-perl, - libdate-manip-perl, - libdatetime-event-ical-perl, - libdatetime-format-dateparse-perl, - libdatetime-format-ical-perl, - libdatetime-format-mysql-perl, - libdatetime-perl, - libdatetime-set-perl, - libdatetime-timezone-perl, - libdbd-mock-perl, - libdbd-mysql-perl, - libdbd-sqlite2-perl, - libdbi-perl, - libdigest-sha-perl | perl, - libemail-date-perl, - libgd-barcode-perl, - libgd-gd2-noxpm-perl | libgd-gd2-perl, - libgraphics-magick-perl, - libgravatar-url-perl, - libhtml-format-perl, - libhtml-scrubber-perl, - libhttp-oai-perl, - libjson-any-perl, - libjson-perl, - liblingua-stem-perl, - liblingua-stem-snowball-perl, - liblist-moreutils-perl, - liblocale-currency-format-perl, - liblocale-po-perl, - libmail-sendmail-perl, - libmarc-charset-perl, - libmarc-crosswalk-dublincore-perl, - libmarc-record-perl, - libmarc-xml-perl, - libmemoize-memcached-perl, - libmime-lite-perl, - libmodern-perl-perl, - libmoose-perl, - libmoosex-storage-perl, - libmoosex-types-perl, - libnet-ldap-perl, - libnet-server-perl, - libnet-z3950-zoom-perl, - libnumber-format-perl, - libpdf-api2-perl, - libpdf-api2-simple-perl, - libpdf-reuse-barcode-perl, - libpdf-reuse-perl, - libpdf-table-perl, - libpoe-perl, - libreadonly-perl, - libreadonly-xs-perl, - libscalar-list-utils-perl, - libschedule-at-perl, - libsms-send-perl, - libstring-rewriteprefix-perl, - libtemplate-perl, - libtemplate-plugin-htmltotext-perl, - libtest-deep-perl, - libtest-mockmodule-perl, - libtest-simple-perl | perl-modules, - libtest-strict-perl, - libtest-warn-perl, - libtest-yaml-valid-perl, - libtext-csv-encoded-perl, - libtext-csv-perl, - libtext-csv-xs-perl, - libtext-iconv-perl, - libtext-unaccent-perl, - libtime-progress-perl, - libuniversal-require-perl, - liburi-perl, - libwww-perl, - libxml-dumper-perl, - libxml-libxml-perl, - libxml-libxslt-perl, - libxml-rss-perl, - libxml-sax-perl, - libxml-sax-writer-perl, - libxml-simple-perl, - libyaml-perl, - libyaml-syck-perl, - perl, - perl-modules + libtemplate-plugin-htmltotext-perl Architecture: all Description: Perl dep. for koha Koha is an Integrated Library Managment system for real-world libraries diff --git a/etc/koha-httpd.conf b/etc/koha-httpd.conf index dc82d08..f0edb61 100644 --- a/etc/koha-httpd.conf +++ b/etc/koha-httpd.conf @@ -3,11 +3,11 @@ #NameVirtualHost * ## OPAC - + ServerAdmin __WEBMASTER_EMAIL__ DocumentRoot __OPAC_WWW_DIR__ - ServerName __WEBSERVER_HOST__ -# ServerAlias opac.mydomain.com + ServerName __OPAC_DNS__:__OPAC_PORT__ +# ServerAlias __OPAC_DNS__ ScriptAlias /cgi-bin/koha/ "__OPAC_CGI_DIR__/opac/" ScriptAlias /index.html "__OPAC_CGI_DIR__/opac/opac-main.pl" ScriptAlias /opac-search.pl "__OPAC_CGI_DIR__/opac/opac-search.pl" @@ -97,11 +97,11 @@ ## Intranet - + ServerAdmin __WEBMASTER_EMAIL__ DocumentRoot __INTRANET_WWW_DIR__ - ServerName __WEBSERVER_HOST__:__WEBSERVER_PORT_LIBRARIAN__ -# ServerAlias intranet.mydomain.com + ServerName __INTRANET_DNS__:__INTRANET_PORT__ +# ServerAlias __INTRANET_DNS__ ScriptAlias /cgi-bin/koha/ "__INTRANET_CGI_DIR__/" ScriptAlias /index.html "__INTRANET_CGI_DIR__/mainpage.pl" ScriptAlias /search "__INTRANET_CGI_DIR__/search.pl" diff --git a/etc/koha-nginx.conf b/etc/koha-nginx.conf new file mode 100644 index 0000000..33f96b8 --- /dev/null +++ b/etc/koha-nginx.conf @@ -0,0 +1,52 @@ +upstream backendurl { + server unix:__PLACK_RUN_DIR__/plack.sock; +} + +server { + listen __OPAC_PORT__; + server_name __OPAC_DNS__; + access_log __LOG_DIR__/nginx-opac-access.log; + root __OPAC_WWW_DIR__; + + rewrite ^/$ /cgi-bin/koha/opac-main.pl; + rewrite ^/cgi-bin/koha/(.*)$ /cgi-bin/koha/opac/$1; + + location / { + try_files $uri @plack; + } + location /opac-tmpl/ { + root __OPAC_WWW_DIR__; + } + + location @plack { + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://backendurl; + } +} + +server { + listen __INTRANET_PORT__; + server_name __INTRANET_DNS__; + access_log __LOG_DIR__/nginx-intranet-access.log; + root __INTRANET_WWW_DIR__; + + rewrite ^/$ /cgi-bin/koha/mainpage.pl; + + location / { + try_files $uri @plack; + } + location /intranet-tmpl/ { + root __INTRANET_WWW_DIR__; + } + + location @plack { + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://backendurl; + } +} \ No newline at end of file diff --git a/misc/bin/koha-plack.sh b/misc/bin/koha-plack.sh new file mode 100644 index 0000000..34e0b53 --- /dev/null +++ b/misc/bin/koha-plack.sh @@ -0,0 +1,72 @@ +#!/bin/sh -e + +# 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 +# version. +# +# Koha 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 +# 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 +# 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 +### END INIT INFO + +export KOHA_CONF=__KOHA_CONF_DIR__/koha-conf.xml +#export OPACDIR=__OPAC_WWW_DIR__ +#export INTRANETDIR=__OPAC_WWW_DIR__ +export LOGDIR=__LOG_DIR__ +USER=__KOHA_USER__ +GROUP=__KOHA_GROUP__ +RUNDIR=__PLACK_RUN_DIR__ +PIDFILE=$RUNDIR/plack.pid + +# Use one of these lines to choose between TCP port and UNIX socket listeners +SOCKET=$RUNDIR/plack.sock +#PORT=5000 + +case "$1" in + start) + echo "Starting Koha Plack Daemon" + + # create run and lock directories if needed; + # /var/run and /var/lock are completely cleared at boot + # on some platforms + if [ ! -d $RUNDIR ]; then + umask 022 + mkdir -p $RUNDIR + 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" + fi + starman $opt __SCRIPT_DIR__/koha.psgi + + if [ $SOCKET ]; then + chown $USER:$GROUP $SOCKET + fi + ;; + stop) + start-stop-daemon --stop --pidfile $PIDFILE + ;; + *) + echo "Usage: koha-plack {start|stop}" + exit 1 + ;; +esac \ No newline at end of file diff --git a/misc/bin/koha.psgi b/misc/bin/koha.psgi new file mode 100644 index 0000000..2023f50 --- /dev/null +++ b/misc/bin/koha.psgi @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +BEGIN { + $ENV{'KOHA_CONF'} = '__KOHA_CONF_DIR__/koha-conf.xml'; + $ENV{'PERL5LIB'} = '__PERL_MODULE_DIR__'; +} + +use lib("__PERL_MODULE_DIR__"); +use lib("__PERL_MODULE_DIR__/installer"); +use Plack::Builder; +use Plack::App::CGIBin; +use Plack::App::Directory; +use Plack::Middleware::Debug; +use Plack::App::URLMap; +use C4::Context; +use C4::Languages; +use C4::Members; +use C4::Dates; +use C4::Boolean; +use C4::Letters; +use C4::Koha; +use C4::XSLT; +use C4::Branch; +use C4::Category; + +C4::Context->disable_syspref_cache(); + +my $intra=Plack::App::CGIBin->new(root => "__INTRANET_CGI_DIR__" ); + +my $opac = Plack::App::CGIBin->new(root => "__OPAC_CGI_DIR__"); +my $panels = Plack::Middleware::Debug->default_panels; +builder { + enable_if{ + $ENV{DEBUG} + } 'Debug', panels => [[ 'DBITrace', level => 1 ], @$panels ]; + + enable "Plack::Middleware::Static"; + + enable 'StackTrace'; + + mount '/cgi-bin/koha/' => $intra; + mount '/cgi-bin/koha/opac' => $opac; +}; diff --git a/rewrite-config.PL b/rewrite-config.PL index 02715ab..58490f7 100644 --- a/rewrite-config.PL +++ b/rewrite-config.PL @@ -82,6 +82,11 @@ $prefix = $ENV{'INSTALL_BASE'} || "/usr"; %configuration = ( "__KOHA_INSTALLED_VERSION__" => "no_version_found", "__LOG_DIR__" => "/var/log", + "__WEBSERVER__" => "apache2", + "__INTRANET_DNS__" => "localhost", + "__OPAC_DNS__" => "localhost", + "__OPAC_PORT__" => "80", + "__INTRANET_PORT__" => "8080", "__DB_TYPE__" => "mysql", "__DB_NAME__" => "koha", "__DB_HOST__" => $myhost, @@ -119,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_RUN_DIR__' => "$prefix/var/run/plack", '__ZEBRA_MARC_FORMAT__' => 'marc21', '__ZEBRA_LANGUAGE__' => 'en', '__ZEBRA_TOKENIZER_STMT__' => 'charmap word-phrase-utf.chr', -- 1.7.2.5