Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Removed translated content for 'fr'
Sv translation
languageen

Table of Contents
maxLevel3
printablefalse

Voraussetzung

Requirement

The system must first be updated to a version with Das System muss vorher auf eine Version mit MySQL 8.x geupdatet werden (Release 3.15 bis to 3.17).

Vorbereitung für die Aktualisierung

Preparation for the update

With every update there is a golden rule that must be strictly followed regardless of the customer's wishesBei jeder Aktualisierung gibt es eine goldene Regel, die unabhängig von den Wünschen des Kunden strikt befolgt werden muss:

Tip
titleGoldene Regel Golden Rule Nr. 1

Es muss IMMER einen Weg zurück gebenThere must ALWAYS be a way back.


Tip
titleGoldene Regel Golden Rule Nr. 2

Bevor man ein System aktualisiert, sollte man es gut kennen.

Authoritative Share Bestimmen

Bei manchen Installationen, ist das File-Share auf ein System, der vom Kunden bereitgestellt wird.

In diesen Fall erfolgt das Checkout der Repositories lokal auf den Load-Balancer auf den Non-Authoritative Share, die Dateien werden aber später auf den "Authoritative" File-Share kopiert.

1

Before you update a system, you should know it well.

Determine Authoritative Share 

In some installations, the file share is on a system provided by the customer.

In this case, the repositories are checked out locally to the load balancer on the non-authoritative share, but the files are later copied to the "authoritative" file share.

After changes should be checked for the Authoritative File-ShareNach Änderungen sollte auf den Authoritative File-Share geprüft werden.

Authoritative File-Share

Dieser ist This is /home/jtel/shared

Non-Authoritative File-Share

Dieser ist This is /srv/jtel/shared

Bestimmen ob

Determine if Authoritative

Wenn If /home/jtel/shared auf den Load-Balancer von einem Fremdsystem gemountet ist, dann ist es in der Regel nicht authoritative.is mounted on the load balancer from a third-party system, it is usually not authoritative.

You can easily determine this by creating a file on Dies kann man einfach bestimmen, indem man eine Datei auf /srv/jtel/shared erzeugt. Erscheint dies nicht shared. If this does not appear in /home/jtel/shared, so ist then /srv/jtel/shared nicht is not authoritative.

Datensicherung

Es sollte unbedingt eine Datensicherung angefertigt werden. Das MINIMUM ist dass die Datenbank gesichert wird, und das Datenverzeichnis gesichert wird, dies sollte jedoch nur die Notlösung sein.

Besser ist ein Snapshot aller beteiligten virtuellen Maschinen, im Kaltzustand (heruntergefahren).

Die Gefahr besteht, dass wenn ein Snapshot im laufenden Betrieb gezogen wird (insbesondere der Datenbankmaschinen), dass dieser nicht konsistent ist.

Manuelle Sicherung

Data backup

A data backup should unconditionally be made. The MINIMUM is that the database is backed up and the data directory is backed up, but this should only be a stopgap solution.

Better is a snapshot of all virtual machines involved, in cold state (shut down).

There is a risk that if a snapshot is taken during operation (especially of the database machines), it may not be consistent.

Manual backup

Dienste Stoppen

Tip
titleAlle Dienste des jtel-Systems stoppenStop all services of the jtel system

Stop all applications on TEL serversAuf TEL Servern alle Anwendungen stoppen

  • start_launcher.cmd
  • startlistener.bat
  • TK Connector
    • Kann ggf. als Dienst laufen - siehe "Dienste" oder "Services"
    • May run as a service - see "Services" or "Dienste"
  • stop 8Server through the GUI or with the following command:

    Translations Ignore


    Code Block
    8Server durch die GUI oder mit folgender Kommando beenden:
    taskkill /im robot5.exe
     
Alle Webserver, die JBOSS Server stoppen:


All web servers that stop JBOSS servers

Translations Ignore


Code Block
service jboss stop

 

Alle DB Master:

service


P.S. version 3.18 and later have wildfly and not jboss anymore

Code Block
service wildfly stop


All DB masters:

Translations Ignore


Code Block
service jtel-listener stop
 
Alle Chat Server:


All chat servers:


Translations Ignore


Code Block
service jtel-
clientlistener
clientmessenger stop
Datenbank sichern



Backup database (

auf

on DB

Master

master)

Das entsprechende Passwort bei <password> eintragen:

Enter the corresponding password at <password>:

Sicherung der Datenbank vom primären DATA aus
Translations Ignore


Code Block
languagebash
title
Backup of the database from the primary DATA
su jtel
cd
mkdir -p /home/jtel/shared/Backup
mysqldump -u root -p<password> --add-drop-database --add-drop-table --events --routines --triggers --databases JTELWeb JTELStats JTELStats2 JTELLog | gzip > /home/jtel/shared/Backup/backup-$(hostname -s)-database-$(date +%F-%H%M%S).sql.gz



Backup Data

Verzeichnis sichern

Dies kann über den Windows Explorer oder ein entsprechender cp Befehl auf den Linux erfolgen.

GIT Status merken

Directory

This can be done via the Windows Explorer or a corresponding cp command on the Linux.

Remember GIT status (Authoritative Share)

Vom Load-Balancer aus, den GIT Status prüfen:

From the load balancer, check the GIT status:

Status Merken
Translations Ignore


Code Block
languagebash
titleNote GIT
status
cd /home/jtel/shared/JTEL
git status
git rev-parse HEAD
(
ausgaben
save 
sichern
output)
 
cd /home/jtel/shared/JTELCarrierPortal
git status
git rev-parse HEAD
(
ausgaben
save 
sichern
output)
 
# 
FALLS
IF 
EIN
A 
Kundenspezifischer
custom 
Verzeichnis
directory 
vorhanden ist
exists
 
cd /home/jtel/shared/Customer_Directory
git status
git rev-parse HEAD
(
ausgaben
save 
sichern)

 

Ggf. müssen hier die Verzeichnisse ebenso in die Datensicherung mit aufgenommen werden, insbesondere dann, wenn Patches eingespielt wurden, sodass lokale Änderungen erfolgt sind.

Weitere Komponenten sichern

Sind weitere Komponenten vom Update betroffen, wie der 8-Server selbst, oder der JBOSS Server (nicht die Webanwendung), sollten diese Komponenten vorab auch gesichert werden.

Snapshot Sicherung

Dies erfolgt über die VMWare Konsole, oder Hyper-V Konsole. Dies wird üblicherweise durch den Kunden durchgeführt.

Bestätigung

Warning
titleDatensicherung

Erst wenn die Datensicherung erfolgt ist (ggf. vom Kunden bestätigen lassen!), weitermachen!

Rücksicherung

Snapshots

Die Snapshots werden alle wieder aktiviert, und hochgefahren. Es sollte ein normaler Betrieb mit den alten Software-Stand herrschen.

Manuelle Rücksicherung

Mit allen Diensten gestopped, die Datenbank zurücksichern. Das entsprechende Passwort bei <password> eintragen:
output)




If necessary, the directories must also be included in the data backup, especially if patches have been applied so that local changes have been made.

Securing additional components

If other components are affected by the update, such as the 8 server itself, or the JBOSS server (not the web application), these components should also be backed up in advance.

Snapshot Backup

This is done via the VMWare console, or Hyper-V console. This is usually done by the customer.

Confirmation

Warning
titleData backup

Only when the data backup has been made (if necessary, have the customer confirm this!), continue!

Restore

Snapshots

The snapshots are all reactivated and booted. There should be normal operation with the old software.

Manual Restoration

With all services stopped, restore the database. Enter the corresponding password at <password>:

Kopieren und Entpacken des Dumps
Translations Ignore


Code Block
languagebash
title
Copy and unzip the dump
cp /home/jtel/shared/Backup/backup-acd-dbm-database-2016-06-30-293211.sql.gz .
gunzip backup-acd-dbm-database-2016-06-30-293211.sql.gz
mysql -u root -p<password> -e"backup-acd-dbm-database-2016-06-30-293211.sql"

Parallel dazu, kann das alte Data Verzeichnis zurückgespielt werden.



In parallel, the old data directory can be restored.

Further steps may be necessary (restore GIT repositories, restore 8 servers, ...) depending on which components were affected by the updateGgf. sind weitere Schritte erforderlich (GIT Repositories zurücksichern, 8-Server zurücksichern, ...) je nach dem welche Komponenten beim Update betroffen waren.

Info
titleTipp

Mach lieber ein Snapshot.

Die Aktualisierung des Systems

Es sei hier noch mal erwähnt: alle jtel-Dienste des Systems müssen herunter gefahren sein. 

Danach kann mit der Aktualisierung begonnen werden. Die Schritte erfolgen in der hier dokumentierten Reihenfolge

Aktualisierung der Software auf dem STORE

Better take a Snapshot

The updating of the system

It should be mentioned again: all jtel services of the system must be shut down. 

After that the update can be started. The steps are performed in the order documented here

Updating the software on the STORE

This step must be performed as user "jtel"Dieser Schritt muss als Benutzer "jtel" erfolgen.

Warning
titleNew Repository Locations

jtel hat seine Repository-Server umgezogen in die Cloud.has moved its repository servers to the cloud.

See hereSiehe hier: New Repository Locations

Es ist nötig, die URL der GIT repositories zu verändern, bevor man hier weitermacht.

Prüfung ob Änderungen / Patches vorhanden sind

It is necessary to change the URL of the GIT repositories before continuing here.

Check if changes / patches are available

Before updating the software, you should check whether files in the respective directory have been changedBevor die Software aktualisiert wird, sollte noch geprüft werden, ob im jeweiligen Verzeichnis Dateien geändert wurden.

Info
titleTipp

Es sollte There should be a readme.txt in /home/jtel/shared eine readme.txt vorhanden sein, der eventuell eingespielte Patches auflistet.

 

Hier ein Beispiel basierend auf das Software-Verzeichnis JTELCarrierPortal:

that may list any patches that have been applied.


Here is an example based on the software directory JTELCarrierPortal

Prüfen auf Änderungen
Translations Ignore


Code Block
languagebash
title
Check for changes
su jtel
cd /home/jtel/shared/JTELCarrierPortal
git status
git rev-parse HEAD
exit
Wird hier angezeigt, dass Dateien verändert wurden, ist Vorsicht geboten. Der Projektingenieur muss vorher prüfen, ob die Änderungen lokale Bugfixe sind, die inzwischen ins Release eingeflossen sind. In diesem Falle können die Änderungen vor der Aktualisierung gelöscht werden. Tut man dies nicht, so kann die Aktualisierung scheitern!



If this indicates that files have been modified, caution is advised.

The project engineer must first check whether the changes are local bug fixes that have been incorporated into the release. If this is the case, the changes can be deleted before updating. If this is not done, the update may fail!

Zurücknehmen von Änderungen
Translations Ignore


Code Block
languagebash
title
Undo changes
su jtel
cd /home/jtel/shared/JTELCarrierPortal
git checkout -- .
exit

Eine allgemeine Vorgehensweise kann in einem solchen Fall aber nicht beschrieben werden. Hier muss von Fall zu Fall geprüft werden, wie vorgegangen wird.

Falls Datei-Modus Änderungen ignoriert werden sollen, kann folgender Befehl genutzt werden:



However, a general procedure cannot be described in such a case. In this case, the procedure must be checked on a case-by-case basis.

If file mode changes should be ignored, the following command can be used:

Translations Ignore


Code Block
languagebash
titleGIT File Mode
git config core.fileMode false

Aktualisierung der Repositories (Immer auf Non-Authoritative Share)

Die folgende Befehlssequenz aktualisiert alle Software-Verzeichnisse auf dem letzten Stand des jeweilig eingestellten Releases.



Updating the repositories (always on non-authoritative share)

The following command sequence updates all software directories to the latest version of the respective chosen release.

Aktualisieren der Software-Verzeichnisse
Translations Ignore


Code Block
languagebash
title
Update the software directories
su jtel
cd /srv/jtel/shared/JTELCarrierPortal
git pull
cd /srv/jtel/shared/JTEL
git pull
cd /srv/jtel/shared/Customer_Directory
git pull
exit



Falls Fehler beim GIT auftreten, beispielsweiseIf errors occur in GIT, for example:

Merge-Konflikt Conflict in (Dateinamefile name)

Oder

fatal: Verweigere den Merge von nicht zusammenhängenden Historien.Deny the merge of unrelated histories.

