refdbd
Prev | Chapter 11. The application server | Next

## Name

refdbd — the application server of RefDB

## Synopsis

`refdbd` [`-b` `dbs-port`] [`-d` `default-database`] [`-D` `dbserver`] [`-e` `log-destination`] [`-E` `encoding`] [`-h` ] [`-i` `IP-address`] [`-I` ] [`-k` ] [`-K` ] [`-l` `log-level`] [`-L` `log-file`] [`-p` `port`] [`-P` `PID-file`] [`-q` ] [`-r` ] [`-s` ] [`-S` `note-share-mode`] [`-T` `time`] [`-U` ] [`-v` ] [`-V` ] [`-y` `confdir`] [`-Y` `libdbidir`]

`refdbd` {[`-a`] | [`-c`]} [`-b` `dbs-port`] [`-D` `dbserver`] [`-e` `log-destination`] [`-E` `encoding`] [`-h` ] [`-i` `IP-address`] [`-l` `log-level`] [`-L` `log-file`] [`-p` `port`] [`-P` `PID-file`] [`-q` ] [`-u` `username`] [`-v` ] [`-V` ] [`-w` `password`] [`-y` `confdir`] [`-Y` `libdbidir`]

## Description

refdbd is the application server of RefDB(7). refdbd contains most of the application logic of RefDB and interacts with the database engine. refdbd must run somewhere in your network to do anything useful with the RefDB clients. refdbd usually runs as a daemon and responds to client requests, but it can be started as a regular process for debugging purposes. To start refdbd as a server, use the first command synopsis shown above.

It is recommended to use a wrapper script to start and stop refdbd. If you want to start and stop refdbd manually, use refdbctl(1). If you want to run refdbd as a daemon, use refdb(8). Edit the configuration file (see below) to permanently configure refdbd.

In addition to being run as a server, refdbd can also be invoked to check, install, or upgrade the main database. Refer to the second command synopsis shown above.

## Options

`-a`

  Runs refdbd to install or upgrade the main database. refdbd will exit after performing the maintenance tasks. In order to perform the maintenance tasks you have to provide a database administrator username and password using the `-u` and `-w` options, respectively, if your database engine uses access control. Some database configurations (e.g. PostgreSQL on Debian) further require you to run the administrative tasks from a special privileged user account (often called pgsql or postgres). If you use one of the file-based engines (SQLite or SQLite3), you must run the tool from an account which has write permissions in the database folder. refdbd first checks whether a main database already exists. If not, it will attempt to install it. Otherwise, it will upgrade the database to the current version if required. refdbd will print an error message to stderr if the maintenance job fails, and exit with a non-zero exit code.

`-b` `dbs-port`

  Set the port on which the database server listens for incoming connections. The default is 3306 for MySQL and 5432 for PostgreSQL. This option does not apply if you use SQLite as your database engine.

`-c`

  Runs refdbd to check the main database version and the database engine connection. refdbd will exit after performing the maintenance tasks. In order to perform the maintenance tasks you have to provide a database administrator username and password using the `-u` and `-w` options, respectively, if your database engine uses access control. If you use one of the file-based engines (SQLite or SQLite3), you must run the tool from an account which has read permissions for the main database file. refdbd will print an error message to stderr if the check fails, and exit with a non-zero exit code.

`-d` `default-database`

  Set a default database to be used for all client queries that do not specify a database.

`-D` `dbserver`

  Select the database server. Currently the values mysql, pgsql, and sqlite are supported to select MySQL, PostgreSQL, and SQLite, respectively.

`-e` `log-destination`

  This specifies the destination of the log information. If destination is 0 or "stderr", the log output is sent to stderr. This should only be used for debugging purposes when refdbd is not run as a daemon. If destination is 1 or "syslog", the syslog facility of the system is used. syslog has to be configured properly to accept refdb's log output. Consult the syslogd(8) man page how to achieve this. If destination is 2 or "file", a custom log file as defined by the -L switch is used instead. If this log file cannot be written to, refdbd falls back to using syslog.

