Pause-Café Volubis

pause-café

rendez-vous technique
Pause-Café est une réunion technique
destinée aux informaticiens sur plateforme IBM i.
Elle a lieu 3 à 4 fois par an : en Bretagne et sur internet.

Pause-café #52

Octobre 2009

Introduction et installation de MYSQL 5.1 sur I5.



Introduction

Le langage PHP (Hypertext Preprocessor) est devenu en quelques années d'existence, le langage de programmation de sites web dynamiques le plus populaire à coté de Java

Associé à MySQL, le langage PHP permet de développer des applications web puissantes reliées à des bases de données.


Sur System i, les pages PHP accèdent généralement à des données DB2, mais cela implique, si vous souhaitez utilisez des produits Open Source utilisant MYSQL, une réécriture partielle du code

Depuis la version 5.1 de MYSQL, MYSQL propose une "passerelle", nommée MYSQL DB2 Storage Engine, pemettant à une base MYSQL de stocker ses données sous DB2

 

Installation :

PHP, depuis la V5R40 : Zend core for I5/OS

Ce produit installe en fait un serveur Apache sous Pase qui tourne sur un autre port (8000, modifiable) , il faut alors utiliser une directive PROXY pour rerouter les requêtes vers cet autre serveur (depuis le serveur Apache "natif" de I5/OS).

L'interet du serveur Apache2 sous Pase (c'est véritablement celui d'UNIX) pour Zend, c'est de réutilsier les routines existantes, particulièrement celles permettant de lancer PHP en mode module, ce qui offre les meilleures performances et le debug avec ZendStudio.


 

1/ vérifiez que vous avez les logiciels sous licence suivants :

Code (option) Produit
5722SS1 (33) PASE
5722SS1 (30) Qshell
5722SS1 (13) System Openness Includes
5722SS1 (34) Digital Certificate Manager
5733SC1(*base) IBM Portable Utilities For I5/OS
5733SC1 (1) OpenSSH ,OpenSST,Zlib

Le répertoire /usr/local doit exister (créez le, s'il le faut, par MKDIR) et ne doit pas être un lien symbolique

 

2/ Téléchargez le fichier zippé sur le site de ZEND, dézippez et transférez (en binaire) via FTP le SAVF ZCOREPROD dans QGPL

3/ Passez ensuite la commande RSTLICPGM LICPGM(1ZCORE5) DEV(*SAVF) SAVF(QGPL/ZCOREPROD)

Ce produit propose une installation conjointe de MYSQL, mais version 5.0 et qui ne contient pas le DB2 storage Engine.

 

 

  • Enfin, depuis l'été 2009, téléchargez cette version 5.1 contenant un SAVF pour le system i
    http://dev.mysql.com/downloads/mysql/5.1.html#i5os-savf et le Mysql DB2 storage Engine.



              Attention un APAR II14442 indique les PTF préalables

    restaurez alors la bibliothèque MYSQLINST contenant :
     Objet       Type        Attribut    Texte          
INSMYSQL *PGM CLP Install MySQL
UPGMYSQL *PGM CLP Upgrade MySQL
SCRIPT *FILE SAVF
TARF *FILE SAVF
INSMYSQL *CMD Install MySQL
UPGMYSQL *CMD Upgrade MySQL

et lancez le CL INSMYSQL après avoir passé votre job en CCSID(37)
Attention, plusieurs remarques : - si vous aviez déja une version de MYSQL, sauvegardez vos données avant.
Détruisez ensuite my.cnf dans /etc. - vous ne pourrez pas faire un Upgrade de mysql 5.0 vers 5.1 avec UPGMYSQL
ce script ne gère que les mises à jour mineures (5.0.47 à 5.0.48, par ex) - ce CL installe un script install.sh dans /tmp et l'exécute
- vous devez passer votre job en CCSID(37) à cause d'un fichier temporaire nommé @longlink et le script gère mal le @ avec un code page latin (297 par exemple) - nous avons utilisé comme paramètres :
DIR('/usr/local/') DATADIR(/usr/local/mysqldata') USRPRF(MYSQL) cela va restaurer le répertoire /usr/local/mysql-5.1.37-i5os-power-64bits et crééer un lien symbolique nommé /usr/local/mysql IBM propose par défaut /QOpenSys/usr/local/mysql pour être insensible à la casse, mais /usr/local est plus standard
et mysql détecte bien si le système de fichier est sensible à la casse ou pas. les données seront stockées dans mysqldata (répertoire indépendant, plus simple pour changer de version) le profil MYSQL doit exister.
- il y a une documentation officielle fournie par MYSQL.

Dans tous les cas, lancez MYSQL par /usr/local/mysql/bin/mysqld_safe --usermysql & (sous QSH)
(le & demande à ce que MYSQL soit lancée en tâche de fond indépendante)
- ensuite assignez à root un mot de passe (ce n'est pas obligatoire, mais c'est plus prudent)

par mysqladmin -u root password "nouveau_pwd"
Attention, pour utiliser ensuite mysqladmin ou mysql en mode commande, il faudra ajouter -pnouveau_pwd
Pour ajouter d'autres utilisateurs :
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'passw0rd' WITH GRANT OPTION;

->vous pouvez indiquez à droite du @ un host ou une adresse IP, la connexion n'est autorisée que de ce poste
 



ensuite, vérifiez le fonctionnement par :

 

 

     cd /usr/local/mysql                     
    /usr/local/mysql-5.1.37-i5os-power-64bit
    $
    bin/mysqladmin -pnouveau_pwd version
    bin/mysqladmin Ver 8.42 Distrib 5.1.37, for ibm-i5os on power
    Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL license

    Server version 5.1.37
    Protocol version 10
    Connection Localhost via UNIX socket
 


    Exemple de commandes de démarrage et d'arrêt


    STRMYSQL(CMD)

     CMD        PROMPT('Démarrage MYSQL')   


    STRMYSQL(CLP)

    
    PGM                                                                     
           
        SBMJOB     CMD(CALL PGM(STRMYSQLB))  +     
                              JOB(MYSQLD) JOBQ(ZENDCORE/ZCOREJOBQ)          
                                                                            
    ENDPGM      

    STRMYSQLB(CLP)

    
    PGM                                                                     
        DCL VAR(&CMD) TYPE(*CHAR) LEN(50)                                       
        DCL VAR(&PARM) TYPE(*CHAR) LEN(15)                                      
        DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')                          
                                                     
    CALL CHGSRVTYPE PARM('MYSQL')
    CHGVAR VAR(&CMD) + VALUE('/Usr/local/mysql/bin/mysqld+ _safe' *TCAT &NULL) CHGVAR VAR(&PARM) VALUE('--user=mysql' *TCAT &NULL ) CALL PGM(QP2SHELL2) PARM(&CMD &PARM) ENDPGM
    ENDMYSQL(CMD)
      
    CMD        PROMPT('ARRÊT MYSQL')                       
    PARM       KWD(FORCE) TYPE(*CHAR) LEN(4) RSTD(*YES) +  
                     DFT(*NO) VALUES(*YES *NO) PROMPT('Forcer +
                       arrêt')                                   


    ENDMYSQL(CLP)

    
    /*****************************************************************/
    /* ATTENTION , REMPLACER -pXXXXX PAR -p<le mot de passe de root> */
    /*****************************************************************/
    PGM   PARM(&FORCE)                                                 
    DCL &FORCE *CHAR 4                                                 
    DCL VAR(&CMD) TYPE(*CHAR) LEN(50)                                  
    DCL VAR(&PARM1) TYPE(*CHAR) LEN(10)                                
    DCL VAR(&PARM2) TYPE(*CHAR) LEN(10)                                
    DCL VAR(&PARM3) TYPE(*CHAR) LEN(10)                                
    DCL VAR(&PARM4) TYPE(*CHAR) LEN(20)                                
    DCL VAR(&NULL) TYPE(*CHAR) LEN(1) VALUE(X'00')                     
                                                                       
                                                                       
                                                                       
      IF (&FORCE = *YES) THEN(DO)                                      
                ENDALLJOB JOB(MYSQLD)                                
     ENDDO                                                            
     ELSE DO                                                          
                CHGVAR     VAR(&CMD) +                                
                             VALUE('/Usr/local/mysql/bin/mysqladmin' +
                             *TCAT &NULL)                             
                CHGVAR     VAR(&PARM1) VALUE('-u' *CAT &NULL)         
                CHGVAR     VAR(&PARM2) VALUE('root' *CAT &NULL)       
                CHGVAR     VAR(&PARM3) VALUE('shutdown' *CAT &NULL)   
                CHGVAR     VAR(&PARM4) VALUE('-pXXXXX' *CAT &NULL)    
                                                                      
                SBMJOB     CMD(CALL PGM(QP2SHELL2) PARM(&CMD &PARM1 + 
                             &PARM2 &PARM3 &PARM4)) JOB(ENDMYSQLD) +  
                             JOBQ(ZENDCORE/ZCOREJOBQ)                 
     ENDDO                                                            
                                                                      
     SNDPGMMSG  MSG('Arrêt demandé') MSGTYPE(*COMP)  
    ENDPGM                                                
 



- pour utiliser MYSQL en mode commande (toujours sous QSH) :

 cd /usr/local/mysql                     
/usr/local/mysql-5.1.37-i5os-power-64bit
$
bin/mysql -u root -pnouveau_pwd
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.37 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
create database vins; Query OK, 1 row affected (0.03 sec) create table vins.producteurs (pr_code integer,
pr_nom varchar(50),
.../... );
Query OK, 0 rows affected (0.05 sec)


Quelques utilitaires :

  • mysqladmin -u root shutdown : arret de MYSQL
  • mysqladmin -u root version
  • mysqladmin -u root variables
  • mysqlshow : liste les bases de données
  • mysqldump BasedeDonnées : exporte les données d'une base

la documentation : http://dev.mysql.com/doc/refman/5.0/fr/index.html



 

DB2 Storage Engine

il s'agit de proposer un nouveau moteur de stockage à MYSQL.

 

Celui-ci en possède naturellement plusieurs

  • MyISAM : le plus rapide pour stocker des données stables dans un mode non transactionnel
  • innoDB : pour travailler sous commitment control
  • MEMORY : stockage en mémoire uniquement
  • CSV : sockage des données dans un format CSV

et donc le petit nouveau IBMDB2I permettant le stockage des data dans une blbliothèque DB2, donc ensuite accessible par un programme I5/OS.

 

pour l'activer, sous MYSQL (donc QSH)

 

 cd /usr/local/mysql                     
/usr/local/mysql-5.1.37-i5os-power-64bit
$
bin/mysql -u root -pnouveau_pwd
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.1.37 MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
install plugin ibmdb2i soname “ha_ibmdb2i.so”;

vous devez le voir, ensuite par show engines

 show engines;                                                                                                                 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| IBMDB2I | YES | IBM DB2 for i Storage Engine | YES | NO | YES |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.01 sec)

 

 

Ensuite lors d'un CREATE TABLE , ajoutez engine=ibmdb2i


ou bien positionnez cette valeur par défaut.

  • pour la session par SET storage_engine=ibmdb2i;
  • au démarrage
    • au cas par cas avec mysqld_safe --default-storage-engine=ibmdb2i &
    • toujours, en ajoutant à /etc/my.cnf default-storage-engine=ibmdb2i

vous pouvez aussi passer la commande suivante sur une table existante

ALTER TABLE producteurs ENGINE=IBMDB2I;

 

la bibliothèque porte le nom de la base et n'est créé qu'à la première table

CREATE DATABASE vins, ne créé rien

CREATE TABLES vins.producteurs, créé :

    • une bibliothèque"vins" avec un journal et le catalogue SQL

NB : "vins" en minuscules, il faut donc mettre le nom entre guillemets pour pouvoir l'utiliser (par exemple ADDLIBLE "vins")

  • la table "producteurs", nommée "prod0001" pour I5/OS


par contre, DROP TABLE supprime la table, mais seul DROP DATABASE va supprimer la bibliothèque.

 

  les ordres DDL (Data Definition language) comme CREATE TABLE, CREATE INDEX, sont transformés en leur équivalent SQL/400

  les ordres DML (Data Manipulation language) comme SELECT, UPDATE sont réalisés par des entrées/sorties natives, l'optimisation étant à la charge de MYSQL

 

Pour tester, nous avons installé SugarCRM après avoir défini ibmdb2i comme moteur par défaut.


tout c'est bien passé, voici ce que nous affiche phpMYadmin :


MySQL Administrator

 

iSeries Navigator

 

et PDM

 

 

-> pour plus de détails techniques, voyez le redbook SG247705


IBM Director version 6.1


il s'agit du produit, nouveau en V6, regroupant les fonctionnalités d'IBM Director V5 et, de manière embryonnaire, de Gestion Centralisée


Pour plus d'infos, voyez http://www-03.ibm.com/systems/management/director/

  et pour le téléchargement et l'installation, voyez http://www-03.ibm.com/systems/management/director/downloads/

 

Voici la page d'accueil du produit :


Le seul système reconnu est celui sur lequel vous avez installé Director (Windows, Linux ou AIX)

il vous faut ensuite reconnaître les autres systèmes du réseau, par reconnaissance du système

Pour les machines de type HMC, il faut demander l'accès :

sur cette page, commencez par importer les agents sur le site suivant

 

sachant qu'il existe deux types d'agent :

  1. Agent de plateforme, fourni des informations minimales souvent liées au matériel.
  2. Agent commun, fourni des informations de plus haut niveau.

puis choisissez un groupe de modules (ici agent commun) en cliquant sur le nom

cela lance un assistant

Choisissez le système cible

  1. pour IBM i et System i,

  • le produit 5722UME correspond à un agent de plateforme (il est pré-chargé en V6R1)
  • le produit 5722DA1 version 5.20 correspond à un agent commun, il faut le télécharger ICI

cela doit vous inscrire deux services visibles sous iSeries navigator sous Réseau/Serveurs/Définis par l'utilisateur

 

ensuite, vous pouvez parcourir les ressources ("Tous les systèmes" offre la liste la plus complète)

le simple fait d'avoir reconnu la HMC a enregistré le Power System (la boite) et toutes les partitions

L'option vues affiche une hiérarchie :

•HMC/Power system(s)

Il y a des options spécifiques à une HMC, comme la mise à jour (ATTENTION !)

Attention aussi aux options spécifiques au serveurs Power System

•Power system/partitions

Là aussi des options spécifiques de gestion des partitions (arrêt/démarrage ou partitionnement dynamique, par exemple)

Sur une ressource de type I5/OS ou IBM i, vous aurez un accès direct à IBM Navigator Director

L'option Inventaire proposant un accès aux inventaires (même notion qu'avec Gestion Centralisée)

la collecte d'inventaire pouvant être immédiate ou planifiée

 

Certaines options sont héritées de Director V5, et donc écrite encore en applications java (fichier jnlp à télécharger)

comme ici :

(options marquées par )

pour que ces options fonctionnent, vous devez utiliser le JRE V5 d'IBM, pour cela

  • la première fois choisissez exécuter avec, autres et indiquez javaxs.exe du JRE d'IBM (il y en a un d'installé avec Director ou RDI ou Eclipse)
  • ou bien acceptez le téléchargement du JRE proposé par Director

  • ou bien modifiez l'association (ici Firefox)

cela doit lancer la console Java, puis l'application

ici, gérer les processus

On peut associer à un processus, un contrôleur

que nous retrouverons avec le centre de santé, ci dessous.


 

Une page très pratique est le centre de santé

La liste de vos systèmes favoris est affichée dans la liste nommée Favoris (en bas à gauche), un assistant vous est proposé pour la constituer

La liste des systèmes avec incidents s'affiche en bas à droite, double cliquer sur le système pour voir le détail et éventuellement, supprimer l'incident.

enfin, le plus pratique semble être la notion de contrôleur (en haut à droite), cliquez sur le bouton "afficher les contrôleurs"

choisissez votre système à contrôler et choisissez un groupe de moniteurs (Moniteurs courants, pour IBM i)

voici les 4 mesures pouvant être contrôlées

Sur une mesure

vous pouvez ajouter un graphe au tableau de bord :

et activer un seuil (ce qui provoquera des incidents au sens vu plus haut)

, ici un seuil sur l'espace disque

Vous retrouverez ensuite ces notions avec un clic droit sur le nom du système

 

Nous retrouvons les contrôleur de travaux, générés sur la liste des processus

Indiquez ici les événements devant constituer une alerte

  • Démarrer (information)
  • Arrêter (avertissement)
  • Echec (erreur grave)

Vous pouvez aussi passer des commandes :

sur la liste des commandes, choisissez créer

cela lance une application Java

Une fois les commandes créés, vous pouvez les exécuter

Indiquez le(les) système(s) cible(s)

une éventuelle planification (quotidienne, hebdomadaire ou mensuelle)

la notion de notification (de démarrage , d'arrêt ou d'échec)

et enfin des options


Point suivant : association événements/actions à entreprendre

Le plus simple est de prendre l'assistant lancé par Automatisions/Plans d'automatisation

Puis de créer un nouveau plan, ce qui lance l'assistant

Indiquez un nom

un ou plusieurs systèmes à "surveiller"

puis, ce qui constitue événement, trois grandes possibilités :

  • gravité de l'événement (rappeler vous les événements sur les travaux)
  • seuils dépassés (% d'occupation disque, % de CPU, etc...)
  • incidents matériels

ici un seuil sur l'espace disque

ici un filtre sur la gravité d'un événement

enfin un problème de POWER (alimentation)

puis vous devez associer une action, probablement même la créer, les premières fois.

si vous créez une nouvelle action, un autre assistant prend le relai

 

choisissez un type d'action

•envoi de mail

vous recevez ce type de mail (ici un test)

Evénement généré en interne pour tester la configuration   d'action 'envoi mail à cmasse - 21/07/09 10:05'.
Texte d'événement Evénement généré en interne pour tester la configuration d'action 'envoi mail à cmasse - 21/07/09 10:05'.
     Date 21/07/2009 10:05 CEST
     Gravité Informations
     Type d'événement Director.Test.Action
     Nom du système serveurnt.volubis.intra
 

•ou démarrage d'un programme

Dans tous les cas, une fois l'action créé associez la (les) à l'événement

puis indiquez les moments où la surveillance doit s'effectuer

  1. tout le temps
  2. à des plages que vous allez définir

une fois terminé (il faut valider sur le dernier écran)

vous retrouverez votre événement dans Filtres événements et vos actions dans Actions événements


Derniers point, allez directement à l'information qui vous intéresse :

  • vous pouvez ajouter n'importe quelle page à vos pages de démarrage
 


que vous demandez ensuite par

  • sur la page de bienvenue, vous trouverez des récapitulatifs intéressants

  • Gestionnaire d'état (les status)

  • Gestionnaire d'automatisation (travaux planifiés)

  • Gestionnaire spécifique Power Systems

Editeurs RPG gratuits

Pour terminer deux éditeurs RPG gratuits

RPG NextGen ( http://www.rpgnextgen.com/ )

et JSEU ( http://sourceforge.net/projects/jseu/ )

Pour infos, voici les principales fonctionnalités de RDI, absentes de ces deux produits.

  • Colorisation et vérification syntaxique
  • Références croisées (fenêtre Structure)
  • Complémentation de code et Aide en ligne
  • Compilation et affichage des erreurs
  • Debug y compris des procédures cataloguées et des Web services
  • Remplacant de SDA (Screen Designer)

 

Copyright © 1995,2009 VOLUBIS