<chapter id="server">
- <!-- $Id: server.xml,v 1.7 2002-10-30 11:09:39 adam Exp $ -->
+ <!-- $Id: server.xml,v 1.8 2005-08-12 12:44:36 marc Exp $ -->
<title>The Z39.50 Server</title>
<sect1 id="zebrasrv">
can be run (inetd, nt service, stand-alone program, daemon...) -H
-->
+ <!-- re-write by MC, using the newly created input files for the
+ zebrasrv manpage -->
+
+
+ <sect2><title>DESCRIPTION</title>
+ <para>Zebra is a high-performance, general-purpose structured text indexing
+ and retrieval engine. It reads structured records in a variety of input
+ formats (eg. email, XML, MARC) and allows access to them through exact
+ boolean search expressions and relevance-ranked free-text queries.
+ </para>
+ <para>
+ <command>zebrasrv</command> is the Z39.50 and SRW/U frontend
+ server for the <command>Zebra</command> indexer.
+ </para>
+ <para>
+ On Unix you can run the <command>zebrasrv</command>
+ server from the command line - and put it
+ in the background. It may also operate under the inet daemon.
+ On WIN32 you can run the server as a console application or
+ as a WIN32 Service.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>SYNOPSIS</title>
+ &zebrasrv-synopsis;
+ </sect2>
+
+ <sect2>
+ <title>OPTIONS</title>
+
+ <para>
+ The options for <command>zebrasrv</command> are the same
+ as those for YAZ' <command>yaz-ztest</command>.
+ Option <literal>-c</literal> specifies a Zebra configuration
+ file - if omitted <filename>zebra.cfg</filename> is read.
+ </para>
+
+ &zebrasrv-options;
+ </sect2>
+ <sect2><title>VIRTUAL HOSTS</title>
+ <para>
+ <command>zebrasrv</command> uses the YAZ server frontend and does
+ support multiple virtual servers behind multiple listening sockets.
+ </para>
+ &zebrasrv-virtual;
+ </sect2>
+ <sect2><title>FILES</title>
+ <para>
+ <filename>zebra.cfg</filename>
+ </para>
+ </sect2>
+ <sect2><title>SEE ALSO</title>
+ <para>
+ <citerefentry>
+ <refentrytitle>zebraidx</refentrytitle>
+ <manvolnum>1</manvolnum>
+ </citerefentry>,
+ <citerefentry>
+ <refentrytitle>yaz-ztest</refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>
+ </para>
+ <para>
+ Section "The Z39.50 Server" in the Zebra manual.
+ <filename>http://www.indexdata.dk/zebra/doc/server.tkl</filename>
+ </para>
+ <para>
+ Section "Virtual Hosts" in the YAZ manual.
+ <filename>http://www.indexdata.dk/yaz/doc/server.vhosts.tkl</filename>
+ </para>
+ <para>
+ Section "Specification of CQL to RPN mappings" in the YAZ manual.
+ <filename>http://www.indexdata.dk/yaz/doc/tools.tkl#tools.cql.map</filename>
+ </para>
+ <para>
+ The Zebra software is Copyright <command>Index Data</command>
+ <filename>http://www.indexdata.dk</filename>
+ and distributed under the
+ GPLv2 license.
+ </para>
+ </sect2>
+
+ <!--
<para>
<emphasis remap="bf">Syntax</emphasis>
</varlistentry>
</variablelist>
</para>
-
- <para>
- A <replaceable>listener-address</replaceable> consists of an optional
- transport mode followed by a colon (:) followed by a listener address.
- The transport mode is either <literal>ssl</literal> or
- <literal>tcp</literal> (default).
- </para>
-
- <para>
- For TCP, an address has the form
- </para>
-
- <para>
-
- <screen>
- hostname | IP-number [: portnumber]
- </screen>
-
- </para>
-
- <para>
- The port number defaults to 210 (standard Z39.50 port) for
- privileged users (root), and 9999 for normal users.
- </para>
-
- <para>
- Examples
- </para>
-
- <para>
-
- <screen>
- tcp:@
-
- ssl:@:3000
- </screen>
-
- </para>
-
- <para>
- In both cases, the special hostname "@" is mapped to
- the address INADDR_ANY, which causes the server to listen on any local
- interface. To start the server listening on the registered port for
- Z39.50, and to drop root privileges once the ports are bound, execute
- the server like this (from a root shell):
- </para>
-
- <para>
-
- <screen>
- zebrasrv -u daemon @
- </screen>
-
- </para>
-
- <para>
- You can replace <literal>daemon</literal> with another user, eg.
- your own account, or a dedicated IR server account.
- </para>
-
- <para>
- The default behavior for <literal>zebrasrv</literal> is to establish
- a single TCP/IP listener, for the Z39.50 protocol, on port 9999.
- </para>
-
+ -->
</sect1>
+
<sect1 id="protocol-support">
<title>Z39.50 Protocol Support and Behavior</title>
<!-- <!ENTITY zebrasrv-commands SYSTEM "zebrasrv-commands.xml"> -->
-<!-- $Id: zebrasrv-man.sgml,v 1.3 2005-08-05 14:39:12 marc Exp $ -->
+<!-- $Id: zebrasrv-man.sgml,v 1.4 2005-08-12 12:44:36 marc Exp $ -->
<refentry id="zebrasrv">
<refmeta>
<refname>zebrasrv</refname>
<refpurpose>Zebra Server</refpurpose>
</refnamediv>
-
+
<refsynopsisdiv>
<!--
<cmdsynopsis>
&zebrasrv-synopsis;
</refsynopsisdiv>
<refsect1><title>DESCRIPTION</title>
+ <para>Zebra is a high-performance, general-purpose structured text indexing
+ and retrieval engine. It reads structured records in a variety of input
+ formats (eg. email, XML, MARC) and allows access to them through exact
+ boolean search expressions and relevance-ranked free-text queries.
+ </para>
<para>
- <command>zebrasrv</command> is a Z39.50 and SRW/U server for Zebra.
- On Unix you can run the server from the command line - and put it
+ <command>zebrasrv</command> is the Z39.50 and SRW/U frontend
+ server for the <command>Zebra</command> indexer.
+ </para>
+ <para>
+ On Unix you can run the <command>zebrasrv</command>
+ server from the command line - and put it
in the background. It may also operate under the inet daemon.
On WIN32 you can run the server as a console application or
as a WIN32 Service.
Section "Specification of CQL to RPN mappings" in the YAZ manual.
<filename>http://www.indexdata.dk/yaz/doc/tools.tkl#tools.cql.map</filename>
</para>
+ <para>
+ The Zebra software is Copyright <command>Index Data</command>
+ <filename>http://www.indexdata.dk</filename>
+ and distributed under the
+ GPLv2 license.
+ </para>
</refsect1>
</refentry>
<!--
- $Id: zebrasrv-options.xml,v 1.1 2005-08-05 14:39:12 marc Exp $
+ $Id: zebrasrv-options.xml,v 1.2 2005-08-12 12:44:36 marc Exp $
Options for generic frontend server and yaz-ztest.
Included in both manual and man page for yaz-ztest
-->
debugging, but not recommended for real operation: Although the
server is asynchronous and non-blocking, it can be nice to keep
a software malfunction (okay then, a crash) from affecting all
- current users.
+ current users. The server can only accept a single
+ connection in this mode.
</para></listitem></varlistentry>
<varlistentry><term><literal>-1</literal></term>
<varlistentry><term><literal>-l </literal>
<replaceable>file</replaceable></term>
- <listitem><para>The logfile.
+ <listitem><para>
+ Specify an output file for the diagnostic messages.
+ The default is to write this information to
+ <literal>stderr</literal>
</para></listitem></varlistentry>
<varlistentry><term><literal>-c </literal>
- <replaceable>config</replaceable></term>
- <listitem><para>A user option that serves as a specifier for some
- sort of configuration, usually a filename.
- The argument to this option is transferred to member
- <literal>configname</literal> of the
- <literal>statserv_options_block</literal>.
- </para></listitem></varlistentry>
+ <replaceable>config-file</replaceable></term>
+ <listitem><para> Read configuration information from
+ <replaceable>config-file</replaceable>.
+ The default configuration is <literal>./zebra.cfg</literal>
+ </para></listitem></varlistentry>
<varlistentry><term><literal>-f </literal>
<replaceable>vconfig</replaceable></term>
</para></listitem></varlistentry>
<varlistentry><term><literal>-w </literal>
- <replaceable>dir</replaceable></term>
+ <replaceable>working-directory</replaceable></term>
<listitem><para>
- The server changes to this directory during before listening
+ The server changes to this working directory during before listening
on incoming connections. This option is useful
when the server is operating from the <application>inetd</application>
daemon (see <literal>-i</literal>).
<listitem><para>
Use this to make the the server run from the
<application>inetd</application> server (UNIX only).
+ Make sure you use the logfile option <literal>-l</literal> in
+ conjunction with this mode and specify the <literal>-l</literal>
+ option before any other options.
</para></listitem></varlistentry>
<varlistentry><term><literal>-D</literal></term>
<varlistentry><term><literal>-t </literal>
<replaceable>minutes</replaceable></term>
<listitem><para>
- Idle session timeout, in minutes.
+ Idle session timeout, in minutes. Default is 60 minutes.
</para></listitem></varlistentry>
<varlistentry><term><literal>-k </literal>
<replaceable>size</replaceable></term>
<listitem><para>
- Maximum record size/message size, in kilobytes.
+ Maximum record size/message size, in kilobytes. Default is 1024 KB (1 MB).
</para></listitem>
</varlistentry>
</variablelist>
+
+ <para>
+ A <replaceable>listener-address</replaceable> consists of an optional
+ transport mode followed by a colon (:) followed by a listener address.
+ The transport mode is either a file system socket
+ <literal>unix</literal>,
+ a SSL TCP/IP socket <literal>ssl</literal>, or a plain TCP/IP socket
+ <literal>tcp</literal> (default).
+ </para>
+
+ <para>
+ For TCP, an address has the form
+ <screen>
+ hostname | IP-number [: portnumber]
+ </screen>
+ The port number defaults to 210 (standard Z39.50 port) for
+ privileged users (root), and 9999 for normal users.
+ The special hostname "@" is mapped to
+ the address INADDR_ANY, which causes the server to listen on any local
+ interface. </para>
+
+ <para>
+ The default behavior for <literal>zebrasrv</literal> - if started
+ as non-priviledged user - is to establish
+ a single TCP/IP listener, for the Z39.50 protocol, on port 9999.
+ <screen>
+ zebrasrv @
+ zebrasrv tcp:some.server.name.org:1234
+ zebrasrv ssl:@:3000
+ </screen>
+ </para>
+
+ <para>
+ To start the server listening on the registered port for
+ Z39.50, or on a filesystem socket,
+ and to drop root privileges once the ports are bound, execute
+ the server like this from a root shell:
+ <screen>
+ zebrasrv -u daemon @
+ zebrasrv -u daemon tcp:@:210
+ zebrasrv -u daemon unix:/some/file/system/socket
+ </screen>
+ Here <literal>daemon</literal> is an existing user account, and the
+ unix socket <literal>/some/file/system/socket</literal> is readable
+ and writable for the <literal>daemon</literal> account.
+ </para>
+
+
+
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml