본문 바로가기
아빠방/Article

DSpace 설치 매뉴얼 (1.4.x 버전 기준)

by 탱탱이아빠 2016. 4. 4.

DSpace Installation






목  차

 

1. 개요

2. 환경

3. 준비물

4. 설치

4.1. 기존 JDK 삭제

4.2. 환경설정

4.3. JDK 설치

4.4. Tomcat 설치

4.5. Apache Ant 설치

4.6. JDBC Driver 설치

4.7. 진행사항 확인

4.8. DSpace 환경설정 및 설치

4.9. Tomcat 설정




1. 개요

 

본 문서는 www.dspace.org 에서 제공하는 dspace v.1.4.1 beta 를 설치하기 위한 매뉴얼이다. 2007년 3월에 yourUniversity 도서관의 요청에 의해 설치를 진행하였고 여기에서 발생한 설치관련 사항을 기술한다.

 

 

2. 환경

 

본 문서에서는 아래 표에 기술되어 있는 버전을 중심으로 설명한다.


OS : Redhat Enterprise Linux 4 (Standard Edition)

웹 서버 : Apache Tomcat 6.0.10

JDK : J2SE JDK 1.6

HDD : Root 30G, Apache 30G, dspace 50G, user01 50G, User02 50G

DBMS : Oracle 9.2.0


 

3. 준비물

 

아래 기술되어진 항목을 설치한다.


JSP 컨테이너(Tomcat)

http://ftp.yourUniversity.ac.kr/pub/Apache/tomcat/tomcat-6/v6.0.10/bin/apache-tomcat-6.0.10.tar.gz


Java 컴파일러(JDK)

http://java.sun.com/javase/downloads/index.jsp


Dspace

https://sourceforge.net/project/showfiles.php?group_id=19984&package_id=64285&release_id=469582

1.4.1


Build Tool(Apache ANT)

http://ftp.kaist.ac.kr/pub/Apache/ant/source/apache-ant-1.7.0-src.tar.gz


 


4. 설치

 

dspace계정의 홈 디렉토리는 /home/dspace/ 이다. 이 아래 소스들을 모아놓은 디렉토리를 생성한다.

 

mkdir dspace_source

 

이 아래 각종 필요한 준비물들을 다운받아 둔다.

 

cd  /home/dspace/dspace_source

wget http://ftp.yourUniversity.ac.kr/pub/Apache/ant/source/apache-ant-1.7.0-src.tar.gz

 

각종 준비물들의 설치순서는 다음과 같다.

 

기존 JDK 삭제  -> 새로운 JDK 설치  ->  Tomcat 설치  ->  Apache ANT 설치  ->  JDBC Connector 설치  ->  Dspace 설치  ->  ANT로

 

4.1. 기존 JDK 삭제

 

기존 JDK 버전 1.4.2가 설치되어 있으나 Tomcat을 위해 좀더 상위 버전의 JDK가 필요했다. Dspace 매뉴얼에는 J2SE를 사용해도 충분하다 하여 새로이 다운받은 JDK를 설치하기 위해 기존 JDK를 삭제하였다.

 

Java –version

 

기존 JDK의 버전이 출력되며 whereis 나 find로 java의 경로를 찾은 다음 삭제하여 준다.

 

4.2. 환경설정

 

dspace 계정은 bash를 사용하고 있어 .bash_profile 을 수정하였다.

 

cd

vi  .bash_profile

 

PATH=$PATH:$HOME/bin:/apache/apache-ant-1.7.0/bin:/apache/apache-tomcat-6.0.10/bin:/home/dspace/dspace_work/jdk1.6.0/bin

 

JAVA_HOME=/home/dspace/dspace_work/jdk1.6.0

 

ANT_HOME=/apache/apache-ant-1.7.0

 

CATALINA_HOME=/apache/apache-tomcat-6.0.10

 

JAVA_OPTS="-Xmx512M -Xms64M -Dfile.encoding=UTF-8"

 

CLASSPATH=/apache/apache-tomcat-6.0.10/lib:/dspace/lib

 

export PATH

export CLASSPATH

export JAVA_HOME

export ANT_HOME

export CATALINA_HOME

export JAVA_OPTS

unset USERNAME

source  .bash_profile

 

4.3. JDK 설치

 

이 다운받은 JDK를 원하는 디렉터리로 이동한 다음 압축을 푼다

 

tar  xvf  jdk1.6.0.tar.gz

 

풀려진 디렉터리를 $JAVA_HOME의 경로에 이동한다.

 

mv jdk1.6.0 /home/dspace/dspace_work/jdk1.6.0

 

환경변수에 이미 JDK관련 내역을 설정하였으므로 JDK의 버전을 확인한다.

 

java -version

 

아래와 같은 내용이 나오면 된다.

 

java version "1.6.0"

Java(TM) SE Runtime Environment (build 1.6.0-b105)

Java HotSpot(TM) Server VM (build 1.6.0-b105, mixed mode)

 

4.4. Tomcat 설치

 

