su
oder sudo
)apt update
Sofern Updates ausstehend sind, sollten Sie diese mit nachfolgendem Befehl installieren:
apt upgrade
Folgende Basispakete werden für die Installation bzw. den Betrieb von REWOO Scope benötigt und sollten deshalb vorab installiert sein.
apt install unzip
apt install perl
apt install imagemagick ghostscript
apt install software-properties-common
apt install clamav clamav-update
Wenn SELinux verwendet wird, muss ClamAV noch erlaubt werden, sämtliche Dateien auf dem Server zu scannen:
setsebool -P antivirus_can_scan_system 1
setsebool -P clamd_use_jit on
wget -c https://download.documentfoundation.org/libreoffice/stable/7.5.1/deb/x86_64/LibreOffice_7.5.1_Linux_x86-64_deb.tar.gz
tar xf LibreOffice_7.5.1_Linux_x86-64_deb.tar.gz
cd LibreOffice_7.5.1.1_Linux_x86-64_deb/DEBS
dpkg -i *.deb
cd -
wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add -
add-apt-repository 'deb https://apt.corretto.aws stable main'
Installieren Sie Corretto 11 anschließend.
apt update; apt install -y java-11-amazon-corretto-jdk
apt install xvfb
/etc/systemd/system/xvfb.service
und füllen Sie diese mit folgendem Inhalt:
[Unit]
Description=xinit - user "rewoo"
[Service]
User=rewoo
Group=rewoo
ExecStart=/usr/bin/Xvfb :14 -nolisten tcp -screen 0 1024x768x24 -fbdir /var/tmp/
ExecStopPost=/usr/bin/killall -u rewoo Xvfb
[Install]
WantedBy=multi-user.target
systemctl enable xvfb.service
systemctl start xvfb
apt install apache2
cd /etc/apache2/mods-enabled
ln -s ../mods-available/headers.load
ln -s ../mods-available/proxy_ajp.load
ln -s ../mods-available/proxy_balancer.conf
ln -s ../mods-available/proxy_balancer.load
ln -s ../mods-available/proxy.conf
ln -s ../mods-available/proxy.load
ln -s ../mods-available/proxy_http.load
ln -s ../mods-available/rewrite.load
ln -s ../mods-available/slotmem_shm.load
ln -s ../mods-available/socache_shmcb.load
ln -s ../mods-available/ssl.conf
ln -s ../mods-available/ssl.load
/etc/apache2/sites-available/rewoo.conf
und füllen Sie sie mit folgendem Code:
<VirtualHost $IP:80>
ServerAdmin webmaster@$HOSTNAME
ServerName $HOSTNAME
RewriteEngine On
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R=301]
ErrorDocument 503 /errorpages/503.html
ErrorLog ${APACHE_LOG_DIR}/error_log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access_log combined
</VirtualHost>
Erstellen Sie die Datei /etc/apache2/sites-available/rewoo-ssl.conf
und füllen Sie sie mit folgendem Code:
LoadModule ssl_module modules/mod_ssl.so
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@$HOSTNAME
ServerName $HOSTNAME
RewriteEngine On
RewriteRule ^$ /rewoo [R]
RewriteRule ^/$ /rewoo [R]
DocumentRoot /var/www
<Directory />
Options FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorDocument 503 /errorpages/503.html
BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "Microsoft-WebDAV-MiniRedir/5.1.2600" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS" redirect-carefully
<IfModule encoding_module>
EncodingEngine on
NormalizeUsername on
<IfModule headers_module>
Header add Dav "1,2"
Header add MS-Author-Via "DAV"
</IfModule>
</IfModule>
ErrorLog ${APACHE_LOG_DIR}/error_log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access_log combined
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# MSIE 7 and newer should be able to use keepalive
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
# write proxy directives into a single file
Include /etc/apache2/ProxyPass.conf
</VirtualHost>
</IfModule>
Ersetzen Sie die hervorgehobenen Teile innerhalb der rewoo.conf
und rewoo-ssl.conf
mit den Daten Ihres Servers. Dazu zählen die $IP
und der $HOSTNAME
, unter denen REWOO Scope erreichbar sein soll./etc/apache2/sites-enabled
Links auf diese Dateien anlegen und alle nicht benötigten Konfigurationen entfernen:
cd /etc/apache2/sites-enabled
rm ./*
ln -s ../sites-available/rewoo.conf
ln -s ../sites-available/rewoo-ssl.conf
Wechseln Sie ins Verzeichnis /etc/apache2/
, erstellen Sie dort eine Datei mit dem Namen ProxyPass.conf
und fügen anschließend folgenden Inhalt ein:
ProxyTimeout 900
<Location /rewoo>
Order Deny,Allow
Allow from All
ProxyPass http://localhost:7070/rewoo
ProxyPassReverse http://localhost:7070/rewoo
</Location>
systemctl restart apache2.service
apt install snapd
snap install core
snap refresh core
snap install --classic certbot
Fügen Sie einen Symlink zum Ausführen von Certbot hinzu:
ln -s /snap/bin/certbot /usr/bin/certbot
certbot --apache --cert-name kunde.rewoo.net -d kunde.rewoo.net
Ersetzen Sie kunde.rewoo.net
hierbei durch den Domainnamen unter dem Ihr Server zukünftig erreichbar sein soll.
systemctl restart apache2.service
certbot renew --dry-run
apt install ufw
ufw allow http
ufw allow https
ufw allow ssh
ufw enable
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
RELEASE=$(lsb_release -cs)
echo "deb http://apt.postgresql.org/pub/repos/apt/ ${RELEASE}"-pgdg main | tee /etc/apt/sources.list.d/pgdg.list
apt update
Installieren Sie nun die aktuelle PostgreSQL Version (derzeit v15). Passen Sie ggf, die Versionsnummer des Paketnamens an. Es wird mind. PostgreSQL 12.x benötigt.
apt install postgresql-15
/etc/postgresql/11/main
(Pfadname kann bei anderer PostgreSQL-Version abweichen) und öffnen Sie dort die Datei pg_hba.conf
. Dort fügen Sie an der angegebenen Stelle jeweils VOR den bereits bestehenden Einträgen folgende Zeilen ein:IPv4
als erste Zeile hinzufügen:
host rewoodb rewoo 127.0.0.1/32 trust
Bei IPv6
als erste Zeile hinzufügen:
host rewoodb rewoo ::1/128 password
Im gleichen Verzeichnis bearbeiten finden Sie die Datei postgresql.conf
. Dort müssen die folgenden Parameter entsprechende Ihres Systems angepasst werden. An folgende Richtwerte kann sich orientert werden:max_connections
= Anzahl der CPU-Kerne * 3shared_buffers
= RAM / 4wal_buffers
= 2MBcheckpoint_segments
= 32checkpoint_timeout
= 5mineffective_cache_size
= RAM / 4work_mem
= RAM / (max_connections * 16)maintenance_work_mem
= RAM / 16shared_buffers
verwendet wurde:
sysctl -w kernel.shmmax=<shared_buffers-Wert>
su -l postgres
psql
CREATE USER rewoo WITH CREATEDB PASSWORD 'rewoo';
CREATE DATABASE rewoodb WITH owner=rewoo encoding='utf-8';
\q
exit
Die Einrichtung der Postgres-Datenbank für die Benutzung mit REWOO Scope ist damit abgeschlossen.
rewoo
benötigt. Diesen erstellen Sie mit dem folgenden Befehl:
useradd -m -d /home/rewoo -s /bin/bash -c "REWOO Scope" -U -- rewoo
rewoo
zu erhöhen./etc/security/limits.d
, legen Sie dort eine Datei mit dem Namen rewoo.conf
an und füllen diese mit folgendem Code:
rewoo - nofile 8192
Editieren Sie anschließend die Datei /etc/pam.d/su
und entfernen Sie das Kommentarzeichen vor der Zeile:
session required pam_limits.so
/etc/pam.d/su
auf Ihrem System nicht vorkommen, tragen Sie sie einfach am Ende der Datei nach.Sie können überprüfen, ob die Erhöhung der Limits wirksam ist, indem Sie sich als Benutzer rewoo
einloggen und das Kommando ulimit -a
aufrufen.
Fahren Sie jetzt mit der Installation von REWOO Scope fort.
REWOO.war, config-grails5.sh, start-grails5.sh und debug.sh
in das Verzeichnis /home/rewoo/
.
Sofern Sie die Dateien mit einem anderen User auf den Server geladen haben, ändern Sie den Besitzer für die Dateien auf den rewoo User:
chown rewoo:rewoo *.*
Setzen Sie die Berechtigungen:
chmod 0744 *.*
Führen Sie die weiteren Arbeiten mit dem rewoo User aus. Wechseln Sie dazu in den Account:
su rewoo
Sofern Ihr Server keine Verbindung zum Internet herstellen kann, erstellen Sie ein temp Verzeichnis für die tika Serverkomponente und verschieben diese anschließend dorthin.
mkdir /tmp/rewoo-scoope-tika
cp tika-server-1.28.4.jar /tmp/rewoo-scope-tika/
config-grails5.sh
.
Rufen Sie das Skript mit Parametern für den Namen der Instanz (Default "rewoo") und den verwendeten (internen) Port (Default 7070) auf:
./config-grails5.sh rewoo 7070
./start-grails5.sh rewoo 4G
Der Server wird nun gestartet. Sie erhalten einen Hinweis, dass die Logausgabe in die Datei nohup.out
erfolgt.
Mit Strg+C
können Sie den Hinweis abbrechen und wieder zur Konsole zurückkehren.
Sofern Sie den Startvorgang im log verfolgen wollen, können Sie dies mit folgendem Aufruf:
tail -f nohup.out
Sobald im Log der Eintrag GlobalTableViewCache refreshed
erscheint. Ist der Startvorgang abgeschlossen und die REWOO Scope Anwendung kann verwendet werden.
Um den Aufruf der Anwendung zu prüfen, rufen Sie im Browser folgende Adresse auf: https:///rewoo
Kopieren Sie nun die Datei debug.sh
in das korrekte Verzeichnis:
cp debug.sh /home/rewoo/rewoo-admin/scripts/
Der Scope Maintenance Server ist für den Betrieb von REWOO Scope nicht zwingend erforderlich. Er stellt einen zusätzlichen Server-Dienst dar, über den bestimmte Wartungsaufgaben bequemer durchgeführt werden können. Vor allem betrifft dies das Erstellen von so genannten "System-Snapshots", mit denen der vollständige Zustand einer REWOO Scope-Installation abgespeichert und auch wiederhergestellt werden kann.
Wurde der Scope Maintenance Server installiert und korrekt konfiguriert, können Benutzer mit ausreichender Berechtigung direkt über die REWOO Scope Benutzeroberfläche einen derartigen Snapshot erstellen oder das System auf den Zustand eines zuvor erstellen Snapshots zurücksetzen. Ohne den Scope Maintenance Server ist dies nur manuell über Wartungsscripte oder ähnliches möglich.
Der Server wird in Form eines WAR-Archives ausgeliefert (scope-maintenance-server.war
). Prinzipiell sollte das Archiv innerhalb aller gängigen Servlet-Container (Jetty, Tomcat, ...) lauffähig sein, entwickelt und getestet wurde es jedoch im Zusammenspiel mit Jetty in der Version 9.4.18, der auch als Ausführungsumgebung für REWOO Scope eingesetzt wird. Dieser Servlet-Container wird bereits vorkonfiguriert in der Form des Archivs jetty-distribution-9.4.18.v20190429.zip
zusammen mit der WAR-Datei ausgeliefert.
Vorbemerkung: Nachfolgend wird davon ausgegangen, dass sich die Dateien scope-maintenance-server.war
und jetty-distribution-9.4.18.v20190429.zip
im Home-Verzeichnis des rewoo-Benutzers (/home/rewoo
) befinden.
Um den Server einzurichten, muss zunächst die Jetty-ZIP-Datei in ein dediziertes Verzeichnis unterhalb des Home-Verzeichnisses des rewoo-Benutzers entpackt werden. Nachfolgend wird dafür das Verzeichnis ~/scope-maintenance-server
verwendet.
cd /home/rewoo
mkdir scope-maintenance-server
unzip jetty-distribution-9.4.18.v20190429.zip -d scope-maintenance-server/
Dann muss das WAR in den Unterordner /webapps
kopiert werden. Da zudem ein installationsspezifischer Schlüssel hinterlegt werden sollte, muss das WAR zudem auch temporär entpackt werden.
cd /home/rewoo
cp scope-maintenance-server.war scope-maintenance-server/jetty/webapps/
cd scope-maintenance-server/jetty/webapps/
mkdir temp
unzip scope-maintenance-server.war -d temp/
cd temp/WEB-INF
Anschließend wird das Private/Public-Schlüsselpaar angelegt. Dies kann über folgenden Aufruf von ssh-keygen geschehen. Eine Passphrase sollte in diesem Fall nicht gesetzt werden.
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/rewoo/.ssh/id_rsa): /home/rewoo/scope-maintenance-server/jetty/webapps/temp/WEB-INF/rewoo_rsa.key
Nun wird der mit dem WAR ausgelieferte Default-Schlüssel gelöscht und die soeben erzeugten, installationsspezifischen Schlüssel jeweils noch in ein Format exportiert, dass für Java direkt lesbar ist.
cd /home/rewoo/scope-maintenance-server/jetty/webapps/temp/WEB-INF/
rm rewoo.der
openssl pkcs8 -topk8 -inform PEM -outform DER -in rewoo_rsa.key -out maintenance_key.der -nocrypt
openssl rsa -in rewoo_rsa.key -pubout -outform DER -out rewoo.der
rm rewoo_rsa.key rewoo_rsa.key.pub
rewoo
. Bei anderen Instanznamen muss auch der Name der DER-Datei entsprechend angepasst werden (z. B. in "beispiel.der" wenn die Instanz "beispiel" heißt).cd /home/rewoo/scope-maintenance-server/jetty/webapps/temp/WEB-INF/
mkdir /home/rewoo/rewoo-admin/storage/rewoo/keys/
mv maintenance_key.der /home/rewoo/rewoo-admin/storage/rewoo/keys/maintenance_key.der
cd ..
jar cvf scope-maintenance-server.war .
mv scope-maintenance-server.war ../scope-maintenance-server.war
cd ..
rm temp -rf
Damit der Scope Maintenance-Server vom Client aus angesprochen werden kann, muss eine ProxyPass-Regel für den entsprechenden Port 8081 hinzugefügt werden. Hierzu muss der folgende Inhalt zur Datei /etc/httpd/ProxyPass.conf
hinzugefügt werden:
<Location /scope-maintenance-server>
Order Deny,Allow
Allow from All
ProxyPass http://localhost:8081/scope-maintenance-server
ProxyPassReverse http://localhost:8081/scope-maintenance-server
</Location>
Um die Kommunikation zwischen Client und dem Scope Maintenance Server zu erlauben, muss zusätzlich noch die nachfolgende Cross-Domain-Policy angelegt werden. Dazu erstellt man unter /var/www
eine Datei mit dem Namen crossdomain.xml
und befüllt diese mit folgendem Inhalt:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only">
<allow-access-from domain="*" secure="false">
</cross-domain-policy>
Zum Abschluss muss der Scope Maintenance Server noch so eingerichtet werden, dass er bei jedem System-Start ebenfalls mitgestartet wird. Dazu wird in /etc/systemd/system
eine Datei mit dem Namen scope-maintenance-server.service
erstellt und mit folgendem Inhalt befüllt:
[Unit]
Description=Scope Maintenance Server daemon
After=network.target
[Service]
Type=simple
User=rewoo
WorkingDirectory=/home/rewoo/scope-maintenance-server/jetty
ExecStart=/usr/bin/java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 -jar start.jar -Djetty.port=8081
ExecStop=/bin/kill ${MAINPID}
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Besonders wichtig ist dabei die Zuweisung an das Attribut ExecStart: hier wird mittels des Parameters "-Djetty.port" der Port des zu startenden Scope Maintenance Servers festgelegt. Standardmäßig wird hierfür der Port 8081
verwendet, dieser kann aber beliebig angepasst werden. Die Parameter -Xdebug
und -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
ermöglichen es, den Scope Maintenance Server bei Bedarf im laufenden Betrieb debuggen zu lassen. Ist dies nicht erwünscht, können die Parameter einfach entfernt werden. Bei aktiviertem Debug-Modus ist es allerdings ratsam, den Port durch die Firewall standardmäßig für den Zugriff aus dem Internet zu blockieren und ihn nur bei Bedarf freizuschalten.
Schließlich muss der Dienst noch aktiviert, der systemd-Daemon neu gestartet und einmalig der Maintenance Service manuell hochgefahren werden (bei weiteren System-Starts sollte dies dann automatisch erfolgen).
systemctl enable scope-maintenance-server.service
systemctl daemon-reload
systemctl start scope-maintenance-server.service
Damit ist die Installation und Konfiguration des Scope Maintenance Servers abgeschlossen. Um den ihn von REWOO Scope aus ansprechen zu können, müssen dort noch einige Konfigurationsparameter gesetzt werden. Die Beschreibung der jeweiligen Parameter ist unter Scope Maintenance Server zu finden.
Um den Erfolg der Installation zu testen, kann folgende URL in einem Browser geöffnet werden:
https://<Hostname oder IP>/scope-maintenance-server/webapi/scopestate?scopeInstance=rewoo
Der Browser sollte dann Daten im JSON-Format ausgeben, ähnlich wie im folgenden Screenshot: