Встановлення DSpace на ОС Debian

Версія від 13:57, 22 серпня 2016, створена Dubyk (обговореннявнесок) (Встановлення DSpace та ініціалізація БД)

Встановлення DSpace на ОС Debian

Зміст

Встановлення DSpace 5.5 на ОС Debian GNU/Linux 8 Jessie

Джерела

Необхідне програмне забезпечення

З офіційної документації [1]:

  • Oracle Java JDK or OpenJDK
  • Java 8 update 20 or later, or Java 7 update 55 or later. DS-2653 - Java 8 Support for DSpace Accepted
  • Apache Maven 3.0.5+ (Java build tool)
  • Apache Ant 1.8 or later (Java build tool)
  • PostgreSQL 9.0 or later. Oracle 10g or later.
  • Servlet Engine (Apache Tomcat 7 (7.0.30 or above) or later, Jetty, Caucho Resin or equivalent). Для Tomcat 8 ймовірно потрібні деякі налаштування.
  • Perl (only required for [dspace]/bin/dspace-info.pl)

Присутнє у Debian GNU/Linux 8 Jessie та бекпортах:

  • openjdk-7-jdk (7u95-2.6.4-1~deb8u1 and others)
  • openjdk-8-jdk (8u72-b15-1~bpo8+1)
  • tomcat7 (7.0.56-3+deb8u1), (7.0.68-1~bpo8+1)
  • tomcat8 (8.0.14-1+deb8u1), (8.0.32-1~bpo8+1)
  • maven (3.0.5-3)
  • ant (1.9.4-3)
  • postgresql (9.4+165+deb8u1)

Розглядаємо варіант встановлення openjdk-8-jdk+tomcat8.

Підключення додаткових репозитаріїв

У файл /etc/apt/sources.list додаємо (перевіряємо навність) наступні джерела пакунків

deb http://ftp.ua.debian.org/debian/ jessie main contrib non-free..
deb-src http://ftp.ua.debian.org/debian/ jessie main contrib non-free..
deb http://security.debian.org/ jessie/updates contrib main..
deb-src http://security.debian.org/ jessie/updates contrib main..
deb http://ftp.ua.debian.org/debian/ jessie-updates contrib main non-free.
deb-src http://ftp.ua.debian.org/debian/ jessie-updates contrib main non-free.

(чи інщі дзеркала стабільної версії)

deb http://ftp.ua.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://ftp.ua.debian.org/debian/ jessie-backports main contrib non-free

Оновлюємо перелік пакунків та систему

apt-get update
apt-get upgrade

Встановлення Java OpenJDK 8

apt-get purge openjdk-7-*
apt-get install  openjdk-8-jdk

та вибрати саме цей варіант (OpenJDK 8) як основний:

update-alternatives --config java

Встановлення Tomcat, Maven, Ant

apt-get install tomcat8
apt-get install maven
apt-get install ant

Встановлення БД postgresql

sudo apt-get install postgresql postgresql-contrib libpg-java

Налаштування PostgreSQL

У файлі /etc/postgresql/9.4/main/postgresql.conf розкоментувати рядок

listen_addresses = 'localhost'

Збільшення загальної пам’яті ядра для клієнтських підключень сервера PostgreSQL

Редагуємо файл "/etc/sysctl.conf":

sudo mcedit /etc/sysctl.conf

Вставити наприкінці файлу наступне:

# For PostgreSQL server client connections
kernel.shmmax = 500000000
kernel.shmall = 500000000

Див. також: http://www.postgresql.org/docs/9.3/static/kernel-resources.html

Також виконати:

sudo sysctl -p

Налаштування прав доступу до PostgreSQL на основі хост-сервера

Див. посилання в офіційній документації щодо файлу "pg_hba.conf":

Змінюємо користувацькі привілеї до БД на лише "trust".

sudo sed -i 's/ident/trust/' /etc/postgresql/9.4/main/pg_hba.conf
sudo sed -i 's/md5/trust/' /etc/postgresql/9.4/main/pg_hba.conf
sudo sed -i 's/peer/trust/' /etc/postgresql/9.4/main/pg_hba.conf

Дивіться приклад нижче.

# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
local   all             postgres                                trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                trust
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust

Налаштування прав доступу до БД "dspace" PostgreSQL на основі хост-сервера:

sudo echo "## DSpace DB user access">> /etc/postgresql/9.4/main/pg_hba.conf
sudo echo "host    dspace       dspace      127.0.0.1/32         md5" >> /etc/postgresql/9.4/main/pg_hba.conf

Перезапуск сервера БД.

sudo service postgresql restart

