Stand: 2026-07-31 · Script: install-ibmmq-9.4.sh
Getestet mit IBM MQ 9.4.x und 10.0.x Developer Edition auf Ubuntu 24.04.
Interaktives Bash-Script zur Installation und laufenden Verwaltung von IBM MQ auf Linux (RPM- und DEB-basierte Distributionen, x86_64 und ARM64). Alle Funktionen sind über ein Hauptmenü (whiptail-Dialoge oder Text-Modus) sowie über Umgebungsvariablen für die Automatisierung erreichbar.
| Nr. | Aktion | Nach Abschluss |
|---|---|---|
| 1 | Neuinstallation (Pakete + Queue Manager) | Script endet mit Zusammenfassung |
| 2 | Weiteren Queue Manager hinzufügen | Script endet mit Zusammenfassung |
| 3 | Backup eines/aller Queue Manager | zurück ins Hauptmenü |
| 4 | Queue Manager aus Backup wiederherstellen | zurück ins Hauptmenü |
| 5 | Installation upgraden | Script endet |
| 6 | Zusatzfeature nachinstallieren (MQTT/AMS/Web) | Script endet |
| 7 | Installation vollständig entfernen | Script endet |
| 8 | Objekte erstellen (Kanäle, Listener) | zurück ins Hauptmenü |
| 9 | SSL/TLS-Verwaltung | zurück ins Hauptmenü |
| 10 | Status anzeigen (+ Start/Stopp) | zurück ins Hauptmenü |
| 11 | Alias-Übersicht anzeigen | zurück ins Hauptmenü |
| 12 | Beenden | – |
Abbrechen (Cancel/ESC) führt an jeder Stelle zurück ins Hauptmenü – nur echte Fehler beenden das Script (mit Fehlermeldung und Logfile-Verweis).
Das Script setzt bei jeder QM-Anlage automatisch um:
- CONNAUTH (
CHCKCLNT(REQUIRED)): Client-Verbindungen brauchen OS-Benutzer + Passwort. → Pflicht-Folgeschritt:sudo passwd <app-user> - CHLAUTH aktiv mit Block-Regeln: privilegierte Benutzer (
*MQADMIN) werden auf allen Kanälen geblockt,SYSTEM.DEF.SVRCONN/SYSTEM.ADMIN.SVRCONNsind gesperrt. - Dedizierte Kanäle statt SYSTEM-Kanäle:
APP.SVRCONN– für AnwendungenEXPLORER.SVRCONN– nur für MQ Explorer / Admin-Tools (getrennt, damit Regeln/Sperrungen unabhängig von Anwendungen möglich sind)- Beide mit festem, nicht-privilegiertem
MCAUSER
- Least Privilege über eine Gruppe: Berechtigungen (
setmqaut) werden auf die Gruppe (mqappusers) vergeben, nicht auf Einzelbenutzer. Neue App-Benutzer/MCAUSER einfach in die Gruppe aufnehmen – kein erneutessetmqautnötig. - App-Benutzer ist NICHT Mitglied von
mqm(sonst wäre er privilegiert). - Dead Letter Queue wird gesetzt (
SYSTEM.DEAD.LETTER.QUEUE). - MAXCHL/MAXACTCHL landen korrekt in der
qm.ini(StanzaChannels:), nicht im MQSC (dort sind sie keine gültigenALTER QMGR-Parameter).
Bei der Neuinstallation optional (Standard: ja):
- Kernel-Parameter nach IBM-Doku („Configuring the operating system on
Linux") in
/etc/sysctl.d/99-ibmmq.conf:kernel.shmmni/shmall/shmmax,kernel.sem,fs.file-max,kernel.pid_max(IBM: 120000),kernel.threads-max– Werte werden nur angehoben, nie unter einen besseren Bestand abgesenkt (jeder der 4kernel.sem-Teilwerte einzeln geprüft). - ulimits für
mqm/rootin/etc/security/limits.d/99-ibmmq.conf(nofile 10240, nproc 4096). - systemd-Units erhalten zusätzlich
LimitNOFILE/LimitNPROC, da PAM-Limits für systemd-Dienste laut IBM-Doku NICHT greifen.
Pro Queue Manager, Key-Repository unter /var/mqm/qmgrs/<QM>/ssl/key.kdb
(CMS, mit Stash-Datei; Passwort wahlweise automatisch generiert oder selbst
vergeben):
| Aktion | Zweck |
|---|---|
| Self-Signed erstellen/erneuern | Schnelleinstieg/Test; setzt SSLKEYR/CERTLABL + REFRESH SECURITY |
| CSR erstellen | Produktionsweg: Zertifikatsanfrage für echte CA (runmqakm -certreq -create) |
| Trust-Zertifikat hinzufügen | Root-/Zwischenzertifikat der CA (-cert -add) – VOR dem Einspielen! |
| Signiertes Zertifikat einspielen | -cert -receive (verknüpft mit privatem Schlüssel; -add wäre falsch!) |
| Zertifikate anzeigen | -cert -list |
| Details/Ablaufdatum | -cert -details |
| Passwort ändern | -keydb -changepw (aktuelles Passwort erforderlich) |
Reihenfolge beim CA-Workflow: CSR erstellen → an CA senden → Root-/Zwischenzertifikate als Trust einspielen → erst dann das signierte Zertifikat empfangen (sonst schlägt die Trust-Chain-Prüfung fehl).
Für einen bestehenden QM per Checkliste:
- SVRCONN-Kanal nach Best Practice: dedizierter Name, fester nicht-privilegierter MCAUSER, CHLAUTH-ADDRESSMAP, optional TLS. Der MCAUSER wird automatisch der Berechtigungsgruppe hinzugefügt.
- TCP-Listener: eigener Name/Port,
CONTROL(QMGR), wird gestartet; optional Firewall-Freigabe (firewalld/ufw). - Abschluss zeigt fertige MQ-Explorer-Verbindungsparameter.
Backup (/var/mqm-backups/, Zeitstempel im Dateinamen):
- Konfiguration:
dmpmqcfg -m <QM> -x all -a→<QM>-config-<ts>.mqsc - Daten/Logs: tar-Archiv →
<QM>-data-<ts>.tar.gz(QM wird dafür kurz gestoppt, auf Wunsch)
Restore:
config-Modus: MQSC auf bestehenden/neuen QM zurückspielenfull-Modus: Daten-Archiv entpacken (Ziel-QM muss gestoppt sein)
Systemweit in /etc/profile.d/mqm-aliases.sh (wirksam nach neuer Anmeldung;
bewusst NICHT im .profile des mqm-Users – der ist ein nologin-
Service-Account, dessen .profile nie geladen würde). Wird bei jedem Lauf aus
allen auf dem Host vorhandenen QMs neu generiert.
| Alias (je QM) | Befehl |
|---|---|
tail-<qm> |
tail -F .../errors/AMQERR01.LOG (folgt der Log-Rotation!) |
mqsc-<qm> |
interaktives runmqsc als mqm |
status-<qm> |
dspmq -m <QM> -o status |
start-<qm> / stop-<qm> |
strmqm / endmqm -w |
chstatus-<qm> |
DISPLAY CHSTATUS(*) ALL – Kanalstatus |
qdepth-<qm> |
DISPLAY QUEUE(*) CURDEPTH MAXDEPTH TYPE(QLOCAL) |
xmitq-<qm> |
Transmit-Queue-Füllstände (WHERE(USAGE EQ XMITQ)) |
Global: mqver (dspmqver), qmlist (alle QMs mit Status + Installation).
QM-Namen mit ./- werden im Aliasnamen zu _ (z. B. PAY.QM → tail-pay_qm).
- Upgrade: Versionsprüfung VOR jeder Änderung – echte Downgrades werden hart geblockt (IBM-Pakete verweigern sie intern und hinterlassen sonst ein halb zerstörtes System). Optional Backup vorab. QMs werden gestoppt, Pakete aktualisiert, QMs neu gestartet.
- Feature: MQTT/Telemetry (inkl. IBM-Sample-MQSC für den MQXR-Service), AMS, Web Console nachinstallierbar.
- Deinstallation: Stoppt Web Console + alle QMs, entfernt Pakete,
systemd-Units, Aliase, optional
mqm-User +/var/mqm. UNWIDERRUFLICH – vorher Backup empfohlen (wird angeboten).
--non-interactive + Umgebungsvariablen (alle im Script-Kopf dokumentiert):
sudo MQ_MODE=backup BACKUP_QMS=all ./install-ibmmq-9.4.sh --non-interactive
sudo MQ_MODE=install MQ_QMGR_COUNT=2 ./install-ibmmq-9.4.sh \
--media /pfad/medium --non-interactiveWichtige Variablen (Auszug): MQ_MODE, MQ_QMGR_NAME/COUNT,
MQ_LISTENER_PORT, MQ_APP_USER/GROUP/CHANNEL/QUEUE, MQ_EXPLORER_CHANNEL,
SEC_TLS/SEC_CONNAUTH/SEC_CHLAUTH, INST_WEB, ENABLE_AUTOSTART,
ENABLE_ALIASES, OS_TUNE_MQ, BACKUP_DIR, UNINSTALL_*.
Im Automatisierungsmodus enden alle Aktionen mit Exit-Code 0 (Erfolg) bzw. 1 (Fehler) – kein Menü-Rücksprung.
- Vollständiges Log:
/var/log/ibmmq-install-<zeitstempel>.log - Fehler zeigen Zeilennummer + Logfile-Pfad; das Script bricht bei echten
Fehlern ab, statt still weiterzumachen (
set -Eeuo pipefail). runmqsc-Syntaxfehler in der Provisionierung gelten als Gesamt-Fehlschlag (bewusst: lieber laut scheitern als eine halbe Security-Konfiguration).- QM-Start erkennt AMQ7204E („anderer Installation zugeordnet") und versucht
automatisch
setmqm-Neuzuordnung.
- MQ Appliance, z/OS, Windows: nicht unterstützt (Linux-only).
- ARM32 (32-Bit Raspberry Pi): nur „as-is", IBM bietet keinen Support.
- Der TLS-„Passwort ändern"-Punkt benötigt das aktuelle Passwort – ein automatisch generiertes (nie angezeigtes) Passwort kann nicht geändert werden; in dem Fall Repository neu anlegen.
- Aliase/Umgebung (
/etc/profile.d/) wirken erst nach neuer Anmeldung.