`-E` `encoding`

  Select the default character encoding for new reference databases. This feature is currently supported only by PostgreSQL (and only if PostgreSQL was built with the --enable-multibyte option),. See the PostgreSQL manual for a full list of supported encodings. As of this writing, SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE, MULE_INTERNAL, LATIN1 through LATIN5, KOI8, WIN and ALT are available. You can override this default by using the -E option of the createdb command.

`-h`

  Displays help and usage screen, then exits.

`-i` `IP-address`

  For external database servers, set the IP address of the box which is running the database server. Instead of the IP address you can also specify the hostname as long as it can be properly resolved by your system. If the database server runs on the same box as refdbd, use the string localhost. Note: If localhost does not seem to work, try specifying the real IP address of the box instead - some database client libraries refuse to use TCP/IP for local connections which may cause mayhem on particular systems. For embedded database engines, this option sets the directory which contains the database files. The default is `/usr/local/share/refdb/db`. Note: SQLite on Cygwin has a bug which prevents the use of absolute paths. Use a relative path instead by leaving out the leading slash. This assumes that refdbd is started from the root directory. The start script refdbctl does this automatically.

`-I`

  Set this switch to allow remote connections to refdbd. Otherwise only connections from localhost (127.0.0.1) will be answered.

`-k`

  refdb stores up to four names (full name, official abbreviation, and two user-defined abbreviations) of each periodical. These synonyms are shared by all references that use one of these periodical names. As it sometimes requires some effort to get at the synonyms (public reference data often contains only the official abbreviation), it is desirable to keep these synonyms even if you remove the last reference that uses a particular periodical name. If you use the -k option, the synonyms will not be removed from the database and will be available immediately if you add a new reference using that particular periodical name.

`-K`

  If this option is used, refdbd will run an automatic keyword scan each time you add or update references. refdbd will scan the title fields and the abstract field of the modified references for any keywords already present in the database but not in the particular reference. This increases the usability of keywords in queries. There is no speed decrease for the user interaction as the keyword scan is performed in the background. See also the related refdba command scankw which performs a more thorough manual keyword scan.

`-l` `log-level`

  Set the log level to a value between 0 and 7 or to a string value as described in log level definitions. 0 means that only critical log messages will be logged, while a value of 7 means that every log message will be logged. Set level to -1 to disable logging.

`-L` `log-file`

  This switch specifies a custom log file (full path please). This will only be used if the -e switch is set accordingly.

`-p` `port`

  Set the port on which refdbd listens for incoming connections. The default is 9734.

`-P` `PID-file`

  Specify the full path of the file that refdbd writes its process ID to. This PID simplifies stopping and reconfiguring the application server from the command line. The default value is /var/log/refdbd.pid.

`-q`

  Start without reading the configuration file. Useful for debugging purposes

`-r`

  Enables remote administration via refdba.

`-s`

  Starts as a standalone application, not as daemon.

`-S` `note-share-mode`

  Set the default extended note share mode to either public or private. This setting affects the accessibility of extended notes if they do not explicitly carry a share attribute. See the section about notes sharing for more information.

`-T` `time`

  Set the timeout for client/application server dialogue in seconds.

`-u` `name`

  Set the username of the database administrator account.

`-U`

  This switch causes refdbd to automatically uppercase all citation keys of newly added references. This makes it more convenient to work with SGML bibliographies.

`-v`

  Prints version and copyright information, then exits.

`-V`

  Switches to verbose mode. To be honest, currently this doesn't make much of a difference.

`-w` `password`

  The password of the database administrator account. You can pass an asterisk to let refdbd ask for a password interactively. This keeps your password from showing up in the process list. Keep in mind that you have to protect the asterisk on the command line by surrounding it with single quotes.

`-y` `confdir`

  Specify the directory where the global configuration files are Note: By default, all RefDB applications look for their configuration files in a directory that is specified during the configure step when building the package. That is, you don't need the `-y` option unless you use precompiled binaries in unusual locations, e.g. by relocating a rpm package.

`-Y` `libdbidir`

  Specify the directory where the libdbi drivers are Note: By default, libdbi (the database abstraction library used by refdbd) looks for its driver files in a directory that is specified during the configure step when building the package. That is, you don't need the `-Y` option unless you use precompiled libdbi binaries in unusual locations, e.g. by relocating a rpm package.

