{"id":7178,"date":"2022-02-15T20:02:02","date_gmt":"2022-02-15T18:02:02","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=7178"},"modified":"2022-02-15T23:57:18","modified_gmt":"2022-02-15T21:57:18","slug":"hcl-connections-dateiupload-ueber-den-ibm-http-server-statt-websphere-mit-mod_ibm_upload","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/hcl-connections-dateiupload-ueber-den-ibm-http-server-statt-websphere-mit-mod_ibm_upload\/","title":{"rendered":"HCL Connections Dateiupload \u00fcber den IBM HTTP Server statt WebSphere mit mod_ibm_upload"},"content":{"rendered":"<p>Standardm\u00e4\u00dfig werden Dateiuploads in HCL Connections \u00fcber den WebSphere-Anwendungsserver durchgef\u00fchrt. Der vorgeschaltete IBM HTTP Server fungiert dabei als eine Art Reverse Proxy. Diese Konstellation ist &#8211; vor allem in gr\u00f6\u00dferen Umgebungen &#8211; aus mehreren Gr\u00fcnden suboptimal: WebSphere ist schlecht f\u00fcr das Hoch- und Herunterladen gro\u00dferer Dateien ausgelegt. Und hierbei sprechen wir nicht einmal von 5GB aufw\u00e4rts, die das offizielle Limit von nur 2GB bei weitem sprengen w\u00fcrden. Inoffiziell l\u00e4sst sich diese nicht mehr wirklich zeitgem\u00e4\u00dfe Limitierung auch nur \u00fcber den IHS praktikabel umgehen. In diesem Artikel m\u00f6cht ich mich jedoch darauf fokusieren, dies unter einer Connections 6.5.1 \u00fcberhaupt erst einmal zum Laufen zu bekommen. Zumindest in der aktuellen Version war einiges an Rervese Engineering und ausprobieren notwendig.<\/p>\n<p>Der Artikel gliedert sich in zwei Abschnitte: Der Erste ist eher eine praktische Anleitung, um den Dateiupload \u00fcber den IHS zu realisieren. Teil 2 behandelt die Probleme, welche bei Anwendung der offiziellen Doku auftreten mit Details zu meinen Recherchen\/Tests. Connections bietet auch die M\u00f6glichkeit, die Uploads aus den Aktivit\u00e4ten per IHS auszuliefern. Das habe ich in diesem Artikel zur Vereinfachung nicht behandelt, sollte sich mit den hier dargestellten L\u00f6sungswegen aber auch umsetzen lassen. In meinen Augen ist es dort zu vernachl\u00e4ssigen, da gr\u00f6\u00dfere Dateien eher in der Files-Anwendung hochgeladen werden.<\/p>\n<h2 class=\"wp-block-heading\" id=\"so-bekommt-man-den-dateiupload-per-ish-unter-cnx-6-5-zum-laufen-praktische-anleitung\">So bekommt man den Dateiupload per ISH unter CNX 6.5 zum Laufen (Praktische Anleitung)<\/h2>\n<h3 class=\"wp-block-heading\" id=\"konfiguration-des-ibm-http-servers\">Konfiguration des IBM HTTP Servers<\/h3>\n<p>Wahrscheinlich habt ihr einen 64 Bit IHS und ben\u00f6tigt dementsprechend eines der 64 Bit Module &#8211; Wahlweise aus dem <strong>ihs.linux.x86_64<\/strong> oder <strong>ihs.linux.ia32<\/strong> Ordner. Die Dokumentation erw\u00e4hnt nicht worin sich diese unterscheiden, in meinen Tests funktionieren beide.<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ncp \/opt\/HCL\/Connections\/ihs\/mod_ibm_upload\/ihs.linux.x86_64\/mod_ibm_upload.so \/opt\/IBM\/HTTPServer\/modules\/\n<\/pre>\n<\/div>\n<p>In der <strong>httpd.conf<\/strong> des IHS beide Module laden. Auch das Rewrite-Modul wird ben\u00f6tigt, da im Falle des Uploads per IHS die URL umgeschrieben wird:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-apache\" data-line=\"\">LoadModule rewrite_module modules\/mod_rewrite.so\nLoadModule ibm_upload_module modules\/mod_ibm_upload.so<\/code><\/pre>\n<p>Damit der IHS die Uploads ins Dateisystem schreiben darf, ben\u00f6tigt er Schreibzugriff. Und zwar auf den <strong>files\/upload<\/strong> Ordner im Shared Directory. Bei Bedarf kann man ihn in der ISC \u00fcber die WAS-Variablen einsehen. In meinem Fall lautet er<strong> \/opt\/IBM\/shared,<\/strong> woraus sich der Uploadpfad <strong>\/opt\/IBM\/shared\/files\/upload\/<\/strong> ergibt. Per ACL gew\u00e4hren wir nobody (dem Standard-IHS Benutzer) Zugriff und erstellen eine ACL f\u00fcr neue Daten:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nchown nobody:nobody -R \/opt\/IBM\/shared\/files\/upload\nsetfacl -R -d -m user:nobody:rwx \/opt\/IBM\/shared\/files\/upload\n<\/pre>\n<\/div>\n<p>Dies muss vom Dateisystem unterst\u00fctzt werden &#8211; hier getestet auf einem CentOS 7.9 Server mit XFS. Gegebenfalls muss zus\u00e4tzlich das Leserecht auf \/opt\/IBM\/shared gew\u00e4hrt werden, je nach Mount\/Dateisystem.<\/p>\n<p>Der Upload kann nun im IHS aktiviert werden. Dazu muss der Konfigurationsblock aus der Doku in den VirtualHost eingef\u00fcgt werden. Ich habe das mit einer Teilkonfiguration gel\u00f6st, die per <strong>Include<\/strong> eingebunden wird:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-apache\" data-line=\"\">&lt;VirtualHost *:443&gt;\n  SSLEnable\n   RedirectMatch &quot;^\/$&quot; &quot;\/homepage&quot;\n   Include conf\/ihs-upload.conf\n&lt;\/VirtualHost&gt;\n<\/code><\/pre>\n<p>In die Datei conf\/ihs-upload.conf m\u00fcssen folgende Direktiven:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-apache\" data-line=\"\">&lt;IfModule mod_rewrite.c&gt;\nRewriteEngine On\n\n# Uncomment to create log messages.\nRewriteLog logs\/rewrite.log\nRewriteLogLevel 9\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/myfilesync\/feed(\\?[^\/]*)? \/ihs\/files\/$1\/api\/myfilesync\/feed$2 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/userlibrary\/([^\/]+)\/feed(\\?[^\/]*)? \/ihs\/files\/$1\/api\/userlibrary\/$2\/feed$3 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/communitylibrary\/([^\/]+)\/feed(\\?[^\/]*)? \/ihs\/files\/$1\/api\/communitylibrary\/$2\/feed$3 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/myfilesync\/document\/([^\/]+)\/entry(\\?[^\/]*)? \/ihs\/files\/$1\/api\/myfilesync\/document\/$2\/entry$3 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} ^phases$ [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} ^[0-9a-zA-Z-]+$ [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/library\/([^\/]+)\/document\/([^\/]+)\/entry(\\?[^\/]*)? \/ihs\/files\/$1\/api\/library\/$2\/document\/$3\/entry$4 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/userlibrary\/([^\/]+)\/document\/([^\/]+)\/entry(\\?[^\/]*)? \/ihs\/files\/$1\/api\/userlibrary\/$2\/document\/$3\/entry$4 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/myuserlibrary\/document\/([^\/]+)\/entry(\\?[^\/]*)? \/ihs\/files\/$1\/api\/myuserlibrary\/document\/$2\/entry$3 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/myuserlibrary\/feed(\\?[^\/]*)? \/ihs\/files\/$1\/api\/myuserlibrary\/feed$2 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/communitylibrary\/([^\/]+)\/document\/([^\/]+)\/entry(\\?[^\/]*)? \/ihs\/files\/$1\/api\/communitylibrary\/$2\/document\/$3\/entry$4 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/library\/([^\/]+)\/feed(\\?[^\/]*)? \/ihs\/files\/$1\/api\/library\/$2\/feed$3 [PT,L]\n\nRewriteCond %{ENV:ENV-SKIP-IBM-UPLOAD-HANDLER} !=true [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-METHOD} phases [NC]\nRewriteCond %{HTTP:X-IBM-UPLOAD-TOKEN} [0-9a-zA-Z-] [NC]\nRewriteCond %{REQUEST_METHOD} !=GET [NC]\nRewriteCond %{REQUEST_METHOD} !=OPTION [NC]\nRewriteCond %{REQUEST_METHOD} !=HEAD [NC]\nRewriteCond %{REQUEST_METHOD} !=DELETE [NC]\nRewriteRule ^\/files\/(basic|form|oauth)\/api\/document\/([^\/]+)\/entry(\\?[^\/]*)? \/ihs\/files\/$1\/api\/document\/$2\/entry$3 [PT,L]\n\n&lt;\/IfModule&gt;\n\n&lt;Location &quot;\/ihs\/files&quot;&gt;\n        IBMUploadHandler On\n        SetHandler ibm_upload_handler\n        IBMUploadBaseStore &quot;\/opt\/IBM\/shared\/files\/upload\/files&quot;\n        IBMUploadMethods POST,PUT\n        IBMUploadURLPrefix \/ihs\n        IBMUploadActivateResumable On\n&lt;\/Location&gt;<\/code><\/pre>\n<p>Neben dem ggf. anzupassenden Uploadpfad enth\u00e4lt der Block nur eine neue, aber wichtige Zeile im Gegensatz zu HCL Doku:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-apache\" data-line=\"\">IBMUploadActivateResumable On<\/code><\/pre>\n<p>Fehlt diese Zeile, erhaltet ihr beim Upload von Dateien gr\u00f6\u00dfer als 500MB eine Fehlermeldung. Damit ist der IHS abgeschlossen und muss lediglich noch neu gestartet werden.<\/p>\n<h3 class=\"wp-block-heading\" id=\"konfiguration-von-websphere-files-anwendung\">Konfiguration von WebSphere (Files-Anwendung)<\/h3>\n<p>In der <strong>files-config.xml<\/strong> ist das Modul standardm\u00e4\u00dfig seit einiger Zeit aktiviert, sofern man es nicht explizit abgeschaltet hat (wirkt sich nicht negativ aus, so lange der IHS nicht wie oben beschrieben konfiguriert wurde):<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-xml\" data-line=\"\">&lt;upload&gt;\n       &lt;modIBMUpload enabled=&quot;true&quot;\/&gt;\n&lt;\/upload&gt;\n<\/code><\/pre>\n<p>Nun setzen wir ein Limt f\u00fcr die simpleUploadAPI, die \u00fcber WebSphere l\u00e4uft &#8211; also mit Overhead. Tragen wir hier z.B. 128MB ein, kommt bis 128MB der WAS zum Einsatz und erst dar\u00fcber der IHS.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-xml\" data-line=\"\">&lt;api&gt;\n     &lt;indent enabled=&quot;false&quot;\/&gt;\n     &lt;simpleUploadAPI maximumSizeInKb=&quot;128000&quot;&gt;\n     ...<\/code><\/pre>\n<p>Wichtig noch das generelle Gr\u00f6\u00dfenlimit, zu finden in file.media<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-xml\" data-line=\"\">&lt;file&gt;\n     ...\n     &lt;media maximumSizeInKb=&quot;5000000&quot;\/&gt;\n     ...<\/code><\/pre>\n<p>Dieses Limit greift unabh\u00e4ngig von der Uploadart und erzeugt bei \u00dcberschreitung auch eine Fehlermeldung f\u00fcr den Benutzer. <a href=\"https:\/\/support.hcltechsw.com\/csm?id=kb_article&amp;sysparm_article=KB0020746&amp;sys_kb_id=c25b07351bc740d083cb86e9cd4bcb06\" target=\"_blank\" rel=\"nofollow\">Laut HCL werden offiziell lediglich maximal 2GB unterst\u00fctzt<\/a>. In Kombination mit dem IHS-Upload ist in der Praxis mehr m\u00f6glich.<\/p>\n<p>Nach dem vollst\u00e4ndigen Neu-Synchronisieren und einem Neustart der Files-Anwendung greifen die \u00c4nderungen. Man sollte nun Dateien bis zum <strong>files.media<\/strong> Limit hochladen k\u00f6nnen. <\/p>\n<h2 class=\"wp-block-heading\" id=\"probleme-und-fallstricke-bei-der-offiziellen-doku-die-hintergrunde\">Probleme und Fallstricke bei der offiziellen Doku: Die Hintergr\u00fcnde<\/h2>\n<p>In diesem Abschnitt gehe ich ausf\u00fchrlicher auf die Probleme ein, die in meiner CNX 6.5.1 Umgebung bei Verwendung der offiziellen HCL-Dokumentation aufgetreten sind. Wer sich weniger f\u00fcr die Hintergr\u00fcnde interessiert und prim\u00e4r eine funktionierende Installation realisieren m\u00f6chte, findet eine funktionierende Anleitung im oberen ersten Abschnitt.<\/p>\n<h3 class=\"wp-block-heading\" id=\"architektur-es-gibt-auch-einen-bzw-zwei-64-bit-ihs\">Architektur: Es gibt auch einen (bzw. zwei) 64 Bit IHS!<\/h3>\n<p>Hier beginnt das erste Problem.<a href=\"https:\/\/help.hcltechsw.com\/connections\/v7\/admin\/install\/t_install_post_files_uploads.html\" target=\"_blank\" rel=\"nofollow\"> In der Dokumentation wird darauf hingewiesen<\/a>, der IBM HTTP Server sei immer nur eine 32-Bit Anwendung &#8211; dementsprechend w\u00fcrde auch das 32 Bit Modul ben\u00f6tigt werden. <\/p>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>These directories are valid whether you installed the IBM HTTP Server from the 32-bit or 64-bit supplemental package. The IBM HTTP Server process is 32-bits in both cases and requires 32-bit modules.<\/p>\n<p><cite>Offizielle HCL Connections 6.5 Dokumentation<\/cite><\/p><\/blockquote>\n<p>Dies ist allerdings nicht korrekt. \u00dcber den Schalter <strong>-V<\/strong> (Gro\u00df, da <strong>-v<\/strong> lediglich die Version ausgibt) erh\u00e4lt man zahlreiche Builddetails &#8211; darunter auch die Architektur. Wie man sieht, handelt es sich um eine 64-Bit Instanz:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# \/opt\/IBM\/HTTPServer\/bin\/apachectl -V\nServer version: IBM_HTTP_Server\/8.5.5.16 (Unix)\nApache version: 2.2.8 (with additional fixes)\nServer built:   Jul 22 2019 14:19:35\nBuild level:    IHS85\/webIHS1929.01\nServer&#039;s Module Magic Number: 20051115:23\nServer loaded:  APR 1.2.12, APR-Util 1.2.12\nCompiled using: APR 1.2.12, APR-Util 1.2.12\nArchitecture:   64-bit\n&#x5B;...]\n<\/pre>\n<\/div>\n<p>Verifizieren l\u00e4sst sich dies auch \u00fcber <strong>ps -oflags<\/strong> anhand der <strong>httpd<\/strong>-Prozesse:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# for pid in $(pgrep httpd); do echo $pid; echo $(ps -oflags=$pid | tail -n 1); echo &quot;&quot;; done\n887\n4\n\n888\n4\n&#x5B;...]\n<\/pre>\n<\/div>\n<p><a href=\"https:\/\/stackoverflow.com\/a\/19019759\/3276634\" target=\"_blank\" rel=\"nofollow\">Das Flag 4 steht f\u00fcr LP64 und damit f\u00fcr einen 64 Bit Prozess<\/a>. Dies ist bei s\u00e4mtlichen 7 Prozessen der Fall, sodass es sich hier um eine vollst\u00e4ndige 64-Bit Installation handelt. Dies macht auch Sinn &#8211; schlie\u00dflich ist ein 32 Bit Prozess f\u00fcr heutige Verh\u00e4ltnisse doch stark im Arbeitsspeicher beschr\u00e4nkt. Gerade bei einem Apache-Fork (der bekanntlich nicht gerade am sparsamsten mit dem RAM ist), w\u00fcrde ich eine 64-Bit Installation bevorzugen.<\/p>\n<p>Damit ist nun klar, dass wir ein 64 Bit Modul ben\u00f6tigen. Auf der Suche danach stellt sich die n\u00e4chste Frage: Welches davon? Wir haben die Wahl zwischen <strong>amd64 <\/strong>und <strong>x86_64<\/strong>:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n# ls -lh \/opt\/HCL\/Connections\/ihs\/mod_ibm_upload\/ | grep linux\ndrwxr-xr-x 2 root root   31 Feb 13 15:26 ihs.linux.amd64\ndrwxr-xr-x 2 root root   31 Feb 13 15:26 ihs.linux.ia32\ndrwxr-xr-x 2 root root   31 Feb 13 15:26 ihs.linux.ppc32\ndrwxr-xr-x 2 root root   31 Feb 13 15:26 ihs.linux.ppc64\ndrwxr-xr-x 2 root root   31 Feb 13 15:26 ihs.linux.s390\ndrwxr-xr-x 2 root root   31 Feb 13 15:26 ihs.linux.s390_64\ndrwxr-xr-x 2 root root   31 Feb 13 15:26 ihs.linux.x86_64\n<\/pre>\n<\/div>\n<p>Beides sind gel\u00e4ufige Bezeichnungen f\u00fcr die 64 Bit Architektur. Es ist daher unklar, worin die beiden sich unterscheiden. Die Gr\u00f6\u00dfe ist mit 36360 zu 36520 Bytes zwar \u00e4hnlich, aber nicht identisch. Somit handelt es sich um keine Kopie des gleichen Modules.<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ncp \/opt\/HCL\/Connections\/ihs\/mod_ibm_upload\/ihs.linux.x86_64\/mod_ibm_upload.so \/opt\/IBM\/HTTPServer\/modules\/\n<\/pre>\n<\/div>\n<p>Grunds\u00e4tzlich scheinen beide Module zu funktionieren. Mit entsprechender Konfiguration (siehe unten) konnte ich keine Probleme feststellen. Man kann daher wahlweise eines der beiden nehmen, zum Beispiel<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ncp \/opt\/HCL\/Connections\/ihs\/mod_ibm_upload\/ihs.linux.amd64\/mod_ibm_upload.so \/opt\/IBM\/HTTPServer\/modules\/\n<\/pre>\n<\/div>\n<h3 class=\"wp-block-heading\" id=\"mit-der-entsprechenden-acl-kann-was-auch-als-root-laufen\">Mit der entsprechenden ACL kann WAS auch als root laufen<\/h3>\n<p>In der Dokumentation wird vor Konflikten gewarnt, die den Upload verhindern, falls WebSphere als root ausgef\u00fchrt wird. Zun\u00e4chst einmal ist nat\u00fcrlich aus sicherheitstechnischer Sicht davon abzuraten, einen Anwendungsserver mit vollen Privilegien zu starten. Zumal bei WebSphere aufgrund der verwendeten Ports ohnehin keinerlei Grund dazu besteht &#8211; einzig bei der Installation von Docs muss man die Standardports 80\/443 anpassen. Gerade in Testinstallationen ist dies jedoch durchaus weniger kritisch und wird auch von HCL selbst so praktiziert. <\/p>\n<p>An dieser Stelle geht es mir daher um den Einwand in der Dokumentation, dies w\u00fcrde nicht funktionieren. Auch das ist in meinen Augen falsch. Wichtig ist, dass die passenden Zugriffsrechte gesetzt werden. Standardm\u00e4\u00dfig l\u00e4uft der IHS mit dem Benutzer <strong>nobody<\/strong>. F\u00fcr den <strong>files <\/strong>Ordner im gemeinsam genutzten Verzeichnis sind daher folgende Rechte zu setzen:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nsetfacl -R -d -m user:nobody:rwx \/opt\/IBM\/shared\/files\/\n<\/pre>\n<\/div>\n<p>Dies nat\u00fcrlich unter der Voraussetzung, dass vom Dateisystem ACLs unterst\u00fctzt werden. Hier anhand eines CentOS 7.9 mit XFS getestet, wo dies kein Problem darstellt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Standardm\u00e4\u00dfig werden Dateiuploads in HCL Connections \u00fcber den WebSphere-Anwendungsserver durchgef\u00fchrt. Der vorgeschaltete IBM HTTP Server fungiert dabei als eine Art Reverse Proxy. Diese Konstellation ist &#8211; vor allem in gr\u00f6\u00dferen Umgebungen &#8211; aus mehreren Gr\u00fcnden suboptimal: WebSphere ist schlecht f\u00fcr das Hoch- und Herunterladen gro\u00dferer Dateien ausgelegt. Und hierbei sprechen wir nicht einmal von 5GB &#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[765],"tags":[795],"class_list":["post-7178","post","type-post","status-publish","format-standard","hentry","category-hcl-connections","tag-ihs"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=7178"}],"version-history":[{"count":5,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7178\/revisions"}],"predecessor-version":[{"id":8513,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7178\/revisions\/8513"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=7178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=7178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=7178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}