JSP를 위해 컨테이너로서 Tomcat을 설치한다. 역시 소스를 모아놓은 디렉터리로 이동하여 압축을 풀어낸다.

 

tar xvf apache-tomcat-6.0.10

 

풀려진 디렉터리를 $CATALINA_HOME의 경로에 이동한다.

 

mv apache-tomcat-6.0.10 /apache/apache-tomcat-6.0.10

 

4.5. Apache Ant 설치

 

DSpace의 Build를 위해 Apache Ant를 설치한다. 역시 소스를 모아놓은 디렉터리로 이동하여 압축을 풀어낸다.

 

tar xvf apache-ant-1.7.0

 

풀려진 디렉터리를 $ANT_HOE의 경로에 이동한다

 

mv apache-ant-1.7.0 /apache/apache-ant-1.7.0

 

4.6. JDBC Driver 설치

 

소스에 모아놓은 JDBC 드라이버 파일들을 $CATALINA_HOME/lib 아래로 복사한다.

 

4.7. 진행사항 확인

 

현재까지 진행되어진 내용을 확인하기 위해 웹 브라우저로 접속해 본다.

 

$CATALINA_HOME/bin/startup.sh

 

http:// yourserverip:8080 접속

 

Tomcat의 초기화면이 나타나면 진행은 잘 되어진 것이다.

 

4.8. DSpace 환경설정 및 설치

 

DSpace 소스 디렉터리의 config 디렉터리로 이동하여 dspace.cfg 파일을 vi로 편집한다.

 

##### Destinations for configuration files for other tools #####

 

# Comment out any lines corresponding to files you don't need, so they

# don't get copied

 

# Example Apache HTTPD configuration

# config.template.apache13.conf = ${dspace.dir}/config/httpd.conf

config.template.log4j.properties = ${dspace.dir}/config/log4j.properties

config.template.log4j-handle-plugin.properties = ${dspace.dir}/config/log4j-handle-plugin.properties

config.template.oaicat.properties = ${dspace.dir}/config/oaicat.properties

 

 

##### Database settings #####

 

# Database name ("oracle", or "postgres")

#db.name = postgres

db.name = oracle

 

# URL for connecting to database

db.url = jdbc:oracle:thin:@yourDBIP:1521:dspace

 

# JDBC Driver

db.driver = oracle.jdbc.OracleDriver

 

# Database username and password

db.username = dspace

db.password = dspace

 

# Connection pool parameters

 

# Maximum number of DB connections in pool

db.maxconnections = 30

 

# Maximum time to wait before giving up if all connections in pool are busy (milliseconds)

db.maxwait = 5000

 

# Maximum number of idle connections in pool (-1 = unlimited)

db.maxidle = -1

 

# Determine if prepared statement should be cached. (default is true)

db.statementpool = true

 

##### Email settings ######

 

# SMTP mail server

mail.server=yourMailServer

 

# SMTP mail server authentication username and password (if required)

mail.server.username = username

mail.server.password = password

 

# From address for mail

mail.from.address = yourMailAddress

 

# Currently limited to one recipient!

feedback.recipient = yourMailAddress

 

# General site administration (Webmaster) e-mail

mail.admin = yourMailAddress

 

# Recipient for server errors and alerts

# alert.recipient = email-address-here

 

 

##### File Storage ######

 

# Asset (bitstream) store number 0 (zero)

assetstore.dir = ${dspace.dir}/assetstore

 

# Specify extra asset stores like this, counting from 1 upwards:

# assetstore.dir.1 = /second/assetstore

# assetstore.dir.2 = /third/assetstore

 

# Specify the number of the store to use for new bitstreams with this property

# The default is 0 (zero) which corresponds to the 'assetstore.dir' above

# assetstore.incoming = 1

 

 

##### SRB File Storage #####

 

# The same 'assetstore.incoming' property is used to support the use of SRB

# (Storage Resource Broker - see http://www.sdsc.edu/srb/) as an _optional_

# replacement of or supplement to conventional file storage. DSpace will work

# with or without SRB and full backward compatibility is maintained.

#

# The 'assetstore.incoming' property is an integer that references where _new_

# bitstreams will be stored.  The default (say the starting reference) is zero.

# The value will be used to identify the storage where all new bitstreams will

# be stored until this number is changed.  This number is stored in the

# Bitstream table (store_number column) in the DSpace database, so older

# bitstreams that may have been stored when 'asset.incoming' had a different

# value can be found.

#

# In the simple case in which DSpace uses local (or mounted) storage the

# number can refer to different directories (or partitions).  This gives DSpace

# some level of scalability.  The number links to another set of properties

# 'assetstore.dir', 'assetstore.dir.1' (remember zero is default),

# 'assetstore.dir.2', etc., where the values are directories.

# To support the use of SRB DSpace uses this same scheme but broadened to

# support:

# - using SRB instead of the local filesystem

# - using the local filesystem (native DSpace)

# - using a mix of SRB and local filesystem

#

# In this broadened use the 'asset.incoming' integer will refer one of the

# following storage locations

# - a local filesystem directory (native DSpace)

# - a set of SRB account parameters (host, port, zone, domain, username,

#       password, home directory, and resource)

#

# Should the be any conflict, like '2' refering to a local directory and

# to a set of SRB parameters, the program will select the local directory.

#

# If SRB is chosen from the first install of DSpace, it is suggested that

# 'assetstore.dir' (no integer appended) be retained to reference a local

# directory (as above under File Storage) because build.xml uses this value

# to do a mkdir. In this case, 'assetstore.incoming' can be set to 1 (i.e.

# uncomment the line in File Storage above) and the 'assetstore.dir' will not

# be used.

#

# Here is an example set of SRB parameters:

# Assetstore 1 - SRB

#srb.host.1 = mysrbmcathost.myu.edu

#srb.port.1 = 5544

#srb.mcatzone.1 = mysrbzone

#srb.mdasdomainname.1 = mysrbdomain

#srb.defaultstorageresource.1 = mydefaultsrbresource

#srb.username.1 = mysrbuser

#srb.password.1 = mysrbpassword

#srb.homedirectory.1 = /mysrbzone/home/mysrbuser.mysrbdomain

#srb.parentdir.1 = mysrbdspaceassetstore

#

# Assetstore n, n+1, ...

# Follow same pattern as for assetstores above (local or SRB)

 

 

# Directory for history serializations

history.dir = ${dspace.dir}/history

 

# Where to put the logs

log.dir = ${dspace.dir}/log

 

# Where to temporarily store uploaded files

upload.temp.dir = ${dspace.dir}/upload

 

# Maximum size of uploaded files in bytes, negative setting will result in no limit being set

# 512Mb

upload.max = 536870912

 

 

##### Search settings #####

 

# Where to put search index files

search.dir = ${dspace.dir}/search

 

# Higher values of search.max-clauses will enable prefix searches to work on

# large repositories

# search.max-clauses = 2048

 

# Which Lucene Analyzer implementation to use.  If this is omitted or

# commented out, the standard DSpace analyzer (designed for English)

# is used by default.

# search.analyzer = org.dspace.search.DSAnalyzer

 

# Chinese analyzer

# search.analyzer = org.apache.lucene.analysis.cn.ChineseAnalyzer

 

# Boolean search operator to use, current supported values are OR and AND

# If this config item is missing or commented out, OR is used

# AND requires all search terms to be present

# OR requires one or more search terms to be present

search.operator = OR

 

 

###### Statistical Report Configuration Settings ######

 

# should the stats be publicly available?  should be set to false if you only

# want administrators to access the stats, or you do not intend to generate

# any

report.public = false

 

# directory where live reports are stored

report.dir = ${dspace.dir}/reports/

 

 

##### Handle settings ######

 

# CNRI Handle prefix

handle.prefix = 123456789

 

# Directory for installing Handle server files

handle.dir = ${dspace.dir}/handle-server

 

 

#### Stackable Authentication Methods #####

# Stack of authentication methods

#  (See org.dspace.eperson.AuthenticationManager)

plugin.sequence.org.dspace.eperson.AuthenticationMethod = \

        org.dspace.eperson.PasswordAuthentication

 

#### Example of configuring X.509 authentication

#### (to use it, add org.dspace.eperson.X509Authentication to auth stack above)

 

## method 1, using keystore

#authentication.x509.keystore.path = /tomcat/conf/keystore

#authentication.x509.keystore.password = changeit

 

## method 2, using CA certificate

#authentication.x509.ca.cert = ${dspace.dir}/config/MyClientCA.pem

 

## Create e-persons for unknown names in valid certificates?

#authentication.x509.autoregister = true

 

##### Web UI Settings ######

 

## webui.ldap.autoregister ##

#

# This will turn LDAP autoregistration on or off.  With this

# on, a new EPerson object will be created for any user who

# successfully authenticates against the LDAP server when they

# first login.  With this setting off, the user

# must first register to get an EPerson object by

# entering their ldap username and password and filling out

# the forms.

webui.ldap.autoregister = true

 

# Should the submit UI block submissions marked as theses?

webui.submit.blocktheses = false

 

# whether to display thumbnails on browse and search results pages (1.2+)

webui.browse.thumbnail.show = false

 

# max dimensions of the browse/search thumbs. Must be <= thumbnail.maxwidth

# and thumbnail.maxheight. only need to be set if required to be smaller than

# dimension of thumbnails generated by mediafilter (1.2+)

#webui.browse.thumbnail.maxheight = 80

#webui.browse.thumbnail.maxwidth = 80

 

# whether to display the thumb against each bitstream (1.2+)

webui.item.thumbnail.show = true

 

# where should clicking on a thumbnail from browse/search take the user

# only values currently supported are "item" and "bitstream"

#webui.browse.thumbnail.linkbehaviour = item

 

#### Settings for Item Preview ####

webui.preview.enabled = false

# max dimensions of the preview image

webui.preview.maxwidth = 600

webui.preview.maxheight = 600

# the brand text

webui.preview.brand = My Institution Name

# an abbreviated form of the above text, this will be used

# when the preview image cannot fit the normal text

webui.preview.brand.abbrev = MyOrg

# the height of the brand

webui.preview.brand.height = 20

# font settings for the brand text

webui.preview.brand.font = SansSerif

webui.preview.brand.fontpoint = 12

#webui.preview.dc = rights

 

# whether to display collection and community strengths

webui.strengths.show = false

 

# whether to display the contents of the licence bundle (often just the deposit

# licence in standard DSpace installation

webui.licence_bundle.show = false

# Customise the DC metadata fields to show in the default simple item view.

#

# The form is <schema prefix>.<element>[.<qualifier>|.*][(date)|(link)], ...

#

# For example:

#    dc.title               = Dublin Core element 'title' (unqualified)

#    dc.title.alternative   = DC element 'title', qualifier 'alternative'

#    dc.title.*             = All fields with Dublin Core element 'title'

#                             (any or no qualifier)

#    dc.identifier.uri(link) = DC identifier.uri, render as a link

#    dc.date.issued(date)   = DC date.issued, render as a date

#

# If an item has no value for a particular field, it won't be displayed.

# The name of the field for display will be drawn from the current UI

# dictionary, using the key:

#

# "metadata.<field>"

#

# e.g.   "metadata.dc.title"

#        "metadata.dc.contributor.*"

#        "metadata.dc.date.issued"

#

#webui.itemdisplay.default = dc.title, dc.title.alternative, dc.contributor.*, \

#                            dc.subject, dc.date.issued(date), dc.publisher, \

#                            dc.identifier.citation, dc.relation.ispartofseries, \

#                            dc.description.abstract, dc.description, \

#                            dc.identifier.govdoc, dc.identifier.uri(link), \

#                            dc.identifier.isbn, dc.identifier.issn, \

#                            dc.identifier.ismn, dc.identifier

 

# Specify which collections use which views by Handle.

#

# webui.itemdisplay.<style>.collections = <collection handle>, ...

#

# FIXME: This should be more database-driven

#

# webui.itemdisplay.thesis.collections = 123456789/24, 123456789/35

 

# Customise the DC fields to use in the item listing page.  Elements will be

# displayed left to right in the order that they are specified here.

#

# The form is <schema prefix>.<element>[.<qualifier>|.*][(date)], ...

#

# Although not a requirement, it would make sense to include among the listed

# fields at least the date and title fields as specified by the

# webui.browse.index.* configuration options below.

#

# webui.itemlist.columns = dc.date.issued(date), dc.title, dc.contributor.*

 

# Set the bindings for the DC browse fields.  These determine which metadata

# elements are used for browse by date, author, title and subject.  In addition,

# these settings will be used to determine the behaviour of the fields on the

# listing page: dates will be formatted as required, and titles will be links

# to item metadata pages.  At least the date and title fields ought to be

# specified in the webui.itemlist.columns parameters.

#

# The form is <schema prefix>.<element>[.<qualifier>|.*], ...

#

# NOTE: if you make changes to this configuration to an existing DSpace

# installation you must re-index the system using:

#

# % [dspace]/bin/index-all

#

# webui.browse.index.date = dc.date.issued

# webui.browse.index.author = dc.contributor.*

# webui.browse.index.title = dc.title

# webui.browse.index.subject = dc.subject.*

 

 

##### SFX Server #####

 

# SFX query is appended to this URL.  If this property is commented out or

# omitted, SFX support is switched off.

# sfx.server.url = http://sfx.myu.edu:8888/sfx?

 

 

##### Ingest settings #####

 

# Default language for metadata values

default.language = en_US

 

 

##### Media Filter settings #####

# maximum width and height of generated thumbnails

thumbnail.maxwidth  80

thumbnail.maxheight 80

 

 

##### Fulltext Indexing settings #####

# Maximum number of terms indexed for a single field in Lucene.

# Default is 10,000 words - often not enough for full-text indexing.

# If you change this, you'll need to re-index for the change

# to take effect on previously added items.

# -1 = unlimited (Integer.MAX_VALUE)

search.maxfieldlength = 10000

 

 

##### Fields to Index for Search #####

 

# DC metadata elements.qualifiers to be indexed for search

# format: - search.index.[number] = [search field]:element.qualifier

#         - * used as wildcard

 

###      changing these will change your search results,     ###

###  but will NOT automatically change your search displays  ###

 

search.index.1 = author:dc.contributor.*

search.index.2 = author:dc.creator.*

search.index.3 = title:dc.title.*

search.index.4 = keyword:dc.subject.*

search.index.5 = abstract:dc.description.abstract

search.index.6 = author:dc.description.statementofresponsibility

search.index.7 = series:dc.relation.ispartofseries

search.index.8 = abstract:dc.description.tableofcontents

search.index.9 = mime:dc.format.mimetype

search.index.10 = sponsor:dc.description.sponsorship

search.index.11 = identifier:dc.identifier.*

search.index.12 = language:dc.language.iso

 

 

#### Creative Commons settings ######

