Wiki

Clone wiki

PUMA / Installation

Inhaltsverzeichnis

Installation

Die Installationsanleitung bezieht sich auf GNU/Linux-Systeme. Getestet mit Ubuntu.

Voraussetzungen

  • Oracle JDK 7 (oder JDK 11) und setzen sie JAVA_HOME.
  • Apache Maven 3
  • Elasticsearch 2.0.0 und ab PUMA Version 3.9.0 Elasticsearch 6.8.X
  • Oracle MySQL 5.5 oder höher.
  • Git (nur für das Bauen der Applikation).

Source Repository klonen

#!bash

$ cd ~
$ mkdir puma-src
$ cd puma-src
$ export PUMA_SRC=`pwd`
$ git clone https://bitbucket.org/bibsonomy/puma
$ git checkout stable

Bauen mit Maven

#!bash
$ cd $PUMA_SRC/puma
$ mvn clean install

Achten Sie auf die Ausgabe beim Bauen und notieren Sie sich die Versionsnummer:

Als Beispiel für die Ausgabe:

[INFO] Building PUMA 3.8.4

wäre die Version 3.8.4

Konfiguration MySQL

Bitte setzen Sie den MySQL Mode auf sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

Datenbank einrichten

Im nächsten Schritt müssen Sie einige Datenbanken und Datenbank-Nutzer anlegen.

Kopieren Sie dazu folgenden Inhalt in eine Datei $PUMA_SRC/create_puma_db.sql.

#!sql

CREATE USER 'puma'@'localhost' IDENTIFIED BY '$$PASSWORD$$';

CREATE DATABASE IF NOT EXISTS `puma` ;
GRANT ALL PRIVILEGES ON `puma` . * TO 'puma'@'localhost';
flush privileges;

CREATE DATABASE IF NOT EXISTS `puma_opensocial` ;
GRANT ALL PRIVILEGES ON `puma_opensocial` . * TO 'puma'@'localhost';
flush privileges;

CREATE DATABASE IF NOT EXISTS `puma_recommender` ;
GRANT ALL PRIVILEGES ON `puma_recommender` . * TO 'puma'@'localhost';

CREATE DATABASE IF NOT EXISTS `puma_item_recommender` ;
GRANT ALL PRIVILEGES ON `puma_item_recommender` . * TO 'puma'@'localhost';
flush privileges;

CREATE DATABASE IF NOT EXISTS `logging` ;
GRANT ALL PRIVILEGES ON `logging` . * TO 'puma'@'localhost';
flush privileges;

CREATE USER 'puma_ro'@'localhost' IDENTIFIED BY '$$PASSWORD$$';
GRANT SELECT ON `puma` . * TO 'puma_ro'@'localhost';
flush privileges;

Als nächstes legen Sie die Nutzer und Datenbanken an, indem Sie das SQL-Skript ausführen.

#!bash

$ mysql -u root -p -h [dbhost] < $PUMA_SRC/create_puma_db.sql

Nun installieren Sie die Datenbanken-Schemata und die Initialisierung (Ersetzen Sie $$VERSION$$ durch die Version von PUMA und $$RECOMMENDER_VERSION$$ durch 1.0.2).

#!bash
$ cd $PUMA_SRC
$ wget https://bitbucket.org/bibsonomy/bibsonomy/raw/v$$VERSION$$/bibsonomy-database/src/main/resources/database/bibsonomy-db-schema.sql
$ wget https://bitbucket.org/bibsonomy/bibsonomy/raw/v$$VERSION$$/bibsonomy-database/src/main/resources/database/bibsonomy-db-init.sql
$ wget https://bitbucket.org/bibsonomy/bibsonomy/raw/v$$VERSION$$/bibsonomy-logging/src/main/resources/database/logging-db-schema.sql
$ wget https://bitbucket.org/bibsonomy/bibsonomy/raw/v$$VERSION$$/bibsonomy-recommender/src/main/resources/database/recommender-db-schema.sql
$ wget https://bitbucket.org/bibsonomy/bibsonomy/raw/v$$VERSION$$/bibsonomy-opensocial/src/main/resources/database/opensocial-db-schema.sql
$ wget https://bitbucket.org/bibsonomy/recommender-framework/raw/v$$RECOMMENDER_VERSION$$/recommender-core/src/main/resources/database/recommender_schema.sql
$ mysql -u root -p -h [dbhost] puma < bibsonomy-db-schema.sql
$ mysql -u root -p -h [dbhost] puma < bibsonomy-db-init.sql
$ mysql -u root -p -h [dbhost] logging < logging-db-schema.sql
$ mysql -u root -p -h [dbhost] puma_recommender < recommender-db-schema.sql
$ mysql -u root -p -h [dbhost] puma_opensocial < opensocial-db-schema.sql
$ mysql -u root -p -h [dbhost] puma_item_recommender < recommender_schema.sql

Installieren Sie den Admin-User:

#!sql
insert into user (user_name, user_password, user_password_salt, role, spammer, to_classify, simple_interface) values ('PUMA_adm', MD5(concat(MD5('YOUR_PASSWORD'), 'SALT')), 'SALT', 0, 0, 0, 2);

Kopieren Sie das SQL statement in eine Datei db-init-user.sql und ersetzen Sie YOUR_PASSWORD durch ihr gewünschtes Passwort und ersetzen Sie ebenso SALT durch eine beliebige Zeichenkette der Länge 16.

Nun importieren Sie den Datensatz.

#!bash
$ mysql -u root -p -h [dbhost] puma < db-init-user.sql

Java Cryptography, Tomcat

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy

Für die Authentifizierung mittels Spring Security müssen Sie bei Java manuell die Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files installieren. http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html Die Installation läuft in etwa so:

#!bash

$ unzip jce_policy-7.zip 
$ cd UnlimitedJCEPolicy 
$ jlibs=$JAVA_HOME/jre/lib/security

$ sudo mv $jlibs/local_policy.jar $jlibs/local_policy.jar.old 
$ sudo mv $jlibs/US_export_policy.jar $jlibs/US_export_policy.jar.old 
$ sudo cp local_policy.jar $jlibs/local_policy.jar 
$ sudo cp US_export_policy.jar $jlibs/US_export_policy.jar 
$ ls -al $jlibs

Tomcat installieren

Installieren Sie den aktuellen Tomcat der Version 9.0.14, am besten ins Home-Verzeichnis. Installieren Sie folgende zusätzliche Bibliotheken wie folgt:

  • mysql-connector
  • xercesImpl
#!bash
$ cd ~/tomcat/lib 
$ wget https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/5.1.16/mysql-connector-java-5.1.16.jar
$ wget https://search.maven.org/remotecontent?filepath=xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
$ cp mysql-connector-java-5.0.8/mysql-connector-java-5.0.8-bin.jar .
$ rm -r mysql-connector-java-5.0.8/; rm mysql-connector-java-5.0.8.tar.gz

Logging

Download log4j2.xml.

log4j2.xml nach ~/tomcat/lib kopieren. Danach die folgenden Jars herunterladen und in das lib-Verzeichnis des Tomcat kopieren:

  • log4j-api Maven, 2.11.1
  • log4j-core Maven, 2.11.1
  • commons-logging-api Maven 1.1
  • slf4j-api Maven, 1.6.3
  • log4j-slf4j-impl Maven, 2.11.1 (Bridge slf4j to log4j)
  • log4j-jcl Maven, 2.11.1 (Bridge slf4j to commons-logging)
  • log4j-jul Maven, 2.11.1 (Bridge slf4j to Java Logging API)
  • log4j-1.2-api Maven, 2.11.1 (Bridge slf4j to old Log4j 1.2)

Tomcat konfigurieren

context.xml

Please replace <Context> with <Context sessionCookiePath="/">.

catalina.properties

Öffnen Sie die Datei ~/tomcat/conf/catalina.properties und fügen Sie folgende Zeil ans Ende der Datei an:

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true

Elasticsearch konfigurieren

Setzen Sie einen Clusternamen für Ihr Elasticsearch Cluster. Notieren Sie sich den Namen.

Webapp deployen

Deployen Sie die Webapp im konfigurierten Tomcat im Root-Context.

$ cp $PUMA_SRC/puma/bibsonomy-webapp-puma/target/bibsonomy-webapp-puma-$$VERSION$$.war ~/tomcat/webapps/bibsonomy-webapp.war

Ersetzen Sie $$VERSION$$ durch die aktuelle Versionsnummer.

puma.properties anpassen

Legen Sie Verzeichnisse für Dateien an

#!bash
$ mkdir ~/puma_files/puma_docs/
$ mkdir ~/puma_files/puma_temp/
$ mkdir ~/puma_files/puma_pics/


Erstellen Sie die ``puma.properties`` 
$ touch ~/puma_files/puma.properties
Kopieren Sie folgenden Inhalt in die Datei.
project.name = PUMA

address INCLUDING the trailing slash!

(both home + img server)

project.home = http://localhost:8080/ project.files.home = ${user.home}/puma_files

project.document.path = ${project.files.home}/puma_docs/ project.document.temp = ${project.files.home}/puma_temp/ project.picture.path = ${project.files.home}/puma_pics/

project.blog = http://www.academic-puma.de project.defaultLocale = de project.theme = puma project.bean.homepageController = pumaHomepageController

project.email = webmaster@xyz.cz project.noSpamEmail = no-spam@xyz.cz project.registrationFromAddress = register@xyz.cz project.joinGroupRequestFromAddress = groups@xyz.cz

password.reminder.cryptkey = $$CRYPT_KEY$$

project.img = http://img.puma.uni-kassel.de/

auth.order = INTERNAL auth.register.disabled = false

project.bean.pingback = mockPingback

possible values realSynchronizationClient, mockSynchronizationClient

project.bean.syncclient = realSynchronizationClient

PUMA buttons

project.addons.chrome.url = https://chrome.google.com/webstore/detail/puma-buttons/emdfjhapplcngnmhllpdmaecgoafjjmc project.addons.firefox.url = https://www.bibsonomy.org/puma_files/firefox/puma_buttons-latest.xpi project.addons.safari.url = /resources/addons/safari/puma-buttons-extension/puma_buttons.safariextz

news.group = puma news.tag = puma_news

search.es.address = localhost:9300 search.es.cluster.name = puma

project.groupcreationmode = automatic user.defaultToClassify=0

Passen Sie bitte die folgenden Einträge an Ihre Installation an:

- `project.home`: Pfad zu Ihrer Applikation (bitte mit `/` enden lassen)
- `project.email`: Die Anwendung erzeugt mit dieser Adresse links für die Benutzer zur Kontaktaufnahme
- `project.noSpamEmail`
- `registrationFromAddress`
- `joinGroupRequestFromAddress`
- `password.reminder.cryptkey`: Ersetzen Sie `$$CRYPT_KEY$$` durch einen zufällige Zeichenkette.
- `search.es.address`: Die Adresse des laufenden Elasticsearch
- `search.es.cluster.name`: Der konfigurierte Name des Clusters


### Datenbankverbindungen konfigurieren
Ersetzen Sie ``$$DB_HOST$$`` und ``$$DB_PORT$$`` und ``**PASSWORD**`` entsprechend Ihrer Einstellungen und fügen Sie zusätzlich den foldenden Inhalt in die angelegte `puma.properties` ein:
#! database.main.url = jdbc:mysql://$$DB_HOST$$:$$DB_PORT$$/puma?${database.mysql.default.config} database.main.username = puma database.main.password = $$PASSWORD$$

database.clicklogger.url = jdbc:mysql://$$DB_HOST$$:$$DB_PORT$$/logging?${database.mysql.default.config}

database.search.username = puma_ro database.search.password = $$PASSWORD$$

database.recommender.tag.url = jdbc:mysql://$$DB_HOST$$:$$DB_PORT$$/puma_recommender?${database.mysql.default.config} database.recommender.tag.username = puma database.recommender.tag.password = $$PASSWORD$$

database.recommender.item.url = jdbc:mysql://$$DB_HOST$$:$$DB_PORT$$/puma_item_recommender?${database.mysql.default.config} database.recommender.item.username = puma database.recommender.item.password = $$PASSWORD$$

database.opensocial.url = jdbc:mysql://$$DB_HOST$$:$$DB_PORT$$/puma_opensocial?${database.mysql.default.config} database.opensocial.username = puma database.opensocial.password = $$PASSWORD$$

## Tomcat starten
$ ~/tomcat/bin/startup.sh
## Webapp im Root Context ##

Die PUMA Webapp läuft nicht ohne weiteres im ROOT Context. Die leichteste Variante ist, einen Apache als Proxy zu benutzen. Dazu definieren Sie einen VirtualHost wie folgt:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # allow encoded slashes
    AllowEncodedSlashes NoDecode

    ProxyPass / http://127.0.0.1:8080/bibsonomy-webapp/ nocanon
    ProxyPassReverse / http://127.0.0.1:8080/bibsonomy-webapp/ nocanon

</VirtualHost> ```

Als Admin einloggen

  1. Öffnen Sie Ihren Browser und geben Sie die Adresse http://localhost/login ein.
  2. Melden Sie sich mit dem Benutzer PUMA_adm und dem gewählten Passwort an.

Updated