pause-café
destinée aux informaticiens sur plateforme IBM i.
Pause-café #52
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) ENDPGMSTRMYSQLB(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) ENDPGMENDMYSQL(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 :
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 :
- Agent de plateforme, fourni des informations minimales souvent liées au matériel.
- 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
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
- tout le temps
- à 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