# are Creative Commons licenses used in submission?

 

webui.submit.enable-cc = false

 

 

#### OAI-PMH settings #####

# Max response size for DIDL. This is the maximum size in bytes of the files you

# wish to enclose Base64 encoded in your responses, remember that the base64

# encoding process uses a lot of memory. We recommend at most 200000 for answers

# of 30 records each on a 1 Gigabyte machine. Ultimately this will change to a

# streaming model and remove this restriction. Also please remember to allocate

# plenty of memory, at least 512 MB to your Tomcat.

#

# Optional: DSpace uses 100 records as the limit for the oai responses. You can

# alter this by changing $DSPACE_SOURCE_DIR/src/org/dspace/app/oai/DSpaceOAICatalog.java to modify the

# declaration:

# private final int MAX_RECORDS = 100 to private final int MAX_RECORDS = 30

# oai.didl.maxresponse = 0

 

#### Proxy Settings ######

# uncomment and specify both properties if proxy server required

# proxy server for external http requests - use regular hostname without port number

#http.proxy.host =

 

# port number of proxy server

#http.proxy.port =

 

 

#### LDAP Authentication Configuration Settings ####

#

# If LDAP is enabled, then new users will be able to register

# by entering their username and  password without being sent the

# registration token. If users do not have a username and password,

# then they  can still register and login with just their email address

# the same way they do now.

#

# For providing any special privileges to LDAP users,

# you will still need to extend the SiteAuthenticator class to

# automatically put people who have a netid into a special

# group.  You might also want to give certain email addresses

# special privileges. Refer to the DSpace documentation for more

# information about how to do this.

#

# It may be necessary to obtain the values of these settings from the

# LDAP server administrators as LDAP configuration will vary from server

# to server.

 

# This setting will enable or disable LDAP authentication in DSpace.

# With the setting off, users will be required to register and login with

# their email address.  With this setting on, users will be able to login

# and register with their LDAP user ids and passwords.

ldap.enable = false

 

# This is the url to the institution's ldap server. The /o=myu.edu

# may or may not be required depending on the LDAP server setup.

# A server may also require the ldaps:// protocol.

#ldap.provider_url = ldap://ldap.myu.edu/o=myu.edu

 

# This is the unique identifier field in the LDAP directory

# where the username is stored.

#ldap.id_field = uid

 

# This is the object context used when authenticating the

# user.  It is appended to the ldap.id_field and username.

 

# For example uid=username,ou=people,o=myu.edu.  This must match

# the LDAP server configuration.

#ldap.object_context = ou=people,o=myu.edu

 

# This is the search context used when looking up a user's

# LDAP object to retrieve their data for autoregistering.

# With ldap.autoregister turned on, when a user authenticates

# without an EPerson object, a search on the LDAP directory to

# get their name and email address is initiated so that DSpace

# can create a EPerson object for them.  So after we have authenticated against

# uid=username,ou=people,o=byu.edu we now search in ou=people

# for filtering on [uid=username].  Often the

# ldap.search_context is the same as the ldap.object_context

# parameter.  But again this depends on each individual LDAP server

# configuration.

#ldap.search_context = ou=people

 

# This is the LDAP object field where the user's email address

# is stored.  "mail" is the default and the most common for

# LDAP servers.  If the mail field is not found the username

# will be used as the email address when creating the eperson

# object.

#ldap.email_field = mail

 

# This is the LDAP object field where the user's last name is

# stored.  "sn" is the default and is the most common for LDAP

# servers.  If the field is not found the field will be left

# blank in the new eperson object.

#ldap.surname_field = sn

 

# This is the LDAP object field where the user's given names

# are stored.  This may not be used or set in all LDAP instances.

# If the field is not found the field will be left blank in the

# new eperson object.

#ldap.givenname_field = givenName

 

# This is the field where the user's phone number is stored in

# the LDAP directory.  If the field is not found the field

# will be left blank in the new eperson object.

#ldap.phone_field = telephoneNumber

 

#### Media Filter plugins (through PluginManager) ####

 

plugin.sequence.org.dspace.app.mediafilter.MediaFilter = \

    org.dspace.app.mediafilter.PDFFilter, org.dspace.app.mediafilter.HTMLFilter, \

    org.dspace.app.mediafilter.WordFilter, org.dspace.app.mediafilter.JPEGFilter

# to enable branded preview: remove last line above, and uncomment 2 lines below

#   org.dspace.app.mediafilter.WordFilter, org.dspace.app.mediafilter.JPEGFilter, \

#   org.dspace.app.mediafilter.BrandedPreviewJPEGFilter

 

filter.org.dspace.app.mediafilter.PDFFilter.inputFormats = Adobe PDF

filter.org.dspace.app.mediafilter.HTMLFilter.inputFormats = HTML, Text

filter.org.dspace.app.mediafilter.WordFilter.inputFormats = Microsoft Word

filter.org.dspace.app.mediafilter.JPEGFilter.inputFormats = GIF, JPEG, image/png

