Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Maven 2
Fedora uses Maven for its build environment. Maven2 is available from http://maven.apache.org/.

Installation Steps

Prepare Environment Variables

...

The following environment variables must be correctly defined:

...

DISPLAY (Unix-only)
When running a Fedora server in a Unix-like operating system (Linux, Solaris, OS X, etc), you should ensure that this environment variable is NOT set by the user who will be running the application server in which Fedora is installed (e.g. Tomcat). Background: Fedora and the included web applications are designed to run without access to a graphics output device. Although rare, having this environment variable set has been reported to cause stability problems in certain installations of Fedora. Since a graphic output device should never be needed by the Fedora server, it is safest to ensure this environment variable is not set.

Prepare Database

...

...

Fedora is designed to be RDBMS-independent. Fedora has been tested with Derby, McKoi, MySQL, Oracle, PostgreSQL and Microsoft SQL Server. The embedded version of Derby included with the installer is provided as a convenience; Derby is not recommended for use in production repositories. If you choose to use any database other than the embedded Derby provided by the Fedora Installer, you must install that database first.

Follow the instructions below for the RDBMS of your choice in order to create the user and tables required by Fedora.

MySQL

...

Please note that the MySQL JDBC driver provided by the installer requires MySQL v3.23.x or higher.

...

Panel

ALTER DATABASE fedora3 DEFAULT CHARACTER SET utf8;
ALTER DATABASE fedora3 DEFAULT COLLATE utf8_bin;

Oracle

...

To prepare Oracle for use with Fedora, the following steps should be taken by an administrative user. First, using the Database Configuration Assistant, ensure that the database you'll be using is created with the UTF8 charset. Next, you'll need to create a Fedora tablespace and user in the database. Assuming the administrative user is sys and the SID is fedora3, log in using SQL*Plus using the following command:

Panel

sqlplus sys/PASSWORD@fedora3 as sysdba

To create a tablespace named "fedora_tblspace" with data in /var/lib/oracle, enter the following:
Panel

CREATE TABLESPACE fedora_tblspace
DATAFILE '/var/lib/oracle/fedora_tblspace.dat' SIZE 1024M REUSE
AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED
SEGMENT SPACE MANAGEMENT AUTO;

To create a user "fedoraAdmin" with password "fedoraAdmin", using the "fedora_tblspace", enter the following:
Panel

CREATE USER fedoraAdmin IDENTIFIED BY fedoraAdmin
DEFAULT TABLESPACE fedora_tblspace;

Using the GRANT command, make sure the user has permission to connect, create, alter, and drop tables sequences, triggers, and indexes in this tablespaces. For example:

Panel

GRANT ALL PRIVILEGES TO fedoraAdmin;

NOTE: Due to distribution license restrictions, the Fedora Installer does not include the Oracle JDBC driver. Oracle JDBC drivers are available from http://technet.oracle.com/software/tech/java/sqlj_jdbc/content.html. The installer will prompt you for the location of the driver on your filesystem. Also, if you run Fedora in Java 6 as is required by Fedora 3.4, you will need an Oracle Java 6 jdbc jar such as ojdbc6.jar.

PostgreSQL

...

...

Please consult the documentation at http://www.postgresql.org/docs/ for more detailed information about configuring PostgreSQL.

...

Panel

CREATE ROLE "fedoraAdmin" LOGIN PASSWORD 'fedoraAdmin';
CREATE DATABASE "fedora3" WITH ENCODING='UTF8' OWNER="fedoraAdmin";

Microsoft SQL Server

...

...

David Handy has contributed a guide for interfacing Fedora with MS SQL Server

Other Databases

...

To use a database other than Derby, McKoi, MySQL, Oracle, PostgreSQL and Microsoft SQL Server, the database must support common SQL-92 syntax and you must have a JDBC version 3 driver available.

...

  1. Create the tables and indexes and auto-increments yourself in your own database (see the file: src/dbspec/server/fedora/server/storage/resources/DefaultDOManager.dbspec in the source distribution for the RDBMS-neutral table specifications).

  2. Write a subclass of fedora.server.utilities.DDLConverter for your database software, include it in the Fedora WEB-INF/classes directory or in a jar file in the Fedora WEB-INF/lib directory, and associate it with the JDBC driver inside the FEDORA_HOME/server/config/fedora.fcfg file (see how it's done by looking at the MySQLDDLConverter and DerbyDDLConverter associations with their respective drivers in the fedora.fcfg file, and the classes' implementations in the source distribution). If you choose option #2, please tell us about it, as it will be useful for other users of Fedora. Option 2 is harder, but it will make future installations of new versions of Fedora (where the db schema will likely change) much easier for you if you plan on using that database later.

Run Installer

...

The Fedora Installer provides three installation options: quick, custom, and client.

...

If you selected the quick install option, you will find Tomcat installed in FEDORA_HOME/tomcat. To run Fedora, start Tomcat by entering:

Panel

$FEDORA_HOME/tomcat/bin/startup.sh

(or for Windows)
Panel

"%FEDORA_HOME%\tomcat\bin\startup.bat"

If you selected the custom install option, ensure that your database server is running (unless you selected the included Derby option which will be automatically started when the first database connection is made).

Advanced Configuration

...

The Fedora Server's configuration is chiefly governed by the Fedora Server Configuration File, fedora.fcfg, located at FEDORA_HOME/server/config/fedora.fcfg.

The Fedora server configuration file contains:

  • Global parameters for the Fedora server
  • Configuration parameters for each server module
  • Configuration parameters for each persistent data store

The configuration file has a simple schema. It starts with a server element, under which a series of parameter elements occur, followed by a series of module elements, followed by a series of datastore elements. The parameter elements directly following the root server element are used to control what are considered generic server functionality; for example: the port on which the server is exposed.

The module elements are used to configure specific parts of Fedora. For instance, the module with the role attribute fedora.server.search.FieldSearch is used to configure the field-searching component of the server. Inside the module element, several param elements are included. These are specific to that module's implementation. Descriptions of each parameter can currently be found in the configuration file itself.

The datastore elements are used to configure various databases that might be used by the system. Although the sample configuration file holds several, you will typically only need one. The datastore elements are associated with the modules by means of a parameter inside the associated module. In the sample configuration file, for example, the poolNames parameter of the fedora.server.storage.ConnectionPoolManager module refers to one of the datastore elements in its value.

There are many other parameters you can configure with Fedora. Refer to the Fedora Server Configuration File itself (fedora.fcfg) for internal documentation on all the parameters.

Logging

Fedora uses the Simple Logging Facade for Java (SLF4J) framework for logging with Logback as the actual logging implementation. For detailed information about using SLF4J, consult the SLF4J Manual: http://www.slf4j.org/manual.html, and for information about using Logback consult the Logback manual: http://logback.qos.ch/manual/index.html.

The log configuration file is located at FEDORA_HOME/server/config/logback.xml. One of the benefits of using SLF4J and Logback is that configuration changes take effect without needint to restart the server.

Normally, coarse-grained logs for Fedora are written to FEDORA_HOME/server/logs/fedora.log. The following examples show the kinds of configuration changes you can make to aid in debugging.

To change the level to DEBUG for all Fedora classes, change the logger name="org.fcrepo" line to the following:

Panel

<logger name="org.fcrepo" additivity="false" level="DEBUG">

To change the level to DEBUG for just one class, add the following lines:
Panel

log4j.logger.fedora.server.utilities.SQLUtility = DEBUG, FEDORA
log4j.additivity.fedora.server.utilities.SQLUtility = false

To change the level to DEBUG for a whole package, add the following lines:

Panel

<logger name="org.fcrepo.server.resourceIndex" additivity="false" level="DEBUG">
<appender-ref ref="FEDORA"/>

Installing the Demo Objects

If you just started Fedora for the first time, it's a good idea to check out the demonstration objects to get an idea of how Fedora works. See the Demonstration documentation for complete descriptions.

NOTE: If, during a custom install, you entered values other than the defaults for fedoraServerHost (localhost) or fedoraServerPort (8080), you must run the demo object converter utility script to change the host and/or port in the demonstration object ingest files. The demonstration object conversion is only required if you are ingesting demonstration objects. If the demonstration objects are already ingested into the repository (e.g. from a previous installation), there is no need for conversion. The demonstration objects are shipped with references to "localhost:8080" and these references must reflect the new values of fedoraServerHost fedoraServerPort. Refer to the Command-line Utilities documentation for additional details on running the demo object converter.

