Présentation du nouvel Oracle Http Server 12c

J’ai eu l’occasion récemment d’installer Oracle Http Server dans sa version 12c et l’amélioration la plus notable, je dois dire, est l’abandon (à regret ?) du fameux outil de gestion et de lancement opmn qui a fait une longue carrière dans les différentes suites logicielles Oracle.

L’orientation prise par Oracle dans le domaine de fusion middleware est de s’appuyer sur les fonctionnalités déjà éprouvées faisant parti du produit Weblogic. Le démarrage et la gestion d’OHS sont donc dorénavant réalisés par le node manager, concept cher à Weblogic.
 
L’exemple d’implémentation d’OHS 12c sur linux Oracle 6 que je vais vous présenter correspond à l’architecture suivante : OHS est le serveur frontal d’un site internet porté par le serveur de page dynamique intégré dans la base de données Oracle depuis la version 8i, le codage est effectué en PL/SQL à partir de la librairie htp.
 
OHS_12c

 1) principe de fonctionnement

– le node manager est lancé
– le composant OHS est lancé et demande le démarrage au node manager. La communication avec le node manager s’effectue par le langage Jython à l’aide de l’outil WLST. En fait, les commandes Jython à passer au node manager sont encapsulées dans des scripts shell de sorte que pour un fonctionnement de base, l’investissement en temps de mise en oeuvre est insignifiant.
 

2) Installation

L’installation du produit est des plus simple par l’interface graphique, j’ai installé le binaire dans le répertoire

/u01/app/oracle/fmw

Il est possible d’installer OHS dans un environnement Fusion Middleware déjà existant, auquel cas il faut désigner l’emplacement du node manager déjà utilisé par Weblogic. J’ai choisi de l’installer comme composant autonome, dans ce cas un node manager sera installé dans le domaine créé spécialement pour contenir OHS

/u01/app/oracle/product/fmw/user_projects/domains/base_domain

 

3) Lancement de OHS et exécution de l’url de test servie par la base de données

OHS est lancé par un script shell contenu dans le domaine. Le paramètre passé en ligne de commande est l’instance OHS créée, en l’occurence ohs1 par défaut. Ce script shell contient des commandes en langage Jython qui vont être exécutées dans l’outil WLST pour se connecter au node manager et lui demander de lancer OHS.

/u01/app/oracle/product/fmw/user_projects/domains/base_domain/bin/startComponent.sh ohs1

L’arrêt est réalisé de la même manière par la commande stopComponent
 

4) Paramétrage du lancement automatique du node manager et d’OHS

J’ai réalisé le lancement du node manager et OHS par service, avec utilisation de la librairie intégrée à init.d afin de les lancer comme daemon sans utilisation de la commande nohup. Voici le contenu du script shell utilisé par le service.

#
# chkconfig: 2345 99 10
#
NODE_MANAGER="/u01/app/oracle/products/fmw/user_projects/domains/base_domain/bin/startNodeManager.sh"
# source des functions pour notamment la fonction daemon
. /etc/init.d/functions
# le node manager est lance une seul fois
start_node_manager()
{
  PID_NM="`status $NODE_MANAGER`"
  if [ "$?" != "0" ];then
    daemon --user oracle $NODE_MANAGER &
    sleep 3
  fi
}
case $1 in
start)
 start_node_manager
 su - oracle -c "/u01/app/oracle/products/fmw/user_projects/domains/base_domain/bin/startComponent.sh ohs1"
 ;;
stop)
  start_node_manager
  su - oracle -c "/u01/app/oracle/products/fmw/user_projects/domains/base_domain/bin/stopComponent.sh ohs1"
;;
status)
 status $NODE_MANAGER
;;
esac

5) Paramétrage d’OHS pour réaliser un petit exemple

Le paramétrage d’OHS est réalisé à travers les fichiers de paramétrages se trouvant dans le répertoire

/u01/app/oracle/product/fmw/user_projects/domains/base_domain/config/fmwconfig/components/OHS/ohs1

(ne pas hésiter à utiliser des alias de commande  pour changer de répertoire 😉
Nous trouvons dans ce répertoire le fichier httpd.conf, mais aussi le fichier dads contenant le paramétrage du plugin mod_plsql pour accéder aux url servies par le moteur de pages dynamiques se trouvant dans la base de données.
 

6) Paramétrage de la base de données pour exécuter un petit exemple

Je vous propose la mise en application de ce petit exemple afin de mettre en application notre serveur OHS

a. Nous créons dans la base de données une procédure stockée sous le user test dans la base BASETEST

 create package accueil as
   procedure html;
end;
/
create package body accueil as
   procedure html is
   Begin
      HTP.P ('Hello world !');
   End;
end;
/
hostname:7777/pls/saisie/accueil.html

 

b. dans le fichier

/u01/app/oracle/product/fmw/user_projects/domains/base_domain/config/fmwconfig/components/OHS/ohs1/mod_plsqlmod_plsql/dads.conf

nous entrons le paramétrage suivant, qui permet le paramétrage du plugin mod_plsql à la base de données :

# ============================================================================
#                     mod_plsql DAD Configuration File
# ============================================================================
<Location /pls/saisie>
SetHandler pls_handler
Order allow,deny
Allow from All
AllowOverride None
PlsqlDatabaseUsername test
PlsqlDatabasePassword test
PlsqlDatabaseConnectString serveurx:1521:BASETEST SIDFormat
PlsqlAuthenticationMode CustomOwa
</Location>

 

c. arrêt et redémarrage d’OHS

d. Test de notre url dans un navigateur, et voilà !

Capture