the local repository must be reset. This can be done as follows (example for muss das lokale Repository resettet werden. Dies kann wie folgt (Beispiel für stable-3.18 auf on JTELCarrierPortal) geschehen:

Aktualisieren der Software-Verzeichnisse - reset des lokalen Repositories
Translations Ignore


Code Block
languagebash
title
Update the software directories - reset the local repository
su jtel
cd /srv/jtel/shared/JTELCarrierPortal
git reset --hard origin/release/stable-3.18

Auschecken des gewünschten Releases

Nachdem der GIT PULL erfolgt ist, muss das entsprechende Release ausgechecked werden, falls ein anderer als mit git status gewünscht ist.



Checking out the desired release

After the GIT PULL is done, the corresponding release must be checked out if a release other than git status is desired.

Aktualisieren der Software-Verzeichnisse
Translations Ignore


Code Block
languagebash
title
Update the software directories
su jtel
cd /srv/jtel/shared/JTELCarrierPortal
git checkout release/stable-3.18
cd /srv/jtel/shared/JTEL
git checkout release/stable-3.18
cd /srv/jtel/shared/Customer_Directory
git checkout release/stable-3.18
exit




Note
titleFix Shallow Clones

Es kann sein, dass git den gewünschten Release nicht kennt, trotz git pull und It may be that git does not know the release you want, despite git pull and git checkout.
In diesen Fall liegt ein sogenannter this case, there is a so-called "shallow clone" des Repositories vor, der nicht alle Branches beinhaltet.
Dies kann mit folgende Befehle verändert werdenof the repository, which does not contain all branches.
This can be changed with the following commands:


git fetch --unshallow
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
Dateien auf

Copy files to Authoritative Share

kopieren

Only if there is an Nur wenn es ein Authoritative / Non-Authoritative share gibt.

Dies geschieht mit folgender Skript

This is done with the following script

Komplettaktualisierung
Translations Ignore


Code Block
languagebash
title
Complete update
cd /srv/jtel/shared/JTELCarrierPortal/
bash update_fileshare.sh

Aktualisierungsskripte laufen lassen

Folgender Aktualisierungsskript führt alle notwendigen Änderungen durch. Dies wird als root oder jtel mit sudo ausgeführt. Hier mit jtel user:



Run update scripts

The following update script makes all necessary changes. This is executed as root or jtel with sudo. Here with jtel user:

Komplettaktualisierung
Translations Ignore


Code Block
languagebash
title
Complete update
cd /home/jtel/shared/JTELCarrierPortal/Update
sudo ./update_release.sh

Ggf. wird man zuerst nach den sudo Passwort gefragt. 

Das Skript fragt nach den entsprechenden Master Datenbank, Benutzer, Passwort, und Name des Kundenverzeichnisses indem ggf. spezifische Software für den Kunden liegt.




You may be asked for the sudo password first. 

The script asks for the corresponding master database, user, password, and name of the customer directory where specific software for the customer may be located.

The questions can be answered, usually with the following answers, knowledge of <password> for the database assumedDie Fragen können, in der Regel mit folgende Antworten beantwortet werden, Kenntnis von <password> für die Datenbank vorausgesetzt:

  • mysql host address: acd-dbm
  • mysql user name: root
  • mysql password: <password>
  • customer directory:

Falls kein Customer Directory vorhanden ist, kann dies leer gelassen werden. Das Vorhandensein von Kundenspezifische Software kann mit If there is no customer directory, this can be left empty. The presence of custom software can be checked with ls /home/jtel/shared geprüft werden - dort die Namen der Verzeichnisse anschauen. Nur den Namen des Verzeichnisses angeben! Beispielsweise acme - there you can see the names of the directories. Enter only the name of the directory! For example acme

The update is then carried outAnschließend wird das Update durchgeführt.

Warning
titleWichtiger HinweisImportant note

In einer Master/Slave Umgebung ist unbedingt darauf zu achten, diese Prozedur gegen der Master-Datenbank durchzuführen - sprich a master/slave environment, it is imperative to make sure to perform this procedure against the master database - i.e. mysql host address = MASTER-DB. Tut man dies aus Versehen auf einem Slave, hat man Chaos gesät: der Slave ist dann kaputt, und muss neu aufgesetzt werden. Die Aktualisierung muss dann (korrekt auf dem Master) wiederholt werden.

Binaries Herunterladen

Die Binaries werden mit folgenden Befehl heruntergeladen:

If you do this on a slave by mistake, you will have chaos: the slave will be broken, and must be set up again. The update must then be repeated (correctly on the master).

Download Binaries

The binaries are downloaded with the following command:

Translations Ignore


Code Block
languagebash
titleGet binaries
cd /home/jtel/shared/JTELCarrierPortal/Update
su jtel
bash get_binaries.sh
Aktualisierung des




Update of the Platform UDP

Listeners

Listener

Master

Datenbanken

Databases

Bei Release With release 3.18 und höherand higher, wird Java 8 verwendetis used. Das The (vorhandeneexisting) Java 7 muss deinstalliert werden, und Java 8 wird installiert.Wir verwenden den openjdk, sodass es unter Linux Updatefähig bleibt.must be uninstalled and Java 8 will be installed.

We use the openjdk so that it remains updateable under Linux.

Translations Ignore


Code Block
service jtel-listener stop
yum -y remove jdk.x86_64
yum -y install https://cdn.jtel.de/downloads/java/jdk-8u202-linux-x64.rpm
Die Aktualisierung des Platform UDP Listeners muss als Benutzer "root" ausgeführt werden und erfolgt auf die Master Datenbanken durch Eingabe folgendem Befehls:



The update of the Platform UDP Listener must be executed as user "root" and is performed on the master databases by entering the following command:

Aktualisierung des Listeners
Translations Ignore


Code Block
languagebash
title
Platform UDP
Listener updated
updatepl.sh



Dieser Befehl aktualisiert den Listener und startet ihn. Der Erfolg kann durch Sichtung der Datei This command updates the listener and starts it. The success can be checked by viewing the file /home/jtel/PlatformUDPlistener/log/listener.log geprüft werden.

Info
titleTipp

Der Listener ist nur auf die Master-Datenbanken dann installiert, wenn eine SOAP Schnittstelle lizenziert ist.

Telefonieservern

The listener is only installed on the master databases if a SOAP interface is licensed.

Telephony servers

Here you have to check if Java 8 is installed. If necessary, download Java 8 from one of the sources here (these are BCL licensed versions, i.e. license-freeHier ist zu prüfen ob Java 8 installiert ist. Ggf. Java 8 von einer der Quellen hier herunterladen (dies sind BCL lizenzierte Versionen, also Lizenzfrei):

Das Start-Skript für den Platform-Listener kopiert die neue Version des Listeners selbstThe start script for the platform listener copies the new version of the listener itself.

Note
titleHinweis

Ist der Platform-Listener auf den TEL Servern als Dienst installiert, reicht ein Neustart als Dienst NICHT aus. In diesen Fall sollte der Listener einmal von der Konsole aus gestartet werden, damit das Kopieren auch geschieht.

Aktualisierung der WEB Server

Der JBOSS Server wird komplett ersetzt durch ein Wildfly Server.

Hazelcast Konfiguration sichern

Falls keine Sicherung bereits vorhanden:

Note

If the platform listener is installed as a service on the TEL servers, a restart as a service is NOT sufficient. In this case, the listener should be started once from the console so that the copying can be done.

Updating the WEB servers

The JBOSS server is completely replaced by a Wildfly server.

Backup Hazelcast configuration

If no backup already exists:

Translations Ignore


Code Block
cp /home/jtel/jboss-as-7.1.1.FINAL/standalone/configuration/hazelcast.xml /home/jtel/shared



Uninstalling JBOSS Server

und

and Java 7

Deinstallieren

Als As root:

Translations Ignore


Code Block
service jboss stop
yum -y remove jdk.x86_64
cd /home/jtel
chkconfig jboss off
rm -f /etc/init.d/jboss
rm -f /etc/cron.daily/jboss-logmaint.sh
rm -f /etc/cron.daily/jboss-restart.sh
rm -f /usr/local/bin/updatejb.sh
rm -Rf jboss-as-7.1.1.FINAL



Install Java 8

und Wildfly Installieren

and Wildfly

Translations Ignore


Code Block
yum -y install https://cdn.jtel.de/downloads/java/jdk-8u202-linux-x64.rpm
wget http://cdn.jtel.de/downloads/jboss/wildfly-18.0.1.Final.
01
05.tar.gz
tar xzf wildfly-18.0.1.Final.
01
05.tar.gz
rm -f wildfly-18.0.1.Final.
01
05.tar.gz
mkdir -p wildfly-18.0.1.Final/standalone/deployments
chown -R jtel:jtel wildfly-18.0.1.Final
mkdir -p /home/jtel/upload
chown -R jtel:jtel /home/jtel/upload
ln -s /home/jtel/wildfly-18.0.1.Final wildfly-current
ln -s
cp /home/jtel/wildfly-current/init.d/wildfly /etc/init.d/wildfly
ln -s /home/jtel/wildfly-current/default/wildfly /etc/default/wildfly
cd /etc/cron.daily
ln -s /home/jtel/wildfly-current/bin/jboss-logmaint.sh
ln -s /home/jtel/wildfly-current/bin/jboss-restart.sh
cd /usr/local/bin
ln -s /home/jtel/wildfly-current/bin/updatejb.sh
chkconfig wildfly on



Configure Wildfly

konfigurieren

Die The hazelcast.xml muss kopiert werden, und die Standardeinstellungen für die Datenbank müssen angepasst werden.Im folgenden <password> bitte entsprechend ersetzen:must be copied and the default settings for the database must be adjusted.

In the following replace <password> please accordingly:

Translations Ignore


Code Block
DBPRI=acd-dbm
DBSTA=acd-dbs
DBREP=acd-dbr
DBPWD=<password>
sed -i -e "s/DATA_PRIMARY/${DBPRI}/g" -e "s/DATA_STATS/${DBSTA}/g" -e "s/DATA_REPORTS/${DBREP}/g" -e "s/DB_PASSWORD/${DBPWD}/g" /home/jtel/wildfly-current/standalone/configuration/standalone.xml
unset DBPWD
unset DBREP
unset DBSTA
unset DBPRI
cp /home/jtel/shared/hazelcast.xml /home/jtel/wildfly-current/standalone/configuration/

Aktualisierung der Portalsoftware

Die Aktualisierung der Portalsoftware muss als Benutzer "root" auf dem Webserver ausgeführt werden und erfolgt durch Eingabe folgendem Befehls:




Updating the portal software

The update of the portal software must be executed as user "root" on the web server and is done by entering the following command:

Aktualisierung des
Translations Ignore


Code Block
languagebash
title
Update of the Jboss
updatejb.sh



Dieser Befehl aktualisiert die Portalsoftware und startet den wildfly Server. Der Erfolg kann durch Sichtung der Datei This command updates the portal software and starts the wildfly server. The success can be checked by viewing the file /home/jtel/wildfly-current/standalone/log/server.log geprüft werden.

 Dort sollten in der Log-Datei folgende Einträge zu sehen sein, wenn die Aktualisierung erfolgreich war:

Image Removed

Aktualisierung des 8Servers

Die Aktualisierung des 8Server erfolgt im Windows-Explorer mittels GIT. Hierfür wird mit einem Rechtsklick auf das Verzeichnis C:\8Server\deploy ein GIT Pull durchgeführt, und auf das gewünschte Version nach dem Pull gewechselt.

Warning
titleNew Repository Locations

jtel hat seine Repository-Server umgezogen in die Cloud.

Siehe hier: New Repository Locations

Es ist nötig, die URL der GIT repositories zu verändern, bevor man hier weitermacht.

Möchte man nicht auf die letzte Version, sondern auf eine spezifische Version aktualisieren, erfolgt dies Über "git checkout" mit Angabe des Releases.

Nach dem Aktualisieren, muss die Version dann installiert werden. Bei einem Daemon-Server erfolgt dies mit dem Befehl:

Code Block
titleDaemon Server aus der Befehlszeile aktualisieren
C:
cd \8Server\Install
copy_keyfile_en_daemon.cmd

Bei einem Telefonie-Server mit Aculab Media Service erfolgt dies mit folgendem Befehl:

Code Block
titleTelefonie Server aus der Befehlszeile aktualisieren
C:
cd \8Server\Install
copy_keyfile_en_mcp.cmd

Im Anschluss kann der 8Server gestartet werden.

Aktualisierung der Konnektoren

Grundsätzlich gilt: die entsprechenden Dateien aus dem Software-Verzeichnis im STORE müssen ins Zielverzeichnis kopiert werden.

Diese kommen in der Regel aus dem Bereich JTELCarrierPortal/WebServices/Install

Warning
titleACHTUNG

Bei Kopieraktionen ist unbedingt darauf zu achten, die Konfigurationsdateien nicht zu überschreiben!

Diese haben Namen, die sich an den Namen des ausführbaren Programm häufig anlehnen.

Beispiel: JTELInnovaphonePBXService.exe.config ist der Name der Konfigurationsdatei vom Innovaphone Connector.

Abschließende Arbeiten

Ist die Aktualisierung beendet und die Anlage ohne Fehler wieder hochgefahren, sind folgende Aufgaben zwingend auszuführen:

  • Anmelden ans Portal. Kurzer Test um zu sehen, dass auch Agenten und Supervisoren zu sehen bekommen, was sie erwarten.
  • Testanruf! Idealerweise gibt es eine Testnummer. Falls nicht, eine der regulären Servicerufnummern anrufen. Prüfen, dass der 8Server korrekt antwortet.
    • Testanruf mit beobachtung des Portals.
      Als User anmelden, und schauen ob ein Anruf im Portal korrekt angezeigt wird, wenn es dem Agenten zugestellt wird.

 

Info
titleSicherungen

Auf VMWare sowie Hyper-V können Snapshots zu Performance-Verlusten führen.

Die Snapshots sollten gelöscht werden, aber erst dann, wenn sichergestellt ist, dass es kein Zurück mehr geben muss. Dies ist in der Regel nach der ein Wenig Live-Zeit des Call-Centers der Fall.

 There you should see the following entries in the log file if the update was successful:

Image Added

Updating Client Messenger

If Chat Server is installed.

For  jtel portal versions >= 3.25, make sure to edit systemd and/or init.d:

If you are using init.d:

Code Block
languagebash
titlejtel-clientmessenger
vi /home/jtel/ClientMessenger/init.d/jtel-clientmessenger

# make sure this line exists
-Djava.net.preferIPv4Stack=true \

# make sure this line contains \&serverTimezone=Europe/Berlin
-Dde.jtel.platform.clientmessenger.connection=jdbc:mysql://acd-dbm/JTELWeb?user=root\&password=<password>\&characterEncoding=utf8\&serverTimezone=Europe/Berlin \

# copy to etc
cp /home/jtel/ClientMessenger/init.d/jtel-clientmessenger /etc/init.d/
chmod 755 /etc/init.d/jtel-clientmessenger 

If you are using systemd:

Code Block
languagebash
titlejtel-clientmessenger.service
vi /home/jtel/ClientMessenger/systemd/jtel-clientmessenger.service  

# make sure this line exists
-Djava.net.preferIPv4Stack=true \

# make sure this line contains &serverTimezone=Europe/Berlin
-Dde.jtel.platform.clientmessenger.connection=jdbc:mysql://acd-dbm/JTELWeb?user=root&password=<Password>&characterEncoding=utf8&serverTimezone=Europe/Berlin \

# copy to systemd
cp /home/jtel/ClientMessenger/systemd/jtel-clientmessenger.service /etc/systemd/system/jtel-clientmessenger.service
systemctl daemon-reload

Then update:

Code Block
languagebash
titleUpdate of the Clientmessenger
updatesc.sh

Update of the 8Server

The 8Server is updated in Windows Explorer using GIT. To do this, right-click on the directory C:\8Server\deploy to perform a GIT pull and switch to the desired version after the pull.

Warning
titleNew Repository Locations

jtel has moved its repository servers to the cloud.

See here: New Repository Locations

It is necessary to change the URL of the GIT repositories before continuing here.

If you do not want to update to the last version, but to a specific version, you can do this via "git checkout", by indicating the release.

After updating, the version must then be installed. For a daemon server, this is done with the command:

Translations Ignore


Code Block
titleUpdate daemon server from the command line
C:
cd \8Server\Install
copy_keyfile_en_daemon.cmd



For a telephony server with Aculab Media Service, this is done with the following command:

Translations Ignore


Code Block
titleUpdate telephony server from the command line
C:
cd \8Server\Install
copy_keyfile_en_mcp.cmd



Afterwards the 8Server can be started.

Updating the connectors

Basically: the corresponding files from the software directory in the STORE must be copied into the target directory.

These usually come from JTELCarrierPortal/WebServices/Install

Warning
titleWarning

During copy actions it is absolutely necessary to take care not to overwrite the configuration files!

These have names that are often based on the name of the executable program.

Example: JTELInnovaphonePBXService.exe.config is the name of the Innovaphone Connector configuration file.

Final work

Once the update has been completed and the system restarted without errors, the following tasks must be performed:

  • Login to the portal. Short test to see that agents and supervisors also get to see what they expect.
  • Test call! Ideally there is a test number. If not, call one of the regular service numbers. Check that the 8Server answers correctly.
    • Test call with observation of the portal.
      Log in as a user, and see if a call is displayed correctly in the portal when it is delivered to the agent.


Info
titleBackups

On VMWare and Hyper-V, snapshots can lead to performance losses.

The snapshots should be deleted, but only when it is certain that there is no need to go back. This is usually after a little live time from the call center.



Auf TEL Servern alle Anwendungen stoppen

  • start_launcher.cmd
  • startlistener.bat
  • TK Connector
    • Kann ggf. als Dienst laufen - siehe "Dienste" oder "Services"
  • 8Server durch die GUI oder mit folgender Kommando beenden:

    taskkill /im robot5.exe

    Alle Webserver, die JBOSS Server stoppen:

    service jboss stop

    Alle DB Master:

    service jtel-listener stop

    Alle Chat Server:

    service jtel-clientlistener stop

    Datenbank sichern (auf DB Master)

    Das entsprechende Passwort bei <password> eintragen:

    Sv translation
    languagede

    Table of Contents
    maxLevel3
    printablefalse

    Voraussetzung

    Das System muss vorher auf eine Version mit MySQL 8.x geupdatet werden (Release 3.15 bis 3.17).

    Vorbereitung für die Aktualisierung

    Bei jeder Aktualisierung gibt es eine goldene Regel, die unabhängig von den Wünschen des Kunden strikt befolgt werden muss:

    Tip
    titleGoldene Regel Nr. 1

    Es muss IMMER einen Weg zurück geben.


    Tip
    titleGoldene Regel Nr. 2

    Bevor man ein System aktualisiert, sollte man es gut kennen.

    Authoritative Share Bestimmen

    Bei manchen Installationen, ist das File-Share auf ein System, der vom Kunden bereitgestellt wird.

    In diesen Fall erfolgt das Checkout der Repositories lokal auf den Load-Balancer auf den Non-Authoritative Share, die Dateien werden aber später auf den "Authoritative" File-Share kopiert.

    Nach Änderungen sollte auf den Authoritative File-Share geprüft werden.

    Authoritative File-Share

    Dieser ist /home/jtel/shared

    Non-Authoritative File-Share

    Dieser ist /srv/jtel/shared

    Bestimmen ob Authoritative

    Wenn /home/jtel/shared auf den Load-Balancer von einem Fremdsystem gemountet ist, dann ist es in der Regel nicht authoritative.

    Dies kann man einfach bestimmen, indem man eine Datei auf /srv/jtel/shared erzeugt. Erscheint dies nicht in /home/jtel/shared, so ist /srv/jtel/shared nicht authoritative.

    Datensicherung

    Es sollte unbedingt eine Datensicherung angefertigt werden. Das MINIMUM ist dass die Datenbank gesichert wird, und das Datenverzeichnis gesichert wird, dies sollte jedoch nur die Notlösung sein.

    Besser ist ein Snapshot aller beteiligten virtuellen Maschinen, im Kaltzustand (heruntergefahren).

    Die Gefahr besteht, dass wenn ein Snapshot im laufenden Betrieb gezogen wird (insbesondere der Datenbankmaschinen), dass dieser nicht konsistent ist.

    Manuelle Sicherung

    Dienste Stoppen

    Tip
    titleAlle Dienste des jtel-Systems stoppen

    Auf TEL Servern alle Anwendungen stoppen

    • start_launcher.cmd
    • startlistener.bat
    • TK Connector
      • Kann ggf. als Dienst laufen - siehe "Dienste" oder "Services"
    • 8Server durch die GUI oder mit folgender Kommando beenden:

      Translations Ignore


      Code Block
      taskkill /im robot5.exe



    Alle Webserver, die JBOSS Server stoppen:

    Translations Ignore


    Code Block
    service jboss stop


    Alle DB Master:

    Translations Ignore


    Code Block
    service jtel-listener stop


    Alle Chat Server:


    Translations Ignore


    Code Block
    service jtel-clientlistener stop



    Datenbank sichern (auf DB Master)

    Das entsprechende Passwort bei <password> eintragen:

    Translations Ignore


    Code Block
    languagebash
    titleBackup of the database from the primary DATA
    su jtel
    cd
    mkdir -p /home/jtel/shared/Backup
    mysqldump -u root -p<password> --add-drop-database --add-drop-table --events --routines --triggers --databases JTELWeb JTELStats JTELStats2 JTELLog | gzip > /home/jtel/shared/Backup/backup-$(hostname -s)-database-$(date +%F-%H%M%S).sql.gz



    Data Verzeichnis sichern

    Dies kann über den Windows Explorer oder ein entsprechender cp Befehl auf den Linux erfolgen.

    GIT Status merken (Authoritative Share)

    Vom Load-Balancer aus, den GIT Status prüfen:

    Translations Ignore


    Code Block
    languagebash
    titleNote GIT status
    cd /home/jtel/shared/JTEL
    git status
    git rev-parse HEAD
    (ausgaben sichern)
     
    cd /home/jtel/shared/JTELCarrierPortal
    git status
    git rev-parse HEAD
    (ausgaben sichern)
     
    # IF A custom directory exists
     
    cd /home/jtel/shared/Customer_Directory
    git status
    git rev-parse HEAD
    (ausgaben sichern)




    Ggf. müssen hier die Verzeichnisse ebenso in die Datensicherung mit aufgenommen werden, insbesondere dann, wenn Patches eingespielt wurden, sodass lokale Änderungen erfolgt sind.

    Weitere Komponenten sichern

    Sind weitere Komponenten vom Update betroffen, wie der 8-Server selbst, oder der JBOSS Server (nicht die Webanwendung), sollten diese Komponenten vorab auch gesichert werden.

    Snapshot Sicherung

    Dies erfolgt über die VMWare Konsole, oder Hyper-V Konsole. Dies wird üblicherweise durch den Kunden durchgeführt.

    Bestätigung

    Warning
    titleDatensicherung

    Erst wenn die Datensicherung erfolgt ist (ggf. vom Kunden bestätigen lassen!), weitermachen!

    Rücksicherung

    Snapshots

    Die Snapshots werden alle wieder aktiviert, und hochgefahren. Es sollte ein normaler Betrieb mit den alten Software-Stand herrschen.

    Manuelle Rücksicherung

    Mit allen Diensten gestopped, die Datenbank zurücksichern. Das entsprechende Passwort bei <password> eintragen:

    Translations Ignore


    Code Block
    languagebash
    titleCopy and unzip the dump
    cp /home/jtel/shared/Backup/backup-acd-dbm-database-2016-06-30-293211.sql.gz .
    gunzip backup-acd-dbm-database-2016-06-30-293211.sql.gz
    mysql -u root -p<password> -e"backup-acd-dbm-database-2016-06-30-293211.sql"



    Parallel dazu, kann das alte Data Verzeichnis zurückgespielt werden.

    Ggf. sind weitere Schritte erforderlich (GIT Repositories zurücksichern, 8-Server zurücksichern, ...) je nach dem welche Komponenten beim Update betroffen waren.

    Info
    titleTipp

    Mach lieber ein Snapshot.

    Die Aktualisierung des Systems

    Es sei hier noch mal erwähnt: alle jtel-Dienste des Systems müssen herunter gefahren sein. 

    Danach kann mit der Aktualisierung begonnen werden. Die Schritte erfolgen in der hier dokumentierten Reihenfolge

    Aktualisierung der Software auf dem STORE

    Dieser Schritt muss als Benutzer "jtel" erfolgen.

    Warning
    titleNew Repository Locations

    jtel hat seine Repository-Server umgezogen in die Cloud.

    Siehe hier: New Repository Locations

    Es ist nötig, die URL der GIT repositories zu verändern, bevor man hier weitermacht.

    Prüfung ob Änderungen / Patches vorhanden sind

    Bevor die Software aktualisiert wird, sollte noch geprüft werden, ob im jeweiligen Verzeichnis Dateien geändert wurden.

    Info
    titleTipp

    Es sollte in /home/jtel/shared eine readme.txt vorhanden sein, der eventuell eingespielte Patches auflistet.


    Hier ein Beispiel basierend auf das Software-Verzeichnis JTELCarrierPortal:

    Translations Ignore


    Code Block
    languagebash
    titleCheck for changes
    su jtel
    Sv translation
    languagede

    Table of Contents
    maxLevel3
    printablefalse

    Voraussetzung

    Das System muss vorher auf eine Version mit MySQL 8.x geupdatet werden (Release 3.15 bis 3.17).

    Vorbereitung für die Aktualisierung

    Bei jeder Aktualisierung gibt es eine goldene Regel, die unabhängig von den Wünschen des Kunden strikt befolgt werden muss:

    Tip
    titleGoldene Regel Nr. 1

    Es muss IMMER einen Weg zurück geben.

    Tip
    titleGoldene Regel Nr. 2

    Bevor man ein System aktualisiert, sollte man es gut kennen.

    Authoritative Share Bestimmen

    Bei manchen Installationen, ist das File-Share auf ein System, der vom Kunden bereitgestellt wird.

    In diesen Fall erfolgt das Checkout der Repositories lokal auf den Load-Balancer auf den Non-Authoritative Share, die Dateien werden aber später auf den "Authoritative" File-Share kopiert.

    Nach Änderungen sollte auf den Authoritative File-Share geprüft werden.

    Authoritative File-Share

    Dieser ist /home/jtel/shared

    Non-Authoritative File-Share

    Dieser ist /srv/jtel/shared

    Bestimmen ob Authoritative

    Wenn /home/jtel/shared auf den Load-Balancer von einem Fremdsystem gemountet ist, dann ist es in der Regel nicht authoritative.

    Dies kann man einfach bestimmen, indem man eine Datei auf /srv/jtel/shared erzeugt. Erscheint dies nicht in /home/jtel/shared, so ist /srv/jtel/shared nicht authoritative.

    Datensicherung

    Es sollte unbedingt eine Datensicherung angefertigt werden. Das MINIMUM ist dass die Datenbank gesichert wird, und das Datenverzeichnis gesichert wird, dies sollte jedoch nur die Notlösung sein.

    Besser ist ein Snapshot aller beteiligten virtuellen Maschinen, im Kaltzustand (heruntergefahren).

    Die Gefahr besteht, dass wenn ein Snapshot im laufenden Betrieb gezogen wird (insbesondere der Datenbankmaschinen), dass dieser nicht konsistent ist.

    Manuelle Sicherung

    Dienste Stoppen

    Tip
    titleAlle Dienste des jtel-Systems stoppen
    Code Block
    languagebash
    titleSicherung der Datenbank vom primären DATA aus
    su jtel
    cd
    mkdir -p /home/jtel/shared/Backup
    mysqldump -u root -p<password> --add-drop-database --add-drop-table --events --routines --triggers --databases JTELWeb JTELStats JTELStats2 JTELLog | gzip > /home/jtel/shared/Backup/backup-$(hostname -s)-database-$(date +%F-%H%M%S).sql.gz

    Data Verzeichnis sichern

    Dies kann über den Windows Explorer oder ein entsprechender cp Befehl auf den Linux erfolgen.

    GIT Status merken (Authoritative Share)

    Vom Load-Balancer aus, den GIT Status prüfen:

    Code Block
    languagebash
    titleGIT Status Merken
    cd /home/jtel/shared/JTEL git status git rev-parse HEAD (ausgaben sichern)  
    
    cd /home/jtel/shared/JTELCarrierPortal
    git status
    git rev-parse HEAD
    
    (ausgaben sichern)   # FALLS EIN Kundenspezifischer Verzeichnis vorhanden ist  
    exit



    Wird hier angezeigt, dass Dateien verändert wurden, ist Vorsicht geboten. Der Projektingenieur muss vorher prüfen, ob die Änderungen lokale Bugfixe sind, die inzwischen ins Release eingeflossen sind. In diesem Falle können die Änderungen vor der Aktualisierung gelöscht werden. Tut man dies nicht, so kann die Aktualisierung scheitern!

    Translations Ignore


    Code Block
    languagebash
    titleUndo changes
    su jtel
    cd /home/jtel/shared/
    Customer_Directory
    JTELCarrierPortal
    git 
    status git
    checkout 
    rev
    --
    parse
     
    HEAD (ausgaben sichern)

    Ggf. müssen hier die Verzeichnisse ebenso in die Datensicherung mit aufgenommen werden, insbesondere dann, wenn Patches eingespielt wurden, sodass lokale Änderungen erfolgt sind.

    Weitere Komponenten sichern

    Sind weitere Komponenten vom Update betroffen, wie der 8-Server selbst, oder der JBOSS Server (nicht die Webanwendung), sollten diese Komponenten vorab auch gesichert werden.

    Snapshot Sicherung

    Dies erfolgt über die VMWare Konsole, oder Hyper-V Konsole. Dies wird üblicherweise durch den Kunden durchgeführt.

    Bestätigung

    Warning
    titleDatensicherung

    Erst wenn die Datensicherung erfolgt ist (ggf. vom Kunden bestätigen lassen!), weitermachen!

    Rücksicherung

    Snapshots

    Die Snapshots werden alle wieder aktiviert, und hochgefahren. Es sollte ein normaler Betrieb mit den alten Software-Stand herrschen.

    Manuelle Rücksicherung

    Mit allen Diensten gestopped, die Datenbank zurücksichern. Das entsprechende Passwort bei <password> eintragen:
    .
    exit



    Eine allgemeine Vorgehensweise kann in einem solchen Fall aber nicht beschrieben werden. Hier muss von Fall zu Fall geprüft werden, wie vorgegangen wird.

    Falls Datei-Modus Änderungen ignoriert werden sollen, kann folgender Befehl genutzt werden:

    Translations Ignore


    Code Block
    languagebash
    titleGIT File Mode
    git config core.fileMode false



    Aktualisierung der Repositories (Immer auf Non-Authoritative Share)

    Die folgende Befehlssequenz aktualisiert alle Software-Verzeichnisse auf dem letzten Stand des jeweilig eingestellten Releases.

    Translations Ignore


    Code Block
    languagebash
    titleUpdate the software directories
    su jtel
    cd /srv/jtel/shared/JTELCarrierPortal
    git pull
    cd /srv/jtel/shared/JTEL
    git pull
    cd /srv/jtel/shared/Customer_Directory
    git pull
    exit



    Falls Fehler beim GIT auftreten, beispielsweise:

    Merge-Konflikt in (Dateiname)

    Oder

    fatal: Verweigere den Merge von nicht zusammenhängenden Historien.

    muss das lokale Repository resettet werden. Dies kann wie folgt (Beispiel für stable-3.18 auf JTELCarrierPortal) geschehen:

    Translations Ignore


    Code Block
    languagebash
    title
    Kopieren und Entpacken des Dumps
    Update the software directories - reset the local repository
    su jtel
    cd /srv
    cp /home
    /jtel/shared/
    Backup/backup-acd-dbm-database-2016-06-30-293211.sql.gz . gunzip backup-acd-dbm-database-2016-06-30-293211.sql.gz mysql -u root -p<password> -e"backup-acd-dbm-database-2016-06-30-293211.sql"

    Parallel dazu, kann das alte Data Verzeichnis zurückgespielt werden.

    Ggf. sind weitere Schritte erforderlich (GIT Repositories zurücksichern, 8-Server zurücksichern, ...) je nach dem welche Komponenten beim Update betroffen waren.

    Info
    titleTipp

    Mach lieber ein Snapshot.

    Die Aktualisierung des Systems

    Es sei hier noch mal erwähnt: alle jtel-Dienste des Systems müssen herunter gefahren sein. 

    Danach kann mit der Aktualisierung begonnen werden. Die Schritte erfolgen in der hier dokumentierten Reihenfolge

    Aktualisierung der Software auf dem STORE

    Dieser Schritt muss als Benutzer "jtel" erfolgen.

    Warning
    titleNew Repository Locations

    jtel hat seine Repository-Server umgezogen in die Cloud.

    Siehe hier: New Repository Locations

    Es ist nötig, die URL der GIT repositories zu verändern, bevor man hier weitermacht.

    Prüfung ob Änderungen / Patches vorhanden sind

    Bevor die Software aktualisiert wird, sollte noch geprüft werden, ob im jeweiligen Verzeichnis Dateien geändert wurden.

    Info
    titleTipp

    Es sollte in /home/jtel/shared eine readme.txt vorhanden sein, der eventuell eingespielte Patches auflistet.

    Hier ein Beispiel basierend auf das Software-Verzeichnis JTELCarrierPortal:
    JTELCarrierPortal
    git reset --hard origin/release/stable-3.18



    Auschecken des gewünschten Releases

    Nachdem der GIT PULL erfolgt ist, muss das entsprechende Release ausgechecked werden, falls ein anderer als mit git status gewünscht ist.

    Translations Ignore


    Code Block
    languagebash
    titleUpdate the software directories
    su jtel
    cd /srv/jtel/shared/JTELCarrierPortal
    git checkout release/stable-3.18
    cd /srv/jtel/shared/JTEL
    git checkout release/stable-3.18
    cd /srv/jtel/shared/Customer_Directory
    git checkout release/stable-3.18
    exit




    Note
    titleFix Shallow Clones

    Es kann sein, dass git den gewünschten Release nicht kennt, trotz git pull und git checkout.
    In diesen Fall liegt ein sogenannter "shallow clone" des Repositories vor, der nicht alle Branches beinhaltet.
    Dies kann mit folgende Befehle verändert werden:


    git fetch --unshallow
    git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
    git fetch origin

    Dateien auf Authoritative Share kopieren

    Nur wenn es ein Authoritative / Non-Authoritative share gibt.

    Dies geschieht mit folgender Skript

    Translations Ignore


    su jtel
    Code Block
    languagebash
    title
    Prüfen auf Änderungen
    Complete update
    cd /
    home
    srv/jtel/shared/JTELCarrierPortal
    git status git rev-parse HEAD exit
    Wird hier angezeigt, dass Dateien verändert wurden, ist Vorsicht geboten. Der Projektingenieur muss vorher prüfen, ob die Änderungen lokale Bugfixe sind, die inzwischen ins Release eingeflossen sind. In diesem Falle können die Änderungen vor der Aktualisierung gelöscht werden. Tut man dies nicht, so kann die Aktualisierung scheitern!
    /
    bash update_fileshare.sh



    Aktualisierungsskripte laufen lassen

    Folgender Aktualisierungsskript führt alle notwendigen Änderungen durch. Dies wird als root oder jtel mit sudo ausgeführt. Hier mit jtel user:

    Translations Ignore


    su jtel
    Code Block
    languagebash
    title
    Zurücknehmen von Änderungen
    Complete update
    cd /home/jtel/shared/JTELCarrierPortal/Update
    
    git checkout -- . exit

    Eine allgemeine Vorgehensweise kann in einem solchen Fall aber nicht beschrieben werden. Hier muss von Fall zu Fall geprüft werden, wie vorgegangen wird.

    Falls Datei-Modus Änderungen ignoriert werden sollen, kann folgender Befehl genutzt werden:

    Code Block
    languagebash
    titleGIT File Mode
    git config core.fileMode false

    Aktualisierung der Repositories (Immer auf Non-Authoritative Share)

    Die folgende Befehlssequenz aktualisiert alle Software-Verzeichnisse auf dem letzten Stand des jeweilig eingestellten Releases.

    Code Block
    languagebash
    titleAktualisieren der Software-Verzeichnisse
    su jtel
    cd /srv/jtel/shared/JTELCarrierPortal
    git pull
    cd /srv/jtel/shared/JTEL
    git pull
    cd /srv/jtel/shared/Customer_Directory
    git pull
    exit

    Falls Fehler beim GIT auftreten, beispielsweise:

    Merge-Konflikt in (Dateiname)

    Oder

    fatal: Verweigere den Merge von nicht zusammenhängenden Historien.

    muss das lokale Repository resettet werden. Dies kann wie folgt (Beispiel für stable-3.18 auf JTELCarrierPortal) geschehen:

    Code Block
    languagebash
    titleAktualisieren der Software-Verzeichnisse - reset des lokalen Repositories
    su jtel
    cd /srv/jtel/shared/JTELCarrierPortal
    git reset --hard origin/release/stable-3.18

    Auschecken des gewünschten Releases

    Nachdem der GIT PULL erfolgt ist, muss das entsprechende Release ausgechecked werden, falls ein anderer als mit git status gewünscht ist.
    sudo ./update_release.sh




    Ggf. wird man zuerst nach den sudo Passwort gefragt. 

    Das Skript fragt nach den entsprechenden Master Datenbank, Benutzer, Passwort, und Name des Kundenverzeichnisses indem ggf. spezifische Software für den Kunden liegt.

    Die Fragen können, in der Regel mit folgende Antworten beantwortet werden, Kenntnis von <password> für die Datenbank vorausgesetzt:

    • mysql host address: acd-dbm
    • mysql user name: root
    • mysql password: <password>
    • customer directory:

    Falls kein Customer Directory vorhanden ist, kann dies leer gelassen werden. Das Vorhandensein von Kundenspezifische Software kann mit ls /home/jtel/shared geprüft werden - dort die Namen der Verzeichnisse anschauen. Nur den Namen des Verzeichnisses angeben! Beispielsweise acme

    Anschließend wird das Update durchgeführt.

    Warning
    titleWichtiger Hinweis

    In einer Master/Slave Umgebung ist unbedingt darauf zu achten, diese Prozedur gegen der Master-Datenbank durchzuführen - sprich mysql host address = MASTER-DB. Tut man dies aus Versehen auf einem Slave, hat man Chaos gesät: der Slave ist dann kaputt, und muss neu aufgesetzt werden. Die Aktualisierung muss dann (korrekt auf dem Master) wiederholt werden.

    Binaries Herunterladen

    Die Binaries werden mit folgenden Befehl heruntergeladen:

    Es kann sein, dass git den gewünschten Release nicht kennt, trotz git pull und git checkout.
    In diesen Fall liegt ein sogenannter "shallow clone" des Repositories vor, der nicht alle Branches beinhaltet.
    Dies kann mit folgende Befehle verändert werden:

    git fetch --unshallow
    git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
    git fetch origin
    Translations Ignore


    su jtel cd /srv/jtel/shared/JTELCarrierPortal git checkout release/stable-3.18 cd /srv/jtel/shared/JTEL git checkout release/stable-3.18
    Code Block
    languagebash
    title
    Aktualisieren der Software-Verzeichnisse
    Get binaries
    cd /
    srv
    home/jtel/shared/JTELCarrierPortal/
    Customer_Directory
    Update
    
    git
    su 
    checkout release/stable-3.18 exit
    Note
    titleFix Shallow Clones

    Dateien auf Authoritative Share kopieren

    Nur wenn es ein Authoritative / Non-Authoritative share gibt.

    Dies geschieht mit folgender Skript

    Code Block
    languagebash
    titleKomplettaktualisierung
    cd /srv/jtel/shared/JTELCarrierPortal/
    bash update_fileshare.sh

    Aktualisierungsskripte laufen lassen

    Folgender Aktualisierungsskript führt alle notwendigen Änderungen durch. Dies wird als root oder jtel mit sudo ausgeführt. Hier mit jtel user:
    jtel
    bash get_binaries.sh




    Aktualisierung des Platform UDP Listeners

    Master Datenbanken

    Bei Release 3.18 und höher, wird Java 8 verwendet. Das (vorhandene) Java 7 muss deinstalliert werden, und Java 8 wird installiert.

    Wir verwenden den openjdk, sodass es unter Linux Updatefähig bleibt.

    Translations Ignore


    Code Block
    service jtel-listener stop
    yum -y remove jdk.x86_64
    yum -y install https://cdn.jtel.de/downloads/java/jdk-8u202-linux-x64.rpm



    Die Aktualisierung des Platform UDP Listeners muss als Benutzer "root" ausgeführt werden und erfolgt auf die Master Datenbanken durch Eingabe folgendem Befehls:

    cd
    Translations Ignore


    Code Block
    languagebash
    title
    Komplettaktualisierung
    Platform UDP Listener updated
    updatepl.sh



    Dieser Befehl aktualisiert den Listener und startet ihn. Der Erfolg kann durch Sichtung der Datei /home/jtel/

    shared

    PlatformUDPlistener/

    JTELCarrierPortal/Update sudo ./update_release.sh

    log/listener.log geprüft werden.

    Info
    titleTipp

    Der Listener ist nur auf die Master-Datenbanken dann installiert, wenn eine SOAP Schnittstelle lizenziert ist.

    Telefonieservern

    Hier ist zu prüfen ob Java 8 installiert ist. Ggf. Java 8 von einer der Quellen hier herunterladen (dies sind BCL lizenzierte Versionen, also Lizenzfrei):

    Das Start-Skript für den Platform-Listener kopiert die neue Version des Listeners selbst.

    Note
    titleHinweis

    Ist der Platform-Listener auf den TEL Servern als Dienst installiert, reicht ein Neustart als Dienst NICHT aus. In diesen Fall sollte der Listener einmal von der Konsole aus gestartet werden, damit das Kopieren auch geschieht.

    Aktualisierung der WEB Server

    Der JBOSS Server wird komplett ersetzt durch ein Wildfly Server.

    Hazelcast Konfiguration sichern

    Falls keine Sicherung bereits vorhanden:

    Translations Ignore


    Code Block
    cp /home/jtel/jboss-as-7.1.1.FINAL/standalone/configuration/hazelcast.xml /home/jtel/shared



    JBOSS Server und Java 7 Deinstallieren

    Als root:

    Translations Ignore


    Code Block
    service jboss stop
    yum -y remove jdk.x86_64
    cd /home/jtel
    chkconfig jboss off
    rm -f /etc/init.d/jboss
    rm -f /etc/cron.daily/jboss-logmaint.sh
    rm -f /etc/cron.daily/jboss-restart.sh
    rm -f /usr/local/bin/updatejb.sh
    rm -Rf jboss-as-7.1.1.FINAL



    Java 8 und Wildfly Installieren

    Translations Ignore


    Ggf. wird man zuerst nach den sudo Passwort gefragt. 

    Das Skript fragt nach den entsprechenden Master Datenbank, Benutzer, Passwort, und Name des Kundenverzeichnisses indem ggf. spezifische Software für den Kunden liegt.

    Die Fragen können, in der Regel mit folgende Antworten beantwortet werden, Kenntnis von <password> für die Datenbank vorausgesetzt:

    • mysql host address: acd-dbm
    • mysql user name: root
    • mysql password: <password>
    • customer directory:

    Falls kein Customer Directory vorhanden ist, kann dies leer gelassen werden. Das Vorhandensein von Kundenspezifische Software kann mit ls /home/jtel/shared geprüft werden - dort die Namen der Verzeichnisse anschauen. Nur den Namen des Verzeichnisses angeben! Beispielsweise acme

    Anschließend wird das Update durchgeführt.

    Warning
    titleWichtiger Hinweis

    In einer Master/Slave Umgebung ist unbedingt darauf zu achten, diese Prozedur gegen der Master-Datenbank durchzuführen - sprich mysql host address = MASTER-DB. Tut man dies aus Versehen auf einem Slave, hat man Chaos gesät: der Slave ist dann kaputt, und muss neu aufgesetzt werden. Die Aktualisierung muss dann (korrekt auf dem Master) wiederholt werden.

    Binaries Herunterladen

    Die Binaries werden mit folgenden Befehl heruntergeladen:

    Code Block
    languagebash
    titleGet binaries
    cd /home/jtel/shared/JTELCarrierPortal/Update
    su jtel
    bash get_binaries.sh

    Aktualisierung des Platform UDP Listeners

    Master Datenbanken

    Bei Release 3.18 und höher, wird Java 8 verwendet. Das (vorhandene) Java 7 muss deinstalliert werden, und Java 8 wird installiert.

    Wir verwenden den openjdk, sodass es unter Linux Updatefähig bleibt.

    Code Block
    service jtel-listener stop yum -y remove jdk.x86_64
    Code Block
    yum -y install https://cdn.jtel.de/downloads/java/jdk
    -8u202-linux-x64.rpm

    Die Aktualisierung des Platform UDP Listeners muss als Benutzer "root" ausgeführt werden und erfolgt auf die Master Datenbanken durch Eingabe folgendem Befehls:

    Code Block
    languagebash
    titleAktualisierung des Platform UDP Listeners
    updatepl.sh

    Dieser Befehl aktualisiert den Listener und startet ihn. Der Erfolg kann durch Sichtung der Datei /home/jtel/PlatformUDPlistener/log/listener.log geprüft werden.

    Info
    titleTipp

    Der Listener ist nur auf die Master-Datenbanken dann installiert, wenn eine SOAP Schnittstelle lizenziert ist.

    Telefonieservern

    Hier ist zu prüfen ob Java 8 installiert ist. Ggf. Java 8 von einer der Quellen hier herunterladen (dies sind BCL lizenzierte Versionen, also Lizenzfrei):

    Das Start-Skript für den Platform-Listener kopiert die neue Version des Listeners selbst.

    Note
    titleHinweis

    Ist der Platform-Listener auf den TEL Servern als Dienst installiert, reicht ein Neustart als Dienst NICHT aus. In diesen Fall sollte der Listener einmal von der Konsole aus gestartet werden, damit das Kopieren auch geschieht.

    Aktualisierung der WEB Server

    Der JBOSS Server wird komplett ersetzt durch ein Wildfly Server.

    Hazelcast Konfiguration sichern

    Falls keine Sicherung bereits vorhanden:

    Code Block
    cp /home/jtel/jboss-as-7.1.1.FINAL/standalone/configuration/hazelcast.xml /home/jtel/shared

    JBOSS Server und Java 7 Deinstallieren

    Als root:

    Code Block
    service jboss stop
    yum -y remove jdk.x86_64
    cd /home/jtel
    chkconfig jboss off
    rm -f /etc/init.d/jboss
    rm -f /etc/cron.daily/jboss-logmaint.sh
    rm -f /etc/cron.daily/jboss-restart.sh
    rm -f /usr/local/bin/updatejb.sh
    rm -Rf jboss-as-7.1.1.FINAL

    Java 8 und Wildfly Installieren

    Code Block
    yum -y install https://cdn.jtel.de/downloads/java/jdk-8u202-linux-x64.rpm
    wget http://cdn.jtel.de/downloads/jboss/wildfly-18.0.1.Final.01.tar.gz
    tar xzf wildfly-18.0.1.Final.01.tar.gz
    rm -f wildfly-18.0.1.Final.01.tar.gz
    mkdir -p wildfly-18.0.1.Final/standalone/deployments
    chown -R jtel:jtel wildfly-18.0.1.Final
    mkdir -p /home/jtel/upload
    chown -R jtel:jtel /home/jtel/upload
    ln -s /home/jtel/wildfly-18.0.1.Final wildfly-current
    ln -s /home/jtel/wildfly-current/init.d/wildfly /etc/init.d/wildfly
    ln -s /home/jtel/wildfly-current/default/wildfly /etc/default/wildfly
    cd /etc/cron.daily
    ln -s /home/jtel/wildfly-current/bin/jboss-logmaint.sh
    ln -s /home/jtel/wildfly-current/bin/jboss-restart.sh
    cd /usr/local/bin
    ln -s /home/jtel/wildfly-current/bin/updatejb.sh
    chkconfig wildfly on

    Wildfly konfigurieren

    Die hazelcast.xml muss kopiert werden, und die Standardeinstellungen für die Datenbank müssen angepasst werden.

    Im folgenden <password> bitte entsprechend ersetzen:

    Code Block
    DBPRI=acd-dbm
    DBSTA=acd-dbs
    DBREP=acd-dbr
    DBPWD=<password>
    sed -i -e "s/DATA_PRIMARY/${DBPRI}/g" -e "s/DATA_STATS/${DBSTA}/g" -e "s/DATA_REPORTS/${DBREP}/g" -e "s/DB_PASSWORD/${DBPWD}/g" /home/jtel/wildfly-current/standalone/configuration/standalone.xml
    unset DBPWD
    unset DBREP
    unset DBSTA
    unset DBPRI
    cp /home/jtel/shared/hazelcast.xml /home/jtel/wildfly-current/standalone/configuration/

    Aktualisierung der Portalsoftware

    Die Aktualisierung der Portalsoftware muss als Benutzer "root" auf dem Webserver ausgeführt werden und erfolgt durch Eingabe folgendem Befehls:

    Code Block
    languagebash
    titleAktualisierung des Jboss
    updatejb.sh

    Dieser Befehl aktualisiert die Portalsoftware und startet den wildfly Server. Der Erfolg kann durch Sichtung der Datei /home/jtel/wildfly-current/standalone/log/server.log geprüft werden.

     Dort sollten in der Log-Datei folgende Einträge zu sehen sein, wenn die Aktualisierung erfolgreich war:

    -8u202-linux-x64.rpm
    wget http://cdn.jtel.de/downloads/jboss/wildfly-18.0.1.Final.02.tar.gz
    tar xzf wildfly-18.0.1.Final.02.tar.gz
    rm -f wildfly-18.0.1.Final.02.tar.gz
    mkdir -p wildfly-18.0.1.Final/standalone/deployments
    chown -R jtel:jtel wildfly-18.0.1.Final
    mkdir -p /home/jtel/upload
    chown -R jtel:jtel /home/jtel/upload
    ln -s /home/jtel/wildfly-18.0.1.Final wildfly-current
    ln -s /home/jtel/wildfly-current/init.d/wildfly /etc/init.d/wildfly
    ln -s /home/jtel/wildfly-current/default/wildfly /etc/default/wildfly
    cd /etc/cron.daily
    ln -s /home/jtel/wildfly-current/bin/jboss-logmaint.sh
    ln -s /home/jtel/wildfly-current/bin/jboss-restart.sh
    cd /usr/local/bin
    ln -s /home/jtel/wildfly-current/bin/updatejb.sh
    chkconfig wildfly on



    Wildfly konfigurieren

    Die hazelcast.xml muss kopiert werden, und die Standardeinstellungen für die Datenbank müssen angepasst werden.

    Im folgenden <password> bitte entsprechend ersetzen:

    Translations Ignore


    Code Block
    DBPRI=acd-dbm
    DBSTA=acd-dbs
    DBREP=acd-dbr
    DBPWD=<password>
    sed -i -e "s/DATA_PRIMARY/${DBPRI}/g" -e "s/DATA_STATS/${DBSTA}/g" -e "s/DATA_REPORTS/${DBREP}/g" -e "s/DB_PASSWORD/${DBPWD}/g" /home/jtel/wildfly-current/standalone/configuration/standalone.xml
    unset DBPWD
    unset DBREP
    unset DBSTA
    unset DBPRI
    cp /home/jtel/shared/hazelcast.xml /home/jtel/wildfly-current/standalone/configuration/




    Aktualisierung der Portalsoftware

    Die Aktualisierung der Portalsoftware muss als Benutzer "root" auf dem Webserver ausgeführt werden und erfolgt durch Eingabe folgendem Befehls:

    Translations Ignore


    Code Block
    languagebash
    titleUpdate of the Jboss
    updatejb.sh



    Dieser Befehl aktualisiert die Portalsoftware und startet den wildfly Server. Der Erfolg kann durch Sichtung der Datei /home/jtel/wildfly-current/standalone/log/server.log geprüft werden.

     Dort sollten in der Log-Datei folgende Einträge zu sehen sein, wenn die Aktualisierung erfolgreich war:

    Image Added

    Client Messenger aktualisieren

    wenn Chatserver installiert ist.

    Stellen Sie für jtel-Portalversionen >= 3.25 sicher, dass Sie systemd und/oder init.d bearbeiten:

    Wenn Sie init.d verwenden:

    Code Block
    languagebash
    titlejtel-clientmessenger
    vi /home/jtel/ClientMessenger/init.d/jtel-clientmessenger
    
    # make sure this line exists
    -Djava.net.preferIPv4Stack=true \
    
    # make sure this line contains \&serverTimezone=Europe/Berlin
    -Dde.jtel.platform.clientmessenger.connection=jdbc:mysql://acd-dbm/JTELWeb?user=root\&password=<password>\&characterEncoding=utf8\&serverTimezone=Europe/Berlin \
    
    # copy to etc
    cp /home/jtel/ClientMessenger/init.d/jtel-clientmessenger /etc/init.d/
    chmod 755 /etc/init.d/jtel-clientmessenger 

    Wenn Sie systemd verwenden:

    Code Block
    languagebash
    titlejtel-clientmessenger.service
    vi /home/jtel/ClientMessenger/systemd/jtel-clientmessenger.service  
    
    # make sure this line exists
    -Djava.net.preferIPv4Stack=true \
    
    # make sure this line contains &serverTimezone=Europe/Berlin
    -Dde.jtel.platform.clientmessenger.connection=jdbc:mysql://acd-dbm/JTELWeb?user=root&password=<Password>&characterEncoding=utf8&serverTimezone=Europe/Berlin \
    
    # copy to systemd
    cp /home/jtel/ClientMessenger/systemd/jtel-clientmessenger.service /etc/systemd/system/jtel-clientmessenger.service
    systemctl daemon-reload

    Dann aktualisieren:

    Code Block
    languagebash
    titleUpdate of the Clientmessenger
    updatesc.sh
    Image Removed


    Aktualisierung des 8Servers

    Die Aktualisierung des 8Server erfolgt im Windows-Explorer mittels GIT. Hierfür wird mit einem Rechtsklick auf das Verzeichnis C:\8Server\deploy ein GIT Pull durchgeführt, und auf das gewünschte Version nach dem Pull gewechselt.

    Warning
    titleNew Repository Locations

    jtel hat seine Repository-Server umgezogen in die Cloud.

    Siehe hier: New Repository Locations

    Es ist nötig, die URL der GIT repositories zu verändern, bevor man hier weitermacht.

    Möchte man nicht auf die letzte Version, sondern auf eine spezifische Version aktualisieren, erfolgt dies Über "git checkout" mit Angabe des Releases.

    Nach dem Aktualisieren, muss die Version dann installiert werden. Bei einem Daemon-Server erfolgt dies mit dem Befehl:

    Daemon Server aus der Befehlszeile aktualisieren
    Translations Ignore


    Code Block
    title
    Update daemon server from the command line
    C:
    cd \8Server\Install
    copy_keyfile_en_daemon.cmd



    Bei einem Telefonie-Server mit Aculab Media Service erfolgt dies mit folgendem Befehl:

    Telefonie Server aus der Befehlszeile aktualisieren
    Translations Ignore


    Code Block
    title
    Update telephony server from the command line
    C:
    cd \8Server\Install
    copy_keyfile_en_mcp.cmd



    Im Anschluss kann der 8Server gestartet werden.

    Aktualisierung der Konnektoren

    Grundsätzlich gilt: die entsprechenden Dateien aus dem Software-Verzeichnis im STORE müssen ins Zielverzeichnis kopiert werden.

    Diese kommen in der Regel aus dem Bereich JTELCarrierPortal/WebServices/Install

    Warning
    titleACHTUNG

    Bei Kopieraktionen ist unbedingt darauf zu achten, die Konfigurationsdateien nicht zu überschreiben!

    Diese haben Namen, die sich an den Namen des ausführbaren Programm häufig anlehnen.

    Beispiel: JTELInnovaphonePBXService.exe.config ist der Name der Konfigurationsdatei vom Innovaphone Connector.

    Abschließende Arbeiten

    Ist die Aktualisierung beendet und die Anlage ohne Fehler wieder hochgefahren, sind folgende Aufgaben zwingend auszuführen:

    • Anmelden ans Portal. Kurzer Test um zu sehen, dass auch Agenten und Supervisoren zu sehen bekommen, was sie erwarten.
    • Testanruf! Idealerweise gibt es eine Testnummer. Falls nicht, eine der regulären Servicerufnummern anrufen. Prüfen, dass der 8Server korrekt antwortet.
      • Testanruf mit beobachtung des Portals.
        Als User anmelden, und schauen ob ein Anruf im Portal korrekt angezeigt wird, wenn es dem Agenten zugestellt wird.


    Info
    titleSicherungen

    Auf VMWare sowie Hyper-V können Snapshots zu Performance-Verlusten führen.

    Die Snapshots sollten gelöscht werden, aber erst dann, wenn sichergestellt ist, dass es kein Zurück mehr geben muss. Dies ist in der Regel nach der ein Wenig Live-Zeit des Call-Centers der Fall.