IES-Webnode: Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
 
(19 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
''Ab IES Version 2.5 verfügbar''
 
''Ab IES Version 2.5 verfügbar''
  
Der IES-Webnode ist ein Java-Applikations-Server auf Basis des [http://www.eclipse.org/jetty/ Jetty 9]. Er wird auf Web-Servern installiert, die vom IES generierte Webseiten ausliefern.
+
Der IES-Webnode ist ein Java-Applikations-Server auf Basis des [http://www.eclipse.org/jetty/ Jetty]. Er wird auf Web-Servern installiert, die vom IES generierte Webseiten ausliefern.
 
Innerhalb des IES-Webnode werden Module installiert, die Funktionalitäten für die Webseite bereite stellen (Z.B. Volltextsuche).
 
Innerhalb des IES-Webnode werden Module installiert, die Funktionalitäten für die Webseite bereite stellen (Z.B. Volltextsuche).
  
Zeile 7: Zeile 7:
  
 
==Systemvoraussetzungen==
 
==Systemvoraussetzungen==
* Java Platform, Standard Edition '''JDK''' - Version 7
 
 
* Der IES muss den Server auf dem der IES-Webnode installiert wird per HTTP(S) erreichen können.
 
* Der IES muss den Server auf dem der IES-Webnode installiert wird per HTTP(S) erreichen können.
 
* Hardware-Anforderungen sind je nach Anwendungsfall zu prüfen.
 
* Hardware-Anforderungen sind je nach Anwendungsfall zu prüfen.
  
 
==Installation==
 
==Installation==
===Linux===
+
===Installation unter Linux===
  
 
Die Installations-Datei für den IES-Webnode wird mit dem IES mitgeliefert. In dem Verzeichnis IES_HOME/bin liegt die Datei
 
Die Installations-Datei für den IES-Webnode wird mit dem IES mitgeliefert. In dem Verzeichnis IES_HOME/bin liegt die Datei
Zeile 24: Zeile 23:
 
* Es wird einen Nutzer und eine Gruppe <code>ies-webnode</code> angelegt
 
* Es wird einen Nutzer und eine Gruppe <code>ies-webnode</code> angelegt
 
* Es wird ein init-Script unter <code>/etc/init.d/ies-webnode</code> abgelegt.
 
* Es wird ein init-Script unter <code>/etc/init.d/ies-webnode</code> abgelegt.
* Es wird eine Konfigurations-Datei für das init-Script abgelegt /etc/defaults/ies-webnode. In dieser Datei können Start-Optionen angepasst werden (z.B. <code>JAVA_OPTIONS="-server -Xms512m -Xmx2048m -XX:MaxPermSize=256M -Xss8m"</code>).
+
* Es wird eine Konfigurations-Datei für das init-Script angelegt:
* Der Server wird unterhalb des angegebenen Installations-Verzeichnisses (Standardverzeichnis: <code>/srv/ies-webnode</code>) installiert.
+
:* bei systemd-Systemen unter /etc/sysconfig/ies-webnode
 +
:* bei init-v-Systemen unter /etc/default/ies-webnode
 +
:In dieser Datei können die Start-Optionen für den IES-Webnode angepasst werden (z.B. <code>JAVA_OPTIONS="-server -Xms512m -Xmx2048m -Xss8m"</code>).
 +
* Der Server wird unterhalb des angegebenen Installations-Verzeichnisses (Standardverzeichnis: <code>/srv/sitepark/ies-webnode</code>) installiert.
  
===Windows (nur 64 Bit)===
+
===Proxy-Setzungen für den IES-Webnode===
Die Installations-Datei für den IES-Webnode wird mit dem IES mitgeliefert. In dem Verzeichnis IES_HOME/bin liegt die Datei
 
ies-webnode-server.exe
 
Diese muss auf das Windows-System kopiert werden, auf dem sich die Webseite befindet, die den IES-Webnode benötigt. Starten Sie die Installation durch einen Doppelklick und befolgen Sie die Anweisungen
 
  
Das Installations-Script führt folgende Schritte aus:
+
Wenn der Webnode über eine Proxy auf andere Systeme zugreifen muss, so ist eine Anpassung im Systemd-Script (<code>/etc/systemd/system/multi-user.target.wants/ies-webnode.service
* Der Server wird unterhalb des angegebenen Installations-Verzeichnisses installiert.
+
</code>) notwendig. Folgende Zeilen sind entsprechend in der Sektion "[Service]" zu ergänzen:
* Es wird ein Windows-Dienst 'IES Webnode' eingerichtet.
+
Environment=https_proxy=http://10.16.1.1:8080
 
+
Environment=http_proxy=http://10.16.1.1:8080
Damit über PHP das HOME-Verzeichnis des IES-Webnode ermittelt werden kann, muss ein Wert aus der Windows-Registry ausgelesen werden. Dazu ist das COM-Objekt notwendig. Das COM-Objekt kann nur verwendet werden, wenn in der php.ini des Webservers die php_com_dotnet Extension aktiviert wurde.
+
Environment=no_proxy=localhost,127.0.0.1
<source lang="ini">
 
extension=php_com_dotnet.dll
 
</source>
 
  
 
===Apache Integration===
 
===Apache Integration===
Zeile 64: Zeile 60:
 
===IES-Konfiguration===
 
===IES-Konfiguration===
 
Wenn der IES-Webnode auf dem Webserver installiert ist, muss die Verbindung für den IES über die Administrations-Oberfläche konfiguriert werden. Bei den Servereinstellungen erscheint der Menüpunkt 'Webnode'. Erstellen Sie hier einen neuen Eintrag und vergeben einen sprechenden Namen. die ''Basis URL des Webnodes'' ist der Host (oder IP-Adress) des Server, auf dem der Webnode installiert wurde. Sollte keine Apache-Einbindung konfiguriert sein, muss hier der Port (default 8381) ergänzt werden (Beispiel: http://my.webnode.de:8381/). Das Passwort wurde bei der Installation automatisch vergeben und befindet sich in der Datei ''[WEBNODE_HOME]/config/realm.properties'' (Beispiel: "api: 123456789abcdef, api" => Login 'api' Passwd: '123456789abcdef')
 
Wenn der IES-Webnode auf dem Webserver installiert ist, muss die Verbindung für den IES über die Administrations-Oberfläche konfiguriert werden. Bei den Servereinstellungen erscheint der Menüpunkt 'Webnode'. Erstellen Sie hier einen neuen Eintrag und vergeben einen sprechenden Namen. die ''Basis URL des Webnodes'' ist der Host (oder IP-Adress) des Server, auf dem der Webnode installiert wurde. Sollte keine Apache-Einbindung konfiguriert sein, muss hier der Port (default 8381) ergänzt werden (Beispiel: http://my.webnode.de:8381/). Das Passwort wurde bei der Installation automatisch vergeben und befindet sich in der Datei ''[WEBNODE_HOME]/config/realm.properties'' (Beispiel: "api: 123456789abcdef, api" => Login 'api' Passwd: '123456789abcdef')
 +
 +
====/etc/defaults/ies-webnode====
 +
 +
=====IES_JAVA_OPTIONS=====
 +
Java Optionen die mit -D angegeben werden
 +
 +
Chunked transfer encoding für die Kommunikation vom IES z.b. zum IES-Webnode deaktivieren. Dies ist in der Regel nur dann notwendig, wenn die Kommunikation über einen Proxy läuft und dieser Chunked transfer encoding via POST nicht unterstütz (sehr alte Proxies)
 +
com.sitepark.net.HttpClient.disableChunked=true
  
 
==Updates==
 
==Updates==
Zeile 75: Zeile 79:
 
  /etc/init.d/ies-webnode start
 
  /etc/init.d/ies-webnode start
  
===Windows===
+
==Status abfragen==
In dem Verzeichnis <code>IES_WEBNODE_HOME\update</code> liegt eine Datei <code>ies-webnode-server.exe</code>. Durch einen Doppelklick auf diese Datei wird das Update ausgeführt.
+
Der Webnode kann einen Status-Bericht zum eigenen Prozess und zu den verwalteten Publishern liefern. Hierzu werden Anfragen und Antworten per JSON generiert. Der Kommunikationsaufruf ist dabei i.d.R. folgender:
 +
#Aufruf des Publisher-Status in IES-Admin im Browser -> HTTPS-Request vom Nutzer an den IES
 +
#IES stellt Anfrage an den Webnode des Publishers -> HTTPS-Request an den Webserver auf dem der Webnode installiert wurde (ggf. auch direkt auf Port 8381)
 +
#Webserver leitet Anfrage via Proxy-Request an den lokalen Webnode-Prozess -> HTTP-Request an Webnode
 +
#Webnode erstellt HTTPS-Anfrage an ein PHP-Script im Publisher -> HTTPS-Request an den lokalen Webserver
  
==Status abfragen==
+
Der Python-Aufruf am Ende der Aufrufe (s.u.) sorgt für eine lesbare Darstellung der JSON-Daten. Alternativ kann auch <code>jq</code> verwendet werden.
 +
 
 +
<div class="note">
 +
Ein aktuell typisches Problem ist die Problematik von Apache 2.4 und '''PHP-FPM (Fast.CGI)'''. Hier ist Chunked-Transfer-Encoding nicht möglich. Dies muss in den Setzungen des Webnode über
 +
-Dcom.sitepark.net.HttpClient.disableChunked=true
 +
in den Java-Optionen deaktiviert werden.
 +
</div>
 +
 
 +
===Webnode-Status===
 
Den Status des Webnode kann man auf dem lokalen System über folgenden <code>curl</code>-Aufruf abfragen:
 
Den Status des Webnode kann man auf dem lokalen System über folgenden <code>curl</code>-Aufruf abfragen:
  curl -s "http://api:XXX@localhost:8381/ies-webnode/admin/rpc/?rpcAction=Server&rpcMethod=getStatus" | python -m json.tool
+
  curl -s "http://api:'''XXX'''@localhost:8381/ies-webnode/admin/rpc/?rpcAction=Server&rpcMethod=getStatus" | python -m json.tool
 
Die Authentifizierung erfolgt über die URL. Der Login ist <code>api</code>. Dass Passwort ist Ihr API-Key.
 
Die Authentifizierung erfolgt über die URL. Der Login ist <code>api</code>. Dass Passwort ist Ihr API-Key.
 
Diesen können Sie der Datei <code>realm-properties</code> im Installationsverzeichnis des Webnode entnehmen.
 
Diesen können Sie der Datei <code>realm-properties</code> im Installationsverzeichnis des Webnode entnehmen.
  
Der Python-Aufruf am Ende sorgt für eine lesbare Darstellung der JSON-Daten.
+
===Publisher-Status===
 +
Aufruf des Webnodes durch den IES (im Fall einer lokalen Installation):
 +
curl -s "http://api:'''XXX'''@localhost:8381/ies-webnode/admin/rpc/?rpcAction=WebChannel&rpcMethod=getStatus&protocol=https&host='''hostname'''" | python -m json.tool
 +
Die Authentifizierung erfolgt über die URL. Der Login ist <code>api</code>. Dass Passwort ist Ihr API-Key.
 +
 
 +
URL für Request des Webnodes auf den Publisher:
 +
curl  -k "https://api:'''XXX'''@'''hostname'''/WEB-IES/sitekit-module/php/SP/SiteKit/Rpc/Server/Port.php?rpcAction=SP\\SiteKit\\Rpc\\WebChannel\\Info&rpcMethod=getInfo"  | python -m json.tool
 +
 
 +
Der Parameter Host ist der Domain-Name des Publisher.
 +
 
 +
<div class="note">Zum Debuggen von Problemen kann es hilfreich sein die HTTPS-Konfiguration temp. abzustellen (macro siteNoSSL statt site) und das zippen der Daten (mod_deflate) zu deaktivieren. Anschließend kann die Kommunikation mit <code>ngrep</code> untersucht werden.</div>
 +
 
  
 
<noinclude>
 
<noinclude>

Aktuelle Version vom 5. Oktober 2022, 09:27 Uhr

Ab IES Version 2.5 verfügbar

Der IES-Webnode ist ein Java-Applikations-Server auf Basis des Jetty. Er wird auf Web-Servern installiert, die vom IES generierte Webseiten ausliefern. Innerhalb des IES-Webnode werden Module installiert, die Funktionalitäten für die Webseite bereite stellen (Z.B. Volltextsuche).


Systemvoraussetzungen

  • Der IES muss den Server auf dem der IES-Webnode installiert wird per HTTP(S) erreichen können.
  • Hardware-Anforderungen sind je nach Anwendungsfall zu prüfen.

Installation

Installation unter Linux

Die Installations-Datei für den IES-Webnode wird mit dem IES mitgeliefert. In dem Verzeichnis IES_HOME/bin liegt die Datei

ies-webnode-server.bin

Diese muss auf das Linux-System kopiert werden, auf dem sich die Webseite befindet, die den IES-Webnode benötigt. Für die Installation vergeben Sie noch die nötigen Ausführungsrechte und führen das Installations-Script anschließend aus:

chmod a+x ies-webnode-server.bin
./ies-webnode-server.bin

Befolgen Sie die Anweisungen.

Das Installations-Script führt folgende Schritte aus:

  • Es wird einen Nutzer und eine Gruppe ies-webnode angelegt
  • Es wird ein init-Script unter /etc/init.d/ies-webnode abgelegt.
  • Es wird eine Konfigurations-Datei für das init-Script angelegt:
  • bei systemd-Systemen unter /etc/sysconfig/ies-webnode
  • bei init-v-Systemen unter /etc/default/ies-webnode
In dieser Datei können die Start-Optionen für den IES-Webnode angepasst werden (z.B. JAVA_OPTIONS="-server -Xms512m -Xmx2048m -Xss8m").
  • Der Server wird unterhalb des angegebenen Installations-Verzeichnisses (Standardverzeichnis: /srv/sitepark/ies-webnode) installiert.

Proxy-Setzungen für den IES-Webnode

Wenn der Webnode über eine Proxy auf andere Systeme zugreifen muss, so ist eine Anpassung im Systemd-Script (/etc/systemd/system/multi-user.target.wants/ies-webnode.service ) notwendig. Folgende Zeilen sind entsprechend in der Sektion "[Service]" zu ergänzen:

Environment=https_proxy=http://10.16.1.1:8080
Environment=http_proxy=http://10.16.1.1:8080
Environment=no_proxy=localhost,127.0.0.1

Apache Integration

<VirtualHost *:443>

   ...

   ProxyRequests Off
   ProxyPreserveHost On
   ProxyTimeout 3600
   <Proxy balancer://ies-webnode-balancer>
      Order Deny,Allow
      Allow from All
      BalancerMember http://localhost:8381
   </Proxy>
   ProxyPassMatch ^(/ies-webnode/.*)$      balancer://ies-webnode-balancer$1

   ...

</VirtualHost>

IES-Konfiguration

Wenn der IES-Webnode auf dem Webserver installiert ist, muss die Verbindung für den IES über die Administrations-Oberfläche konfiguriert werden. Bei den Servereinstellungen erscheint der Menüpunkt 'Webnode'. Erstellen Sie hier einen neuen Eintrag und vergeben einen sprechenden Namen. die Basis URL des Webnodes ist der Host (oder IP-Adress) des Server, auf dem der Webnode installiert wurde. Sollte keine Apache-Einbindung konfiguriert sein, muss hier der Port (default 8381) ergänzt werden (Beispiel: http://my.webnode.de:8381/). Das Passwort wurde bei der Installation automatisch vergeben und befindet sich in der Datei [WEBNODE_HOME]/config/realm.properties (Beispiel: "api: 123456789abcdef, api" => Login 'api' Passwd: '123456789abcdef')

/etc/defaults/ies-webnode

IES_JAVA_OPTIONS

Java Optionen die mit -D angegeben werden

Chunked transfer encoding für die Kommunikation vom IES z.b. zum IES-Webnode deaktivieren. Dies ist in der Regel nur dann notwendig, wenn die Kommunikation über einen Proxy läuft und dieser Chunked transfer encoding via POST nicht unterstütz (sehr alte Proxies)

com.sitepark.net.HttpClient.disableChunked=true

Updates

Der IES-Webnode ist aus IES-Sicht ein IES-Modul und wird auch so wie alle anderen IES-Module über die IES-Admin Oberfläche aktualisiert. Die Update-Dateien werden vom IES-Admin vom zentralen Update-Server von Sitepark herunter geladen und auf die IES-Webnodes verteilt. Das Update auf den einzelnen IES-Webnodes muss dann allerdings manuell ausgeführt werden. Ob ein Update auf den IES-Webnodes zur Ausführung bereit steht kann innerhalb des IES-Admin im Bereich 'Webnode' nachgesehen werden.

Linux

Steht ein Update die IES-Webnode zur Verfügung kann das Update wie folgt ausgeführt werden

/etc/init.d/ies-webnode stop
/etc/init.d/ies-webnode update
/etc/init.d/ies-webnode start

Status abfragen

Der Webnode kann einen Status-Bericht zum eigenen Prozess und zu den verwalteten Publishern liefern. Hierzu werden Anfragen und Antworten per JSON generiert. Der Kommunikationsaufruf ist dabei i.d.R. folgender:

  1. Aufruf des Publisher-Status in IES-Admin im Browser -> HTTPS-Request vom Nutzer an den IES
  2. IES stellt Anfrage an den Webnode des Publishers -> HTTPS-Request an den Webserver auf dem der Webnode installiert wurde (ggf. auch direkt auf Port 8381)
  3. Webserver leitet Anfrage via Proxy-Request an den lokalen Webnode-Prozess -> HTTP-Request an Webnode
  4. Webnode erstellt HTTPS-Anfrage an ein PHP-Script im Publisher -> HTTPS-Request an den lokalen Webserver

Der Python-Aufruf am Ende der Aufrufe (s.u.) sorgt für eine lesbare Darstellung der JSON-Daten. Alternativ kann auch jq verwendet werden.

Ein aktuell typisches Problem ist die Problematik von Apache 2.4 und PHP-FPM (Fast.CGI). Hier ist Chunked-Transfer-Encoding nicht möglich. Dies muss in den Setzungen des Webnode über

-Dcom.sitepark.net.HttpClient.disableChunked=true

in den Java-Optionen deaktiviert werden.

Webnode-Status

Den Status des Webnode kann man auf dem lokalen System über folgenden curl-Aufruf abfragen:

curl -s "http://api:XXX@localhost:8381/ies-webnode/admin/rpc/?rpcAction=Server&rpcMethod=getStatus" | python -m json.tool

Die Authentifizierung erfolgt über die URL. Der Login ist api. Dass Passwort ist Ihr API-Key. Diesen können Sie der Datei realm-properties im Installationsverzeichnis des Webnode entnehmen.

Publisher-Status

Aufruf des Webnodes durch den IES (im Fall einer lokalen Installation):

curl -s "http://api:XXX@localhost:8381/ies-webnode/admin/rpc/?rpcAction=WebChannel&rpcMethod=getStatus&protocol=https&host=hostname" | python -m json.tool

Die Authentifizierung erfolgt über die URL. Der Login ist api. Dass Passwort ist Ihr API-Key.

URL für Request des Webnodes auf den Publisher:

curl  -k "https://api:XXX@hostname/WEB-IES/sitekit-module/php/SP/SiteKit/Rpc/Server/Port.php?rpcAction=SP\\SiteKit\\Rpc\\WebChannel\\Info&rpcMethod=getInfo"  | python -m json.tool

Der Parameter Host ist der Domain-Name des Publisher.

Zum Debuggen von Problemen kann es hilfreich sein die HTTPS-Konfiguration temp. abzustellen (macro siteNoSSL statt site) und das zippen der Daten (mod_deflate) zu deaktivieren. Anschließend kann die Kommunikation mit ngrep untersucht werden.