Wiki

Clone wiki

deployment / ssh / InstallationSSHEtExecutionDuServeur

Installation sur la VM

Organisation cible

Le processus de déploiement structure les applications déployées de la manière suivante sur la VM.

  • 1 répertoire racine contient TOUTES les applications.
  • 1 répertoire par application
  • 1 répertoire par version
  • 1 lien virtuel pour la dernière version installée (latest).

Toutes les versions des applications sont gardées afin de faciliter les retours arrières et les analyses de logs.

Exemple de structuration sur la VM: - /applications - /monster-tickets - /monster-ticket-1.0 - /monster-ticket-2.3 - /latest (-> ./monster-ticket-2.3) - /myapp - /myapp-1.1 - /latest (-> ./myapp-1.1)

Le répertoire racine des applications est définit par le paramètre d'environnement ssh.directory.

Exemple:

ssh.directory=/applications

Par rapport aux propriétés maven, le déploiement est fait dans:

${ssh.directory}/${project.artifactId}/

Installation du serveur

Le serveur JBoss et ses applications sont téléchargées dans un zip unique dans le répertoire ssh.directory .

Ce fichier est accompagné du fichier install.sh qui sera exécuté pour installer le serveur à partir du zip.

Ces 2 fichiers sont uploadés su le serveur en : - install-${project.build.finalName}.sh pour le fichier install.sh - ${project.build.finalName}-run.zip pour le fichier zip.

Ces 2 fichiers sont alors dans: - /${ssh.directory} - /${project.artifactId} - /install-${project.build.finalName}.sh - ${project.build.finalName}-run.zip

Le fichier install.sh du projet de déploiement peut être modifié. Cependant, il est préférable de ne pas "casser" le principe de déploiement.

Exemple de fichier install.sh.

Exécution des instances

Quelque soit la nature du serveur JBoss à exécuter, celui-ci est contrôlé par 2 scripts:

  • start.sh
  • stop.sh

Ces scripts sont OBLIGATOIRES. Il sont gérés dans le projet dans le répertoire scr/run/.

Ces scripts peuvent utiliser des variables afin de paramétrer leur exécution en fonction des environnements.

Exemple de start avec les variables - jboss.offset: pour un décalage des ports - jboss.javaopts: pour la définition de la mémoire et des autres paramètres JVM

#!/bin/sh
export JBOSS_HOME=$(pwd)
export OFFSET=${jboss.offset}
export JAVA_OPTS="${jboss.javaopts}"

export JAVA_HOME=$JAVA8_HOME
export JAVA=$JAVA_HOME/bin/java

# start with an offset
$JBOSS_HOME/bin/standalone.sh -c standalone.xml -Djboss.socket.binding.port-offset=$OFFSET

Exemple de stop.sh avec les varaibles: - jboss.port.management: pour le port de gestion distant.

#!/bin/sh
JBOSS_HOME=$(pwd)
JBOSS_REMOTE_PORT=${jboss.port.management}

JBOSS_RUNNING=$(ps -ef | grep "Djboss.home.dir=$JBOSS_HOME" | grep -v grep | wc -l)

if [ $JBOSS_RUNNING -gt 0 ]; then
    echo "Stopping JBoss..."
    # stop without offset
    $JBOSS_HOME/bin/jboss-cli.sh --controller=localhost:$JBOSS_REMOTE_PORT --connect --command=:shutdown

    echo "JBoss stop."
else
    echo "JBoss in $JBOSS_HOME is still stopped."
fi

Updated