## Configuration

Table 11.1. refdbdrc

Variable | Default | Comment
--- | --- | ---
refdblib | `/usr/local/share/refdb` | The path of the directory containing shareable refdb files like DTDs, HTML templates etc. Actually, most of the files are in subdirectories of refdblib.
dbsport | 3306 | The port on which the database server listens. Use either 3306 or 5432 for MySQL and PostgreSQL, respectively. This variable is ignored if you use SQLite as your database engine.
dbserver | sqlite | The database server you want to connect to. Use one of mysql, pgsql, or sqlite to select MySQL, PostgreSQL, or SQLite as your database engine, respectively.
dbpath | /usr/local/var/lib/refdb/db | The directory that contains the database files of an embedded database engine. Leave out the leading slash if you use SQLite on Cygwin.
logdest | 2 | The destination of the log information. 0 = print to stderr (for debugging only, don't use when running as a daemon); 1 = use the syslog facility; 2 = use a custom logfile. The latter needs a proper setting of logfile.
logfile | /var/log/refdbd.log | The full path of a custom log file. This is used only if logdest is set appropriately. If you start refdbd from the command line as a regular user, you should specify a file that you have write access to (you may not be allowed to create `/var/log/refdbd.log` or write to this file as a regular user).
loglevel | 6 | The log level up to which messages will be sent. A low setting (0) will notify you only in case of a meltdown, whereas a high setting (7) allows all messages including debug messages (this is a lot). -1 means nothing will be logged.
pidfile | /var/log/refdb.pid | The file refdbd writes its process ID to. If you start refdbd from the command line as a regular user, you should specify a file that you have write access to (you may not be allowed to create `/var/log/refdbd.pid` or write to this file as a regular user).
port | 9734 | The port on which refdbd listens. The server and all clients that are supposed to connect to it must agree on the same port. Obviously, this option allows to run several instances of refdbd on the same box if there is a good reason to do so. In this case you should also use separate log and pid files.
remoteadmin | f | Set this to 't' to allow remote administration via refdba. Be aware that this is a security risk.
serverip | localhost | The IP address or hostname of the machine where the database server runs. Use the default (localhost) address if the database server and refdbd run on the same machine.
timeout | 180 | The timeout in seconds. After this time has elapsed, a stalled connection is taken down. Increase this value if you encounter frequent timeout errors due to high network traffic.
keep_pnames | t | Set this to 't' to keep periodical names and synonyms if you remove references. If set to 'f', the names will be removed from the database if the last reference using these names is deleted.
db_encoding | (none) | Specify the default character encoding for new refdb reference databases. If the database server supports this feature (currently only PostgreSQL does), all new databases will use this encoding unless a different one is specified with the createdb command.
in_encoding | ISO-8859-1 | Specify the default character encoding for RIS data being added to databases.
dbi_driverdir | (none) | Specify the directory containing the libdbi driver files. As mentioned above, this is only necessary if you use precompiled libdbi binaries in funny locations.
keyword_scan | t | Set this to 't' to allow an automatic keyword scan after references are added or updated. 'f' will switch off this feature.
upper_citekey | f | Set this to 't' to uppercase all citation keys of newly added references (this makes sure they work with SGML bibliographies).
share_default | public | Whether ("public") or not ("private") to share extended notes between users by default. See the section about notes sharing for more information.
remoteconnect | f | Set this to 't' to allow remote connections to refdbd. By default, refdbd accepts only local connections due to security concerns.

## Files

`/usr/local/etc/refdb/refdbdrc`

The global configuration file of refdbd.

## See also

RefDB (7), refdb (8), refdbctl (1), refdba (1), refdbc (1).

RefDB manual (local copy) <prefix>/share/doc/refdb-<version>/refdb-manual/index.html

RefDB manual (web) <http://refdb.sourceforge.net/manual/index.html>

RefDB on the web <http://refdb.sourceforge.net/>

## Author

refdbd was written by Markus Hoenicka <markus@mhoenicka.de>.

Prev | Up | Next
refdbctl | Home | refdb