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만이 실행권한을 가지고 있기 때문이다.
'아빠방 > Article' 카테고리의 다른 글
문서관리시스템 기반 PQ문서 자동생성 시스템에 관한 연구 (0) | 2016.10.16 |
---|---|
한국학 학술논문의 텍스트 구조 기반 메타데이터 검색 시스템 개발 연구 (0) | 2016.09.22 |
LNG-FPSO 선박 장비들의 보전활동 지원시스템 개발에 관한 연구 (0) | 2016.04.04 |
기관리포지터리 (Institutional Repository : IR) 도입을 위한 기초자료 (0) | 2016.04.02 |
DRF (Digital Repository Federation) 동향 (0) | 2016.04.02 |
댓글