Створення користувача "dspace" та БД "dspace" PostgreSQL

Створюємо користувача БД (dspace) та БД DSpace (dspace)

sudo su postgres
createuser -U postgres -d -A -P dspace
createdb -U dspace -E UNICODE dspace
exit

При створенні користувача придумуємо пароль.

Також може бути питання про створення нових користувачів - Shall the new role be allowed to create more new roles? (y/n) n

Перезапуск postgresql

service postgresql restart

Налаштування пароля, власника та привілеїв БД "dspace" та користувача "dspace"

З’єднуємося зі сервером БД PostgreSQL та входимо у оболонку PostgreSQL.

psql -U postgres -d dspace

Встановити пароль для користувача "dspace" (вказуємо свій варіант):

ALTER ROLE dspace WITH PASSWORD 'XXXXXX';

Нехай користувач "dspace" буде власником БД "dspace"

ALTER DATABASE dspace OWNER TO dspace;

Надати усі привілеї для БД "dspace" користувачу "dspace"

GRANT ALL PRIVILEGES ON DATABASE dspace TO dspace;

Додаємо розширення "crypto" до БД "dspace".

CREATE EXTENSION pgcrypto;

Вихід з оболонки БД.

\q

Встановлення максимального числа з’єднань клієнта сервера PostgreSQL

Зауваження: DS-2563: Error releasing database connection

Редагуємо файл налаштування postgresql :

sudo mcedit /etc/postgresql/9.4/main/postgresql.conf

Змінюємо число "max_connections" на 300. Зауважте: якщо отримуватимете помилки з’єднання, то підкрутіть це значення!

Перезапускаємо сервер PostgreSQL

sudo service postgresql restart

phppgadmin

Адмін-застосунок для доступу до БД Postgres

sudo apt-get install phppgadmin

Редагуємо /etc/apache2/conf-available/phppgadmin.conf, щоб додати доступ з інших IP:

закоментовуємо

#Require local

та додаємо

allow from 127.0.0.0/255.0.0.0 ::1/128
allow from 10.246.28.27/255.255.255.0 ::1/128
allow from 192.168.151.246/255.255.255.0 ::1/128

(чи для всіх - allow from all)

Перезапуск веб-сервера Apache:

sudo /etc/init.d/apache2 restart

Перевіряємо доступ з вибраних IP

http://localhost/phppgadmin/

Корисні посилання

Створення користувача DSpace

sudo useradd -m dspace sudo passwd dspace

Придумуємо пароль.


Створення теки [dspace] для розміщення виконавчого коду DSpace

sudo mkdir /home/data
sudo mkdir /home/data/dspace
sudo chown dspace:dspace /home/data
sudo chown dspace:dspace /home/data/dspace

Звантаження, компіляція та встановлення випуску DSpace

Звантаження

Використовуємо джерельні тексти DSpace з github (доступні також і на SourceForge).

https://github.com/DSpace/DSpace/releases

На поточний час останньою стабільною версією є DSpace 5.5 (https://github.com/DSpace/DSpace/releases/tag/dspace-5.5)

Вхід від користувача dspace

su dspace

Тека для джерельних текстів

mkdir /home/dspace/source
cd /home/dspace/source

Звантаження останньої стабільної версії

wget https://github.com/DSpace/DSpace/releases/download/dspace-5.5/dspace-5.5-src-release.tar.gz -O dspace-5.5-src-release.tar.gz

Розпакування

tar -zxf dspace-5.5-src-release.tar.gz 

Компіляція

cd /home/dspace/source/dspace-5.5-src-release/
mvn -U package

Cтягує багато пакунків з repo.maven.apache.org та інших (бажано швидкий доступ до Інтернет).

Довго.

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] DSpace Parent Project ............................. SUCCESS [24.579s]
[INFO] DSpace Services Framework :: API and Implementation  SUCCESS [34.343s]
[INFO] DSpace Kernel :: API and Implementation ........... SUCCESS [7:35.974s]
[INFO] DSpace Addon Modules .............................. SUCCESS [0.022s]
[INFO] DSpace Kernel :: Additions and Local Customizations  SUCCESS [24.464s]
[INFO] DSpace XML-UI (Manakin) ........................... SUCCESS [2:22.551s]
[INFO] DSpace XML-UI (Manakin) :: Local Customizations ... SUCCESS [8.485s]
[INFO] DSpace JSP-UI ..................................... SUCCESS [5.212s]
[INFO] DSpace JSP-UI :: Local Customizations ............. SUCCESS [3.017s]
[INFO] DSpace RDF ........................................ SUCCESS [2.600s]
[INFO] DSpace RDF :: Local Customizations ................ SUCCESS [3.424s]
[INFO] DSpace REST :: API and Implementation ............. SUCCESS [1:56.880s]
[INFO] DSpace REST :: Local Customizations ............... SUCCESS [3.468s]
[INFO] DSpace SWORD ...................................... SUCCESS [1.113s]
[INFO] DSpace SWORD :: Local Customizations .............. SUCCESS [2.591s]
[INFO] DSpace SWORD v2 ................................... SUCCESS [41.825s]
[INFO] DSpace SWORD v2 :: Local Customizations ........... SUCCESS [4.364s]
[INFO] Apache Solr Webapp ................................ SUCCESS [1:01.951s]
[INFO] DSpace SOLR :: Local Customizations ............... SUCCESS [2:31.404s]
[INFO] DSpace OAI-PMH .................................... SUCCESS [3:28.408s]
[INFO] DSpace OAI-PMH :: Local Customizations ............ SUCCESS [3.519s]
[INFO] DSpace Assembly and Configuration ................. SUCCESS [17.359s]
[INFO] DSpace XML-UI Mirage2 Theme ....................... SUCCESS [0.659s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 22:01.151s
[INFO] Finished at: Mon Aug 22 14:21:42 EEST 2016
[INFO] Final Memory: 70M/269M
[INFO] ------------------------------------------------------------------------

Тека встановлення та доступ до БД

У файлі налаштувань DSpace

/home/dspace/source/dspace-5.5-src-release/dspace/target/dspace-installer/config/dspace.cfg 

встановлюємо наступне

# DSpace installation directory
dspace.dir = /home/data/dspace
# Database username and password
db.username = dspace
db.password = MYPASSWORD

(пароль до БД встановлювався вище)

Встановлення DSpace та ініціалізація БД

su dspace

cd /home/dspace/source/dspace-5.5-src-release/dspace/target/dspace-installer

ant fresh_install
[echo] ====================================================================
[echo]  The DSpace code has been installed.
[echo] 
[echo]  To complete installation, you should do the following:
[echo] 
[echo]  * Setup your Web servlet container (e.g. Tomcat) to look for your
[echo]    DSpace web applications in: /home/data/dspace/webapps/
[echo] 
[echo]    OR, copy any web applications from /home/data/dspace/webapps/ to
[echo]    the appropriate place for your servlet container.
[echo]    (e.g. '$CATALINA_HOME/webapps' for Tomcat)
[echo] 
[echo]  * Start up your servlet container (e.g. Tomcat). DSpace now will
[echo]    initialize the database on the first startup.
[echo] 
[echo]  * Make an initial administrator account (an e-person) in DSpace:
[echo] 
[echo]    /home/data/dspace/bin/dspace create-administrator
[echo] 
[echo]  You should then be able to access your DSpace's 'home page':
[echo] 
[echo]    http://localhost:8080/xmlui
[echo] 
[echo] ====================================================================
[echo]         
BUILD SUCCESSFUL
Total time: 16 seconds

Встановлення DSpace 1.8.1 на ОС Debian 6 (ЗАСТАРІЛО)

Встановлення ОС Debian GNU/Linux 6 Squeeze

Детальніше: Встановлення ОС Debian Linux.

Sun Java 6 JDK

sudo apt-get install sun-java6-jdk

— прийняти ліцензію

та вибрати саме цей варіант як основний:

sudo update-alternatives --config java

вивід:

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6-sun/jre/bin/java       63        manual mode

Press enter to keep the current choice[*], or type selection number: 2

Веб-сервер Tomcat та Maven

sudo apt-get install tomcat6 maven2

(„ant“ включено до maven2)

Postgresql

sudo apt-get install postgresql

Налаштування локального доступу до БД Postgresql. Редагуємо файл pg_hba.conf:

sudo mc -e /etc/postgresql/9.1/main/pg_hba.conf

Знаходимо наступні рядки:

закоментовуємо —

# Database administrative login by UNIX sockets
# local   all         postgres                          ident

та додаємо —

local all postgres trust

закоментовуємо —

# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
#local all all ident

та додаємо —

local all all trust

Перезапустити Postgresql, щоб задіяти зміни:

sudo /etc/init.d/postgresql restart

Веб-сервер Apache

sudo apt-get install apache2

Оскільки 80 буде зайнятий Tomcat-ом, переналаштовуємо Apache на 8888.

Редагувати /etc/apache2/ports.conf:

#NameVirtualHost *:80
#Listen 80
NameVirtualHost *:8888
Listen 8888

та /etc/apache2/sites-enabled/000-default

<VirtualHost *:8080>
…

Перезапуск Apache:

sudo /etc/init.d/apache2 restart

phppgadmin

Адмін-застосунок для доступу до БД Postgres

sudo apt-get install phppgadmin

Редагуємо /etc/phppgadmin/apache.conf, щоб додати доступ з інших IP:

allow from 10.246.28.27/255.255.255.0 ::1/128
allow from 192.168.151.246/255.255.255.0 ::1/128

(allow from 127.0.0.0/255.0.0.0 ::1/128 теж залишити)

Перезапуск веб-сервера Apache:

sudo /etc/init.d/apache2 restart

Перевіряємо доступ з вибраних IP

http://dspace.tntu.edu.ua:8888/phppgadmin/

Користувач „dspace“

sudo useradd -m dspace

(-m також створює домашню теку)

Додати до „sudoers“ (Встановлення ОС Debian Linux#Sudo).

Надалі всі дії проводити від користувача „dspace“:

su dspace

БД „dspace“

Створення користувача „dspace“ (користувач БД)

sudo createuser -U postgres -d -A -P dspace

ввести пароль 2 рази і „yes“

Створення чистої БД „dspace“ для користувача „dspace“:

sudo createdb -U dspace -E UNICODE dspace

Звантаження DSpace 1.8.1

Від користувача „dspace“

su dspace

створити теку

mkdir source;cd source

та звантажити джерельні тексти

wget http://sourceforge.net/projects/dspace/files/DSpace%20Stable/1.8.1/dspace-1.8.1-src-release.tar.bz2/download -O dspace-1.8.1-src-release.tar.bz2

й розпакувати

tar -xvjf dspace-1.8.1-src-release.tar.bz2

Налаштування „dspace.cfg“

Мінімальне початкове налаштування.

cd dspace-1.8.1-src-release/dspace/config/
mc -e dspace.cfg

Наведені лише зміни (дещо має бути закоментовано):

dspace.hostname = elartu.tntu.edu.ua
dspace.baseUrl = http://elartu.tntu.edu.ua

dspace.name = ELARTU

#db.name = ${default.db.name}
db.name = postgres

#db.url = ${default.db.url} 
db.url = jdbc:postgresql://localhost:5432/dspace

#db.driver = ${default.db.driver}
db.driver = org.postgresql.Driver

#db.username = ${default.db.username}
#db.password = ${default.db.password}
db.username = dspace
db.password = abrakadabra

mail.server = smtp.tu.edu.te.ua
mail.from.address = serhij dubyk@ts tu.edu.ua
feedback.recipient = serhij dubyk@ts tu.edu.ua
mail.admin = serhij dubyk@ts tu.edu.ua
alert.recipient = serhij dubyk@ts tu.edu.ua
registration.notify = serhij dubyk@ts tu.edu.ua
mail.charset = UTF8

Тека /dspace

sudo mkdir /dspace
sudo chown dspace /dspace

Побудова maven-пакунка

cd /home/dspace/source/dspace-1.8.1-src-release/dspace
mvn package

При цьому звантажуються файли *.jar та *.pom, а у виводі можна побачити щось на кшталт наступного:

… 
Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar
Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.jar
Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-repository-builder/1.0-alpha-2/maven-repository-builder-1.0-alpha-2.jar
[INFO] [assembly:directory-single {execution: default}]
[INFO] Reading assembly descriptor: src/assemble/assembly.xml
[WARNING] Cannot include project artifact: org.dspace:dspace:pom:1.8.1; it doesn't have an associated file or directory.
[WARNING] The following patterns were never triggered in this artifact exclusion filter:
[WARNING] NOTE: Currently, inclusion of module dependencies may produce unpredictable results if a version conflict occurs.
[INFO] Copying files to /home/dspace/source/dspace-1.8.1-src-release/dspace/target/dspace-1.8.1-build
[INFO] 
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] ------------------------------------------------------------------------
[INFO] DSpace Addon Modules .................................. SUCCESS [1:49.420s]
[INFO] DSpace XML-UI (Manakin) :: Web Application ............ SUCCESS [3:01.210s]
[INFO] DSpace LNI :: Web Application ......................... SUCCESS [12.231s]
[INFO] DSpace OAI :: Web Application ......................... SUCCESS [6.012s]
[INFO] DSpace JSP-UI :: Web Application ...................... SUCCESS [13.066s]
[INFO] DSpace SWORD :: Web Application ....................... SUCCESS [3.177s]
[INFO] DSpace SWORDv2 :: Web Application ..................... SUCCESS [34.394s]
[INFO] DSpace SOLR :: Web Application ........................ SUCCESS [18.529s]
[INFO] DSpace Assembly and Configuration ..................... SUCCESS [56.354s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 minutes 15 seconds
[INFO] Finished at: Fri Feb 17 14:02:02 EET 2012
[INFO] Final Memory: 61M/205M
[INFO] ------------------------------------------------------------------------

Встановлення

cd /home/dspace/source/dspace-1.8.1-src-release/dspace/target/dspace-1.8.1-build
ant fresh_install

Частина виводу:

    [echo] ====================================================================
    [echo]  The DSpace code has been installed, and the database initialized.
    [echo] 
    [echo]  To complete installation, you should do the following:
    [echo] 
    [echo]  * Setup your Web servlet container (e.g. Tomcat) to look for your
    [echo]    DSpace web applications in: /dspace/webapps/
    [echo] 
    [echo]    OR, copy any web applications from /dspace/webapps/ to
    [echo]    the appropriate place for your servlet container.
    [echo]    (e.g. '$CATALINA_HOME/webapps' for Tomcat)
    [echo] 
    [echo]  * Make an initial administrator account (an e-person) in DSpace:
    [echo] 
    [echo]    /dspace/bin/dspace create-administrator
    [echo] 
    [echo]  * Start up your servlet container (Tomcat etc.)
    [echo] 
    [echo]  You should then be able to access your DSpace's 'home page':
    [echo] 
    [echo]    http://elartu.tntu.edu.ua/xmlui
    [echo] 
    [echo]  You should also be able to access the administrator UI:
    [echo] 
    [echo]    http://elartu.tntu.edu.ua/xmlui/dspace-admin
    [echo] ====================================================================
    [echo]         

BUILD SUCCESSFUL
Total time: 43 seconds

Підключення DSpace-івських webapps до Tomcat

Найпростіший спосіб, що рекомендують, це зкопіювати:

cp -R /dspace/webapps/* /var/lib/tomcat6/webapps/

Однак було вибрано інший спосіб через редагування

sudo mc -e /var/lib/tomcat6/conf/server.xml

Зокрема необхідно у розділ „<Service name="Catalina">“ додати

<Connector port="80".
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443" acceptCount="100"
           connectionTimeout="20000" disableUploadTimeout="true"

змінити localhost на elartu.tntu.edu.ua

<Engine name="Catalina" defaultHost="elartu.tntu.edu.ua">
<Host name="elartu.tntu.edu.ua"  appBase="webapps"
      unpackWARs="true" autoDeploy="true"
      xmlValidation="false" xmlNamespaceAware="false">

та перед закриваючою ознакою „</Host>“ додати наступне

<Context path="/xmlui" docBase="/dspace/webapps/xmlui" allowLinking="true"/>
<Context path="/sword" docBase="/dspace/webapps/sword" allowLinking="true"/>
<Context path="/oai" docBase="/dspace/webapps/oai" allowLinking="true"/>
<Context path="" docBase="/dspace/webapps/jspui" allowLinking="true"/>
<Context path="/lni" docBase="/dspace/webapps/lni" allowLinking="true"/>
<Context path="/solr" docBase="/dspace/webapps/solr" allowLinking="true"/>

Перезапуск Tomcat

sudo /etc/init.d/tomcat6 restart

Дозвіл для Tomcat-у на порт 80

Система не пускає tomcat на привілейований порт (80), для цього редагуємо

sudo mc -e /etc/default/tomcat6

і включаємо AUTHBIND

# If you run Tomcat on port numbers that are all higher than 1023, then you
# do not need authbind.  It is used for binding Tomcat to lower port numbers.
# NOTE: authbind works only with IPv4.  Do not enable it when using IPv6.
# (yes/no, default: no)
AUTHBIND=yes

Обліковий запис адміна DSpace

/dspace/bin/dspace create-administrator

Вивід:

Creating an initial administrator account
E-mail address: serhi jdubyk@ts tu.edu.ua
First name: Serhij
Last name: Dubyk
WARNING: Password will appear on-screen.
Password: ************
Again to confirm: *********
Is the above data correct? (y or n): y
Administrator account created

Права на теки „upload“ і „assetstore“

sudo chown -R tomcat6 /dspace/upload
sudo chown -R tomcat6 /dspace/assetstore

Встановлення завершено

УРА!!!

Можна перевірити із середини сервера:

lynx http://localhost
lynx http://localhost/xmlui

Налаштування

Щодо додаткових налаштувань та адаптацій див. тут: Налаштування DSpace.

Див. також

Посилання