filter.org.dspace.app.mediafilter.BrandedPreviewJPEGFilter.inputFormats = GIF, JPEG, image/png

 

#### Syndication Feed Settings ######

# enable syndication feeds - links display on community and collection home pages

webui.feed.enable = false

# number of DSpace items per feed (the most recent submissions)

webui.feed.items = 4

# maximum number of feeds in memory cache

 

# value of 0 will disable caching

webui.feed.cache.size = 100

# number of hours to keep cached feeds before checking currency

# value of 0 will force a check with each request

webui.feed.cache.age = 48

# which syndication formats to offer

# use one or more (comma-separated) values from list:

# rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0

webui.feed.formats = rss_1.0,rss_2.0

# URLs returned by the feed will point at the global handle server (e.g. http://hdl.handle.net/123456789/1)

# Set to true to use local server URLs (i.e. http://myserver.myorg/handle/123456789/1)

webui.feed.localresolve = false

 

# Customize each single-value field displayed in the

# feed information for each item.  Each of

# the below fields takes a *single* metadata field

#

# The form is <schema prefix>.<element>[.<qualifier>|.*]

webui.feed.item.title = dc.title

webui.feed.item.date = dc.date.issued

 

# Customise the metadata fields to show in the feed for each item's description.

# Elements will be displayed in the order that they are specified here.

#

# The form is <schema prefix>.<element>[.<qualifier>|.*][(date)], ...

#

# Similar to the item display UI, the name of the field for display

# in the feed will be drawn from the current UI dictionary,

# using the key:

# "metadata.<field>"

#

# e.g.   "metadata.dc.title"

#        "metadata.dc.contributor.author"

#        "metadata.dc.date.issued"

webui.feed.item.description = dc.title, dc.contributor.author, \

                                                          dc.contributor.editor, dc.description.abstract, \

                                                          dc.description

 

 

#### Item Recommendation Settings #####

# show a link to the item recommendation page from item display page

webui.suggest.enable = false

# default name of recommender - replaced by user input if present

webui.suggest.sender = A DSpace user

# default name of recipient - replaced by user input if present

webui.suggest.recipient = colleague

 

 

#### Controlled Vocabulary Settings #####

# Enable or disable the controlled vocabulary add-on

# Warning: this feature is not compatible with WAI (it requires javascript to function)

#

# webui.controlledvocabulary.enable = true

 

#### Multi-file HTML document/site settings #####

#

# When serving up composite HTML items, how deep can the request be for us to

# serve up a file with the same name?

#

# e.g. if we receive a request for "foo/bar/index.html"

# and we have a bitstream called just "index.html"

# we will serve up that bitstream for the request if webui.html.max-depth-guess

# we will serve up that bitstream for the request if webui.html.max-depth-guess

# is 2 or greater.  If webui.html.max-depth-guess is 1 or less, we would not

# serve that bitstream, as the depth of the file is greater.

#

# If webui.html.max-depth-guess is zero, the request filename and path must

# always exactly match the bitstream name.  Default value is 3.

#

# webui.html.max-depth-guess = 3

 

#### Checksum Checker Settings ####

# Default dispatcher in case none specified

plugin.single.org.dspace.checker.BitstreamDispatcher=org.dspace.checker.SimpleDispatcher

 

# check history retention

checker.retention.default=10y

checker.retention.CHECKSUM_MATCH=8w

 

#### Crosswalk and Packager Plugin Settings ####

 

# Configure table-driven MODS dissemination crosswalk

#  (add lower-case name for OAI-PMH)

crosswalk.mods.properties.MODS = crosswalks/mods.properties

crosswalk.mods.properties.mods = crosswalks/mods.properties

 

# Configure XSLT-driven submission crosswalk for MODS

crosswalk.submission.MODS.stylesheet= crosswalks/mods-submission.xsl

 

# Configure the QDCCrosswalk dissemination plugin for Qualified DC

#  (add lower-case name for OAI-PMH)

crosswalk.qdc.namespace.QDC.dc = http://purl.org/dc/elements/1.1/

crosswalk.qdc.namespace.QDC.dcterms = http://purl.org/dc/terms/

crosswalk.qdc.schemaLocation.QDC  = \

  http://purl.org/dc/terms/ http://dublincore.org/schemas/xmls/qdc/2006/01/06/dcterms.xsd \

  http://purl.org/dc/elements/1.1/ http://dublincore.org/schemas/xmls/qdc/2006/01/06/dc.xsd

crosswalk.qdc.properties.QDC = crosswalks/QDC.properties

 

crosswalk.qdc.namespace.qdc.dc = http://purl.org/dc/elements/1.1/

crosswalk.qdc.namespace.qdc.dcterms = http://purl.org/dc/terms/

crosswalk.qdc.schemaLocation.qdc  = \

  http://purl.org/dc/terms/ http://dublincore.org/schemas/xmls/qdc/2006/01/06/dcterms.xsd \

  http://purl.org/dc/elements/1.1/ http://dublincore.org/schemas/xmls/qdc/2006/01/06/dc.xsd

crosswalk.qdc.properties.qdc = crosswalks/QDC.properties

 