To ingest the demonstration objects, at a command prompt, enter:

Panel

Wiki Markup
fedora-ingest-demos.sh \[hostname\] \[port\] \[username\] \[password\] \[protocol\]

(or for Windows)

Panel

Wiki Markup
fedora-ingest-demos.bat \[hostname\] \[port\] \[username\] \[password\] \[protocol\]

...

Installing the Demo Objects

If you just started Fedora for the first time, it's a good idea to check out the demonstration objects to get an idea of how Fedora works. See the Demonstration documentation for complete descriptions.

NOTE: If, during a custom install, you entered values other than the defaults for fedoraServerHost (localhost) or fedoraServerPort (8080), you must run the demo object converter utility script to change the host and/or port in the demonstration object ingest files. The demonstration object conversion is only required if you are ingesting demonstration objects. If the demonstration objects are already ingested into the repository (e.g. from a previous installation), there is no need for conversion. The demonstration objects are shipped with references to "localhost:8080" and these references must reflect the new values of fedoraServerHost fedoraServerPort. Refer to the Command-line Utilities documentation for additional details on running the demo object converter.

To ingest the demonstration objects, at a command prompt, enter:

Panel

Wiki Markup
fedora-ingest-demos.sh \[hostname\] \[port\] \[username\] \[password\] \[protocol\]

(or for Windows)

Panel

Wiki Markup
fedora-ingest-demos.bat \[hostname\] \[port\] \[username\] \[password\] \[protocol\]

For additional information on the fedora-ingest-demos command, see the documentation for the Client Command-line Utilities. Please note that the demonstration objects must be ingested before they can be discovered using the default search interface.

Additional Configuration

fedora.fcfg

The Fedora Server's configuration is chiefly governed by the Fedora Server Configuration File, fedora.fcfg, located at FEDORA_HOME/server/config/fedora.fcfg.

The Fedora server configuration file contains:

  • Global parameters for the Fedora server
  • Configuration parameters for each server module
  • Configuration parameters for each persistent data store

The configuration file has a simple schema. It starts with a server element, under which a series of parameter elements occur, followed by a series of module elements, followed by a series of datastore elements. The parameter elements directly following the root server element are used to control what are considered generic server functionality; for example: the port on which the server is exposed.

The module elements are used to configure specific parts of Fedora. For instance, the module with the role attribute fedora.server.search.FieldSearch is used to configure the field-searching component of the server. Inside the module element, several param elements are included. These are specific to that module's implementation. Descriptions of each parameter can currently be found in the configuration file itself.

The datastore elements are used to configure various databases that might be used by the system. Although the sample configuration file holds several, you will typically only need one. The datastore elements are associated with the modules by means of a parameter inside the associated module. In the sample configuration file, for example, the poolNames parameter of the fedora.server.storage.ConnectionPoolManager module refers to one of the datastore elements in its value.

There are many other parameters you can configure with Fedora. Refer to the Fedora Server Configuration File itself (fedora.fcfg) for internal documentation on all the parameters.

Logging

Fedora uses the Simple Logging Facade for Java (SLF4J) framework for logging with Logback as the actual logging implementation. For detailed information about using SLF4J, consult the SLF4J Manual: http://www.slf4j.org/manual.html, and for information about using Logback consult the Logback manual: http://logback.qos.ch/manual/index.html.

The log configuration file is located at FEDORA_HOME/server/config/logback.xml. One of the benefits of using SLF4J and Logback is that configuration changes take effect without needint to restart the server.

Normally, coarse-grained logs for Fedora are written to FEDORA_HOME/server/logs/fedora.log. The following examples show the kinds of configuration changes you can make to aid in debugging.

To change the level to DEBUG for all Fedora classes, change the logger name="org.fcrepo" line to the following:

Panel

<logger name="org.fcrepo" additivity="false" level="DEBUG">

To change the level to DEBUG for just one class, add the following lines:
Panel

log4j.logger.fedora.server.utilities.SQLUtility = DEBUG, FEDORA
log4j.additivity.fedora.server.utilities.SQLUtility = false

To change the level to DEBUG for a whole package, add the following lines:

Panel

<logger name="org.fcrepo.server.resourceIndex" additivity="false" level="DEBUG">
<appender-ref ref="FEDORA"/>