# METS ingester configuration:

# map of metadata type declared in mdWrap to a crosswalk plugin name:

mets.submission.crosswalk.DC = QDC

 

# Option to save METS manifest in the item: (default is false)

mets.submission.preserveManifest = false

 

# Crosswalk Plugins:

plugin.named.org.dspace.content.crosswalk.IngestionCrosswalk = \

  org.dspace.content.crosswalk.PREMISCrosswalk = PREMIS \

  org.dspace.content.crosswalk.NullIngestionCrosswalk = NIL

 

plugin.selfnamed.org.dspace.content.crosswalk.IngestionCrosswalk = \

org.dspace.content.crosswalk.XSLTIngestionCrosswalk

plugin.named.org.dspace.content.crosswalk.DisseminationCrosswalk = \

  org.dspace.content.crosswalk.SimpleDCDisseminationCrosswalk = DC \

  org.dspace.content.crosswalk.SimpleDCDisseminationCrosswalk = dc \

  org.dspace.content.crosswalk.PREMISCrosswalk = PREMIS \

  org.dspace.content.crosswalk.METSDisseminationCrosswalk = METS \

  org.dspace.content.crosswalk.METSDisseminationCrosswalk = mets

 

plugin.selfnamed.org.dspace.content.crosswalk.DisseminationCrosswalk = \

  org.dspace.content.crosswalk.MODSDisseminationCrosswalk , \

  org.dspace.content.crosswalk.XSLTDisseminationCrosswalk, \

  org.dspace.content.crosswalk.QDCCrosswalk

 

# Packager Plugins:

 

plugin.named.org.dspace.content.packager.PackageDisseminator = \

  org.dspace.content.packager.DSpaceMETSDisseminator = METS

 

plugin.named.org.dspace.content.packager.PackageIngester = \

  org.dspace.content.packager.PDFPackager  = Adobe PDF, PDF, \

  org.dspace.content.packager.DSpaceMETSIngester = METS

 

다음으로는 file upload를 위해 dspace의 소스파일을 수정해야 한다. Oracle을 DBMS로 활용하기 위해서는 DSpace에서 지원하는 데이터타입의 수정이 필수이다.

 

아래의 경로로 이동한다.

 

cd /home/dspace/dspace_work/dspace-1.4.1-source/src/org/dspace/storage/rdbms

 

실제 수정이 필요한 파일은 DatabaseManager.java 와 TableRow.java 파일이다.

 

else if ((jdbctype == Types.INTEGER) || (jdbctype == Types.DECIMAL)) {

statement.setInt(count, row.getIntColumn(column));

continue;

}

 

DatabaseManager.java파일을 열어 위와 같은 부분을 찾은 후 아래와 같이 변경하여 준다. 대략 1400번대 라인에 위치해 있다.

 

else if ((jdbctype == Types.INTEGER) || (jdbctype == Types.DECIMAL)) {

if ("oracle".equals(ConfigurationManager.getProperty("db.name"))) {

if (row.isLongColumn(column))

statement.setLong(count,row.getLongColumn(column));

else

statement.setInt(count,row.getIntColumn(column));

}

else

statement.setInt(count,row.getIntColumn(column));

continue;

}

 

다음으로는 TableRow.java 파일을 열어 아래와 같은 부분을 찾는다.

 

if (!(value instanceof Long))

        {

            throw new IllegalArgumentException("Value is not an long");

        }

 

위 내용을 아래와 같이 수정하여 준다.

 

 

if (!(value instanceof Long)) {

   throw new IllegalArgumentException("Value for " + column  + " is not a long");

}

 

여기까지 진행되었으면 DSpace를 설치할 수 있는 준비가 된 것이다.

 

실제 DSpace의 설치는 Ant를 이용한 자동 빌드로 이루어 진다.

 

DSpace 소스 디렉터리로 이동하여 build.xml 파일이 존재하는 경로에서 아래와 같은 명령을 준다.

 

ant fresh_install

 

이렇게 하면 여러가지 설치가 진행된 후 성공메시지가 보이게 되는데 만약 빌드가 실패하였을 경우 오류 메시지를 분석하여 다시 빌드를 진행해야 하는데 이때 주의할 사항은 ant로 자동 빌드를 돌리면서 Oracle에 여러가지 테이블, 뷰, 시퀀스 등을 생성했는데 이것들을 모두 지우고 처음부터 빌드를 다시 진행해야 하는것이다.

 

빌드가 완료되면 build 디렉터리에 dspace.war 파일이 생성될 것이고 /dspace 아래 아래와 같은 내용들이 생성되었을 것이다.

 

drwxrwxr-x   3 dspace dspace  4096  4?? 5 20:14 assetstore

drwxrwxr-x   2 dspace dspace  4096  4?? 5 17:24 bin

drwxrwxr-x   7 dspace dspace  4096  4?? 5 17:24 config

drwxrwxr-x   2 dspace dspace  4096  4?? 5 17:24 handle-server

drwxrwxr-x   3 dspace dspace  4096  4?? 5 17:25 history

drwxrwxr-x   3 dspace dspace  4096  4?? 5 17:24 lib

drwxrwxr-x   2 dspace dspace  4096  4?? 5 17:24 log

drwx------   2 root   root   16384  3??26 11:27 lost+found

drwxrwxr-x   2 dspace dspace  4096  4?? 5 17:24 reports

drwxrwxr-x   2 dspace dspace  4096  4?? 5 20:14 search

drwxrwxr-x   2 dspace dspace  4096  4?? 5 20:14 upload

 

이후 build 디렉터리 아래 있는 dspace.war 파일을 $CATALINA_HOME/webapps/ 로 복사한다.

 

cp dspace.war $CATALINA_HOME/webapps

 

dspace 설치는 완료되었다. 이후 Tomcat의 세부설정이 필요하다.

 

4.9. Tomcat 설정

 

$CATALINA_HOME 디렉터리 아래 conf 디렉터리가 존재하고 이 아래 server.xml 파일이 있는데 이 파일을 수정하여 dspace를 http://dspace.yourUniversity.ac.kr 에 정상적으로 보일 수 있도록 한다.

 

<!-- define subcomponents such as "Valves" at this level.

     Documentation at /docs/config/server.html

-->

<Server port="8005" shutdown="SHUTDOWN">

 

  <!--APR library loader. Documentation at /docs/apr.html -->

  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

  <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->

  <Listener className="org.apache.catalina.core.JasperListener" />

  <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->

  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />

  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

 

  <!-- Global JNDI resources

       Documentation at /docs/jndi-resources-howto.html

  -->

  <GlobalNamingResources>

    <!-- Editable user database that can also be used by

         UserDatabaseRealm to authenticate users

    -->

    <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

              description="User database that can be updated and saved"

              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"

              pathname="conf/tomcat-users.xml" />

  </GlobalNamingResources>

 

  <!-- A "Service" is a collection of one or more "Connectors" that share

       a single "Container" Note:  A "Service" is not itself a "Container",

       so you may not define subcomponents such as "Valves" at this level.

       Documentation at /docs/config/service.html

   -->

  <Service name="Catalina">

 

    <!-- A "Connector" represents an endpoint by which requests are received

         and responses are returned. Documentation at :

         Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)

         Java AJP  Connector: /docs/config/ajp.html

         APR (HTTP/AJP) Connector: /docs/apr.html

         Define a non-SSL HTTP/1.1 Connector on port 8080

    -->

    <Connector port="80" protocol="HTTP/1.1"

               maxThreads="150" connectionTimeout="20000"

                URIEncoding="UTF-8"

               redirectPort="8443" />

 

    <!-- Define a SSL HTTP/1.1 Connector on port 8443

         This connector uses the JSSE configuration, when using APR, the

         connector should be using the OpenSSL style configuration

         described in the APR documentation -->

    <!--

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

               maxThreads="150" scheme="https" secure="true"

               clientAuth="false" sslProtocol="TLS" />

    -->

 

    <!-- Define an AJP 1.3 Connector on port 8009 -->

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

analyzes the HTTP headers included with the request, and passes them

         on to the appropriate Host (virtual host).

         Documentation at /docs/config/engine.html -->

 

    <!-- You should set jvmRoute to support load-balancing via AJP ie :

    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">

    -->

    <Engine name="Catalina" defaultHost="localhost">

 

      <!--For clustering, please take a look at documentation at:

          /docs/cluster-howto.html  (simple how to)

          /docs/config/cluster.html (reference documentation) -->

      <!--

      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

      -->

 

      <!-- The request dumper valve dumps useful debugging information about

           the request and response data received and sent by Tomcat.

           Documentation at: /docs/config/valve.html -->

      <!--

      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>

      -->

 

      <!-- This Realm uses the UserDatabase configured in the global JNDI

           resources under the key "UserDatabase".  Any edits

           that are performed against this UserDatabase are immediately

           available for use by the Realm.  -->

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

             resourceName="UserDatabase"/>

 

      <!-- Define the default virtual host

           Note: XML Schema validation will not work with Xerces 2.2.

       -->

      <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications

             Documentation at: /docs/config/valve.html -->

        <!--

        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

        -->

 

        <!-- Access log processes all example.

             Documentation at: /docs/config/valve.html -->

        <!--

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

        -->

<Context Path="" docBase="/apache/apache-tomcat-6.0.10/webapps/dspace.war"/>

</Host>

    </Engine>

  </Service>

</Server>

 

이렇게 수정한 다음 /apache/apache-tomcat-6.0.10/webapps 아래 있는 ROOT 디렉터리를 삭제한다.

 

rm –r /apache/apache-tomcat-6.0.10/webapps/ROOT

 

마지막으로 root 계정으로 접속하여 /apache/apache-tomcat-6.0.10/bin 아래 있는 startup.sh 파일을 실행시켜준다.

 

root로 접속하는 이유는 80포트의 경우 root만이 실행권한을 가지고 있기 때문이다.



반응형

댓글