Draft Installation

De SOS Paris
Aller à : navigation, rechercher

Arii est un portail hébergeant des modules principalement axés sur l'exploitation informatique. Il est écrit en PHP et basé sur le standard L.A.M.P., il nécessite donc a minima d'un serveur web capable d'exécuter du PHP ainsi qu'une base de données dite "cache" pour ses propres besoins.

Le serveur hôte contient les composants suivants :

  • Serveur web
  • Client de base de données
  • PHP

Le code est systématiquement testé avec ces composants sur Linux et sur Windows.

Pour toute information sur la solution: Solutions Open Source

Une démonstration en ligne est disponible sur arii.org

Socle Technique

Chaque composant peut être installé de manière indépendante.

Serveur HTTP

La fonction principale d'un serveur Web est de stocker et délivrer des pages web.
Le protocole de communication HTTP permet de dialoguer avec le logiciel client, généralement un navigateur Web.
Les plus connus sont Apache, IIS, Nginx, Lighttpd... Ces logiciels intègrent généralement des modules permettant d'exécuter un langage serveur comme PHP pour générer des pages web dynamiques.

Apache

Apache.png
Développeur Apache Software Foundation
Langages C
Environnement Multiplate-forme
Type Serveur HTTP
Licence License apache
Site web https://httpd.apache.org/

Le logiciel libre Apache HTTP Server (Apache) est un serveur HTTP créé et maintenu au sein de la fondation Apache.

C'est le serveur HTTP le plus populaire du World Wide Web. Il est distribué selon les termes de la licence Apache.

Télécharger

  • Debian
apt-get install apache2 
  • CentOS
yum install httpd
  • Windows
https://httpd.apache.org/download.cgi

Configurer

  • Pour Arii

Créer un "virtual host" qui pointe sur le répertoire web

<VirtualHost *:80>
        ServerAdmin webmaster@localhost 

        DocumentRoot /home/arii/Symfony/web
        DirectoryIndex app.php

        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/arii/Symfony/web/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory> 

        ErrorLog ${APACHE_LOG_DIR}/arii_error.log
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/arii_access.log combined
        ServerAlias www.arii.org *.arii.org
</VirtualHost> 
  • Pour JobScheduler :

Déclarer un moteur "standalone"

   ProxyPass /js/<SCHEDULER_ID>/  http://<IP>:<PORT>/
   ProxyPassReverse /js/<ID>/  http://<IP>:<PORT>/

Déclarer un cluster de haute disponibilité

<Proxy balancer://<ID>/ >
BalancerMember http://<IP>:<PORT>/
BlanacerMember http://<IP>:<PORT>/ status=+H
</proxy>
ProxyPass /js/<ID>/  balancer://<ID>/
ProxyPassReverse /js/<ID>/  balancer://<ID>/

Déclarer un cluster en grille de calcul

<Proxy balancer://<ID>/ >
BalancerMember http://<IP>:<PORT>/ 
BalancerMember http://<IP>:<PORT>/
BalancerMember http://<IP>:<PORT>/
</proxy>
ProxyPass /js/<ID>/  balancer://<ID>/
ProxyPassReverse /js/<ID>/  balancer://<ID>/

nginx

Nginx.png
Développeur NGINX, Inc. et Igor Sysoev
Langages C
Environnement Type Unix, OS X, Microsoft Windows
Type Serveur HTTP
Licence Licence BSD
Site web http://nginx.org/

NGINX ou Engine-X est un proxy inverse pouvant répartir la charge des requêtes vers une ressource statique sur plusieurs serveurs ou procéder à la mise en cache localement du contenu accessible à partir du web.

Télécharger

  • Debian
apt-key add nginx_signing.key
add-apt-repository 'deb http://nginx.org/packages/debian/ <CODENAME> nginx'
apt-get update
apt-get install nginx
  • CentOS
sudo yum install epel-release
sudo yum install nginx
  • Windows
http://nginx.org/en/download.html

Configurer Créer un "virtual host" qui pointe sur le répertoire web

http {
  index app.php;

  server {
    listen 80 localhost;
    server_name www.arii.org *.arii.org;
    access_log logs/arii_access.log main;

    server_name_in_redirect off;

    root  /home/arii/Symfony/web;
  }
}

Client de base de données

MySQL

Mysql.png
Développeur MySQL AB / Oracle
Langages C et C++
Environnement Windows, Linux, Mac OS X
Type système de gestion de bases de données
Licence Licence publique générale GNU
Site web www.mysql.com

MySQL est un système de gestion de bases de données relationnelles (SGBDR). Il est distribué sous une double licence GPL et propriétaire.
Il fait partie des logiciels de gestion de base de données les plus utilisés au monde, autant par le grand public que par des professionnels.

Télécharger

  • Debian
apt-get install mysql-client -y -q
  • CentOS
yum install mysql
  • Windows
https://dev.mysql.com/downloads/mysql/

Configurer

Créer une base et un utilisateur pour les applications :

  • Arii
mysql -h <host> -p <port> -u <user> -p<PASSWRD> -e"CREATE USER arii IDENTIFED BY <passwrd> ; CREATE DATABASE 'arii'@'%' ; GRANT ALL ON arii.* TO 'arii'@'%' ;"
  • JobScheduler
mysql -h <host> -p <port> -u <user> -p<PASSWRD> -e"CREATE USER scheduser IDENTIFED BY <passwrd> ; CREATE DATABASE 'scheduler'@'%' ; GRANT ALL ON scheduser.* TO 'scheduler'@'%' ;"

MariaDB

Mariadb.png
Développeur MariaDB Foundation
Langages C, C++, Perl, Bash
Environnement Multiplate-forme
Type système de gestion de bases de données
Licence GNU GPLv2, GNU LGPL2
Site web http://mariadb.org/

MariaDB est un fork communautaire de MySQL,
la gouvernance du projet est assurée par la fondation MariaDB.

Télécharger

  • Debian
apt-get install mariadb-client-10.0 -y -q
  • CentOS

Dans /etc/yum.repos.d/nginx.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Commande

yum install MariaDB-client
  • Windows
https://downloads.mariadb.org/mariadb/10.1.14/

Configuration :
Voir "MySQL – Configurer".

PostegreSQL

Pgsql.png
Développeur Michael Stonebraker
Langages C, C++, Perl, Bash
Environnement Multiplate-forme
Type système de gestion de bases de données
Licence Licence PostgreSQL
Site web http://www.postgresql.org

PostgreSQL est un système de gestion de base de données relationnelles et objet (SGBDRO).
C'est un outil libre disponible selon les termes d'une licence de type BSD.

Télécharger

  • Debian
apt-get install postgresql-client -y -q
  • CentOS
yum install postgresql-client
  • Windows
https://www.postgresql.org/download/windows/

Configurer

? Untested
  • Arii
psql -h <host> -p <port> -U <user> -W<PASSWRD> -c "CREATE USER arii WITH password '<passwrd>' ; CREATE DATABASE arii WITH OWNER arii;"
  • JobScheduler
psql -h <host> -p <port> -u <user> -W<PASSWRD> -c "CREATE USER scheduser WITH password '<passwrd>' ; CREATE DATABASE scheduler WITH OWNER scheduler;"

Client OCI8

Cette procédure permet d'installer OCI8 pour Oracle 11G R2 sur la machine virtuelle Arii.
Cela afin d'afficher les résultats des traitements de moteurs OJS connecter à une base de données Oracle 11G R2.

Prérequis
Télécharger les composants et les importer dans /tmp :

http://download.oracle.com/otn/linux/instantclient/11204/instantclient-basic-linux.x64-11.2.0.4.0.zip
http://download.oracle.com/otn/linux/instantclient/11204/instantclient-sdk-linux.x64-11.2.0.4.0.zip

Récupération des pré-requis :

apt-get update
apt-get install php-pear php5-dev build-essential telnet unzip libaio1

Vérifier que l'extension OCI8 n'est pas installée :

cp /var/www/web_access/phpinfo.php /home/arii/Symfony/web/  
wget <ip>/phpinfo.php -O /tmp/phpinfo.php
cat /tmp/phpinfo.php | grep OCI
rm /tmp/phpinfo.php

Installation du client oracle pour php

mkdir /opt/oracle
unzip /tmp/instantclient*.zip -d /opt/oracle/
cd /opt/oracle/
mv instantclient_11_2 instantclient
cd /opt/oracle/instantclient
ln -s libclntsh.so.11.1 libclntsh.so
ln -s libocci.so.11.1 libocci.so

Compiler :

pecl install oci8
instantclient,/opt/oracle/instantclient

Configuration apache :

  • Ajout des instructions dans /etc/php5/apache2/php.ini :
echo extension=oci8.so >> /etc/php5/apache2/php.ini
echo extension_dir = "/usr/lib/php5/20100525/" >> /etc/php5/apache2/php.ini
  • Ajout des instructions dans /etc/php5/cli/php.ini :
echo extension=oci8.so >> /etc/php5/cli/php.ini
echo extension_dir = "/usr/lib/php5/20100525/" >> /etc/php5/cli/php.ini
  • Ajout des instructions dans /etc/apache2/envvars :
echo TNS_ADMIN=/opt/oracle/instantclient >> /etc/apache2/envvars
echo LD_LIBRARY_PATH=/opt/oracle/intantclient >> /etc/apache2/envvars
echo NLS_LANG=french_france.WE8ISO8859P1 >> /etc/apache2/envvars
echo export TNS_ADMIN LD_LIBRARY_PATH NLS_LANG >> /etc/apache2/envvars
  • Vérification :
tail -5 /etc/apache2/envvars
export APACHE_ARGUMENTS= 
TNS_ADMIN=/opt/oracle/instantclient 
LD_LIBRARY_PATH=/opt/oracle/intantclient 
NLS_LANG=french_france.WE8ISO8859P1 
export TNS_ADMIN LD_LIBRARY_PATH NLS_LANG 
  • Redémarrage du service apache2 :
service apache2 restart

Configuration des variables d'environnement

echo export TNS_ADMIN=/opt/oracle/instantclient >> /home/arii/.profile
echo export LD_LIBRARY_PATH=/opt/oracle/intantclient >> /home/arii/.profile
echo export NLS_LANG=french_france.WE8ISO8859P1 >> /home/arii/.profile

Configuration connexion oracle client/server

  • Importer le fichier tnsnames.ora dans /opt/oracle/instantclient/ tel que :
# tnsnames.ora Network Configuration File: C:\App\instantclient_11_2\tnsnames.ora
# Generated by Oracle configuration tools.
<DB_name> =
 (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = <DB_HOST>)(PORT = 1521))
   (CONNECT_DATA =
     (SERVER = DEDICATED)
     (SERVICE_NAME = pposte)
   )
 )
ORACLR_CONNECTION_DATA =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
   )
   (CONNECT_DATA =
     (SID = CLRExtProc)
     (PRESENTATION = RO)
   )
 )

Importer le fichier de test Simple_oci-test.php dans /home/arii/Symfony/web

<?php
 //PutEnv("LD_LIBRARY_PATH=/opt/oracle/instantclient_12_1/");
 $tns                   = '<TNS>'; 
 $username              = '<USERNAME>'; 
 $password              = '<PASSWRD>'; 
 // Connexion à la base de donnée:
 $db = oci_connect($username, $password, $tns); 
 if (!$db) { 
      $e = oci_error();
      echo '<b><font color="red">CONNEXION IMPOSSIBLE</font></b> : ' .htmlentities($e[
        'message']); 
 } else { 
    echo '<b><font color="green">CONNEXION REUSSIE!</font></b>'; 
    oci_close($conn); 
 }
 ?>

Vérifier l'installation :

wget <ip>/phpinfo.php -O /tmp/phpinfo.php
cat /tmp/phpinfo.php | grep OCI
rm /tmp/phpinfo.php

Vérifier que la connexion à la base oracle :

http://192.168.163.129/Simple_oci-test.php
CONNEXION REUSSIE!

Activer la connexion Oracle dans Symfony/app/config/parameters.yml

   - name:     Oracle
     dbname:   <DB_name>
     user:     <USERNAME> 
     password: <PASSWRD>
     type:     osjs
     driver:   oci8
     host:     <DB_HOST>
     port:     1521

Langage web

PHP

Php-logo.png
Développeur The PHP Group
Langages C
Environnement Multi-plateforme
Type Langage web
Licence Licence PHP
Site web : http://www.php.net/

PHP est un langage de programmation libre, principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale. PHP est un langage impératif orienté objet.

Installation

  • Debian
apt-get install php5 php5-mysql libapache2-mod-php5 php5-cli -y -q     
  • CentOS
yum -y install php56u php56u-opcache php56u-xml php56u-mcrypt php56u-gd php56u-devel php56u-mysql php56u-intl php56u-mbstring php56u-bcmath
  • Windows
http://windows.php.net/

Configurer
Vérifier dans php.ini :

date.timezone = Europe/Paris

Bibliothèques

Machine virtuelle Java

La machine virtuelle Java (en anglais Java virtual machine, abr. JVM) est un appareil informatique fictif qui exécute des programmes compilés sous forme de bytecode Java.

L'appareil est simulé par un logiciel spécifique à chaque plate-forme ou couple (machine/système d’exploitation) et permet aux applications Java compilées en bytecode de produire les mêmes résultats quelle que soit la plate-forme, tant que celle-ci est pourvue de la machine virtuelle Java adéquate.

OpenJDK

OpenJDK.png
Développeur Oracle Corporation
Langages C++, Java
Environnement Multiplate-forme
Type Bibliothèque logicielle
Licence GNU GPL v2
Site web : http://openjdk.java.net/

OpenJDK est l'implémentation libre de la société Oracle du standard Java SE, tel que défini par le Java Community Process.

Installation

  • Debian
apt-get install openjdk-8-jre -y -q
  • CentOS
yum install java-1.8.0-openjdk
  • Windows (via github)
https://github.com/ojdkbuild/ojdkbuild/archive/master.zip

Java SE

Java.png
Développeur Oracle Corporation
Langages C++, Java
Environnement Multiplate-forme
Type Bibliothèque logicielle
Licence logiciel propriétaire / gratuiciel
Site web : http://www.java.com

Télécharger

http://www.java.com/fr/download/

Langage script infrastructure

Perl

Perl.jpg
Développeur The Perl Foundation
Langages C
Environnement Multiplate-forme
Type langage de programmation
Licence GNU GPL & Artistic License
Site web : http://www.perl.org/

Perl est un langage de programmation créé par Larry Wall en 1987 pour traiter facilement de l'information de type textuel.
Ce langage, interprété, s'inspire des structures de contrôle et d'impression du langage C, mais aussi de langages de scripts sed, awk et shell (sh).

Installation

  • Debian
apt-get install perl -y -q
  • CentOS
yum -y install perl perl-CGI 
  • Windows
http://strawberryperl.com/

Gestionnaire de versions

GIT

Logo@2x.png
Développeur Junio Hamano, Linus Torvalds et contributeurs
Langages C, Bourne shell, Perl
Environnement POSIX, Linux, OS X, Microsoft Windows
Type Logiciel de gestion de versions
Licence GNU GPL v2
Site web : http://git-scm.com/

Git est un logiciel de gestion de versions décentralisé.
C'est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux,
et distribué selon les termes de la licence publique générale GNU version 2.
En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est utilisé par plus de deux millions de personnes.

Qu’est-ce que la gestion de version et pourquoi devriez-vous vous en soucier ?
Un gestionnaire de version est un système qui enregistre l’évolution d’un ensemble de fichiers au cours du temps de manière à ce qu’on puisse rappeler une version antérieure d’un fichier à tout moment.
https://git-scm.com/book/fr/v2

Inst-GIT.png

Installation

  • Debian
apt-get install git
  • CentOs
yum install git
  • Windows
https://git-for-windows.github.io/

Dans l'exemple suivant, nous utiliserons des fichiers XML comme fichiers sous gestion de version, bien que l'on puisse l’utiliser pour tous types de fichiers.

Démarrer un référentiel Git pour JobScheduler

Nous conseillons de placer le référentiel dans le répertoire config qui permet de conserver la configuration de l’ordonnanceur. Créer un répertoire .git,

cd $SCHEDULER_DATA
git init

Ajouter les fichiers xml,

git add *.xml 

Indiquer les différents fichiers a ajouter,
ici le répertoire live  :

git status -s
A  hibernate.cfg.xml
A  live/sos/dailyschedule/CheckDaysSchedule.job.xml
A  live/sos/dailyschedule/CreateDaysSchedule.job.xml
A  live/sos/housekeeping/scheduler_cleanup_files.job.xml
A  live/sos/housekeeping/scheduler_cleanup_history.job.xml
A  live/sos/housekeeping/scheduler_dequeue_mail.job.xml
A  live/sos/housekeeping/scheduler_restart.job.xml
A  live/sos/housekeeping/scheduler_rotate_log.job.xml
A  scheduler.xml

Confirmer avec commit :

git commit -m 'Création du référentiel'
[master (root-commit) 0ec2a86] Création du référentiel
Committer: sos-paris <osjs@ubuntu.(none)>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:
  git config --global user.name "Your Name"
  git config --global user.email you@example.com
After doing this, you may fix the identity used for this commit with:
  git commit --amend --reset-author
  16 files changed, 457 insertions(+), 0 deletions(-)
create mode 100644 hibernate.cfg.xml
create mode 100644 live/sos/dailyschedule/CheckDaysSchedule.job.xml
create mode 100644 live/sos/dailyschedule/CreateDaysSchedule.job.xml
create mode 100644 live/sos/housekeeping/scheduler_cleanup_files.job.xml
create mode 100644 live/sos/housekeeping/scheduler_cleanup_history.job.xml
create mode 100644 live/sos/housekeeping/scheduler_dequeue_mail.job.xml
create mode 100644 live/sos/housekeeping/scheduler_restart.job.xml
create mode 100644 live/sos/housekeeping/scheduler_rotate_log.job.xml
create mode 100644 scheduler.xml
create mode 100644 scheduler_custom_documentation.xml

Configuration :

Comme l’indique le message de la section précédente, il est conseillé de configurer le référentiel avec des informations plus parlantes pour l’utilisateur comme, par exemple :

git config --global user.name "sos-paris"
git config --global  user.email support@sos-paris.com

Cloner :

Une fois le répertoire créé, on récupère les fichiers via git

git clone git://<dépot>

Ou via un dépôt en ligne, en l'occurrence GitHub

git clone https://github.com/AriiPortal/Arii.git

Participer :

Si vous avez les droits suffisants sur le dépôt, envoyer vos changements avec :

git push git://<dépot>

Github 

GitHub (exploité sous le nom de GitHub, Inc.) est un service web d'hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de versions Git.
Ce site est développé en Ruby on Rails et Erlang par Chris Wanstrath, PJ Hyett et Tom Preston-Werner.
GitHub propose des comptes professionnels payants, ainsi que des comptes gratuits pour les projets de logiciels libres.
Le nom GitHub est composé du mot « git » faisant référence à un système de contrôle de version open-source et le mot « hub » faisant référence au réseau social bâti autour du système Git.

Arii sur GitHub : https://github.com/AriiPortal/

JavaScript

DHTMLX

DHTMLX.png.png
Développeur Dinamenta, UAB
Environnement Multi-platform
Type JavaScript library
Licence GNU General Public License & licence commercial
Site web http://dhtmlx.com/

La suite DHTMLX (ou dhtmlxSuite) est une bibliothèque JavaScript pour le développement d'applications web dynamiques.

Installation

  • via GitHub
git clone https://github.com/DHTMLX/scheduler.git
git clone https://github.com/DHTMLX/gantt.git
git clone https://github.com/DHTMLX/connector-php.git
git clone https://github.com/erusev/parsedown.git

Génération de graphiques

GraphViz

Grphviz.png
Développeur John Ellson, Emden Gansner, Yehuda Koren, Eleftherios Koutsofios,
John Mocenigo, Stephen North, Gordon Woodhull, David Dobkin,
Vladimir Alexiev, Bruce Lilly, Jeroen Scheerder, Daniel Richard G., Glen Low
Langages C, Tk
Environnement GNU/Linux, Mac OS, Unix, Windows
Type Logiciel de manipulation et de visualisation de graphes
Licence Common Public License
Site web http://graphviz.org/

GraphViz (diminutif de Graph Visualization Software) est un ensemble d'outils open source créés par les laboratoires de recherche d'AT&T qui manipulent des graphes définis à l'aide de scripts suivant le langage DOT. Cet ensemble fournit aussi des bibliothèques permettant l'intégration de ces outils dans diverses applications logicielles.

Installation

  • Debian
apt-get install graphviz -y -q
  • CentOS
yum list 'graphviz*' 
  • windows
http://wingraphviz.sourceforge.net/wingraphviz/setup.htm

Langage de documentation

Markedown.png
Développeur John Gruber
Extension .md, .markdown
Type Langage de balisage
Licence Common Public License
Site web http://graphviz.org/

Markdown est un langage de balisage léger créé par John Gruber en 2004.
Son but est d'offrir une syntaxe facile à lire et à écrire.
Un document formaté selon Markdown devrait pouvoir être publié comme tel, en texte, sans donner l’impression qu’il a été marqué par des balises ou des instructions de formatage.

Parsedown

Parsedown est un interpréteur de fichier Markdown

Installation

  • via GitHub
git clone https://github.com/erusev/parsedown.git

Applications

JobScheduler

Jobscheduler.jpg
Développeur Software- und Organisations-Service GmbH
Langages C++, Java, JavaScript
Environnement Linux & Windows(⩾2008)
Type Ordonnanceur
Licence GPL2 et licence commercial
Site web http://www.sos-berlin.com/

OJS est un ordonnanceur open source téléchargeable librement sur SourceForge depuis 2005.
Solutions Open Source Paris possède une forte expertise sur ce produit pour lequel nous proposons du conseil, de la formation et du support.

Pré-requis

  • Créer l'utilisateur

Les commandes lancées par l'ordonnanceur seront exécutées avec le compte d'installation, pour les utilisateurs Windows mais également Linux ( option Unprivilege ).

  • Créer la base de données

L'ordonnanceur nécessite une base de données et un utilisateur permissionné, les tables seront créées lors de l’installation.

Télécharger

  • Linux x64
wget https://sourceforge.net/projects/jobscheduler/files/JobScheduler.1.9/JobScheduler.1.9.7/jobscheduler_linux-x64.1.9.7.tar.gz/download -O jobscheduler_linux-x64.1.9.7.tar.gz
tar -xzvf jobscheduler_linux-x64.1.9.7.tar.gz
  • Linux x86
wget https://sourceforge.net/projects/jobscheduler/files/JobScheduler.1.9/JobScheduler.1.9.7/jobscheduler_linux-x86.1.9.7.tar.gz/download -O jobscheduler_linux-x86.1.9.7.tar.gz
tar -xzvf jobscheduler_linux-x86.1.9.7.tar.gz
  • Windows

Depuis un navigateur :

https://sourceforge.net/projects/jobscheduler/files/JobScheduler.1.9/JobScheduler.1.9.7/

En ligne de commande (exemple 64bits):

 C:\windows\explorer.exe https://sourceforge.net/projects/jobscheduler/files/JobScheduler.1.9/JobScheduler.1.9.7/jobscheduler_windows-x64.1.9.7.zip/download
"C:\Program Files\7-Zip\7z.exe" x C:\Users\Eric\Downloads\jobscheduler_windows-x64.1.9.7.zip

Installer

L’installation du produit peut se fait à travers une interface graphique fournie par l’installeur IzPack.
Arii offre un formulaire, similaire à celui de l'installeur, génère un fichier d'installation silencieuse qui pourra être utilisé lors d'une installation en ligne de commande.
En dernier recours, éditer celui fourni par défaut avec l'archive : jobscheduler_install.xml

Une fois le fichier d'installation silencieuse dûment rempli :

  • Linux :
./setup.sh -u jobscheduler_install.xml
  • Windows :
setup.cmd jobscheduler_install.xml

La progression du script est affiché à l'écran, ses informations ainsi que les paramètres utilisés sont écrits dans le fichier

${SCHEDULER_DATA}/logs/Install_V1.9.7_$(date +"%Y%m%d%H%M")_<Number>.log

Configurer

La configuration d'une instance OJS est répartie dans différents fichiers de configuration, les modifications qui y sont faites sont prises en compte lors du redémarrage de l'ordonnanceur :

  • %SCHEDULER_DATA%\config\scheduler.xml

    Dans ce fichier sont regroupés plusieurs paramètres concernant les connexions (TCP/UDP mais aussi HTTP) :

    1. port : Le port utilisé par JobScheduler pour ses communications, i.e. : port="4444"

    2. supervisor : Le superviseur est le moteur responsable de l'orchestration entre les différentes instances.
      Il n'est pas déclaré lors de l'installation, il faut le déclarer manuellement à l'intérieur de la balise <config/> tel que : supervisor="127.0.0.1:44444"

    3. allowed_host : Le contenu de la balise <security/> est une liste blanche des hôtes autorisés à communiquer avec le moteur, que se soit un autre moteur via TCP ou un poste client via HTTP
      Il est possible de déclarer chaque hôte individuellement, i.e. : <allowed_host host="192.168.0.7" level="all"/>
      ou d'autoriser toute une plage d'adresses avec une adresse finissant par zéro : <allowed_host host="89.0.1.0" level="all"/>
      Pour des raisons de sécurité, les configurations <security ignore_unknown_hosts="no"> et <allowed_host host="0.0.0.0" level="all"/> sont à proscrire.

    4. plugins : Par défaut la balise <plugins/> contient les classes java utilisées par le proxy "jetty" fourni avec JobScheduler. Ces plugins peuvent être désactivés si un autre proxy est configuré.

  • %SCHEDULER_DATA%\config\factory.ini

    Dans ce fichier sont regroupés plusieurs paramètres :

    1. Connexion à la base de données: cette connexion se fait via JDBC et est déclarée dans le paramètre "db", i.e. :
      db = jdbc -class=org.mariadb.jdbc.Driver jdbc:mysql://localhost:3306/scheduler -user=scheduser -password=osjs

    2. Connexion au serveur de messagerie, cette connexion est définie par plusieurs paramètres : hôte, port, utilisateur et mot de passe
      Mais également l'expéditeur, les destinataires et les conditions dans lesquelles déclencher l'envoi

    3. Niveau des logs, entre info et debug9

    4. Localisation de la JVM, ce paramètre "vm" est renseigné à l'installation avec le chemin de la JVM utilisé par l'installeur. Toutefois, il est par défaut commenté au profit des variables d’environnement.

  • %SCHEDULER_DATA%\config\sos_settings.ini

    Paramètres de connexion à la base de données

  • %SCHEDULER_HOME%\bin\jobscheduler_environment_variables.sh

    Variables d’environnement de l'ordonnanceur, ses paramètres sont exportés à chaque démarrage du moteur :

    1. Utilisateur

    2. Localisation des répertoires %HOME% et %DATA%

    3. Localisation de la JVM : ce paramètre "JAVA_HOME" est précédé d'un test pour détecter la JVM utilisée par le système.
      il est recommandé de forcer ce paramètre vers un JRE dédié.

    4. Configuration cluster : ce paramètre est défini à l'installation, il est recommandé de mettre en place une haute disponibilité afin de sécuriser l'infrastructure.

Symfony

Symfony.png
Développeur Symfony contributors, SensioLabs
Langages PHP
Environnement Linux & Windows(⩾2008)
Type Web application framework
Licence MIT license
Site web https://symfony.com/

Symfony est un framework MVC libre écrit en PHP. Il fournit des fonctionnalités modulables et adaptables qui permettent de faciliter et d’accélérer le développement d'un site web.

Installation

  • Linux
curl -s https://getcomposer.org/installer | php
composer.phar create-project symfony/framework-standard-edition <Install_PATH> 2.8.0
Would you like to install Acme demo bundle? [y/N] N
Creating the "app/config/parameters.yml" file
Some parameters are missing. Please provide them.
database_driver (pdo_mysql):
database_host (127.0.0.1):
database_port (null):
database_name (symfony): arii
database_user (root): arii
database_password (null): PASSWORD
mailer_transport (smtp): smtp
mailer_host (127.0.0.1):
mailer_user (null):
mailer_password (null):
locale (en): fr
secret (ThisTokenIsNotSoSecretChangeIt)
  • Windows
http://symfony.com/download

Pré-requis pour Arii

DHTMLX :
Dans Symfony/web/

  • dhtmlx_scheduler
git clone https://github.com/DHTMLX/scheduler.git 
mv scheduler dhtmlx_scheduler
  • dhtmlx_gantt
git clone https://github.com/DHTMLX/gantt.git 
mv gantt dhtmlx_gantt 

Dans Symfony/vendor/

git clone https://github.com/DHTMLX/connector-php.git
mv connector-php dhtmlx 

Parsedown :
Dans Symfony/vendor/

git clone https://github.com/erusev/parsedown.git

Téléchargement d'Arii

Les points décrits ci-dessous sont également explicités dans la documentation de chaque module sous le titre "installation"

Dans /Symfony/src/Arii/

  • Portail
git clone https://github.com/AriiPortal/CoreBundle.git
git clone https://github.com/AriiPortal/UserBundle.git
git clone https://github.com/AriiPortal/AdminBundle.git
git clone https://github.com/AriiPortal/ConfigBundle.git
git clone https://github.com/AriiPortal/TimeBundle.git
  • Module pour JobScheduler

Suivi

git clone https://github.com/AriiPortal/JIDBundle.git

Opération

git clone https://github.com/AriiPortal/JOCBundle.git

Plan

git clone https://github.com/AriiPortal/DSBundle.git

Conception

git clone https://github.com/AriiPortal/JOEBundle.git
git clone https://github.com/AriiPortal/JoeXmlConnectorBundle.git

Cartographie

git clone https://github.com/AriiPortal/GraphvizBundle.git
  • Module pour d'autres applications

Jade (transfert de fichiers)

git clone https://github.com/AriiPortal/MFTBundle.git

Jasper-repport (génération de rapport)

git clone https://github.com/AriiPortal/ReportBundle.git

Autosys (suivi des traitements Autosys)

git clone https://github.com/AriiPortal/ATSBundle.git

Rundeck (suivi des tâches rundeck)

git clone https://github.com/AriiPortal/RunBundle.git

I5 (Suivi des traitements ISeries en passant par l'IFS)

git clone https://github.com/AriiPortal/I5Bundle.git

Configuration

Les points décrits ci-dessous sont également explicités dans la documentation de chaque module sous le titre "configuration"
Modification dans /Symfony/app/AppKernel.php

<?php

use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new Arii\UserBundle\AriiUserBundle(),
            new Arii\CoreBundle\AriiCoreBundle(),
            new Arii\ConfigBundle\AriiConfigBundle(),
            new Arii\AdminBundle\AriiAdminBundle(),
            new Arii\GraphvizBundle\AriiGraphvizBundle(),
            new Arii\JIDBundle\AriiJIDBundle(),
            new Arii\TimeBundle\AriiTimeBundle(),
            new Arii\ReportBundle\AriiReportBundle(),
            new Arii\MFTBundle\AriiMFTBundle(),
            new Arii\JOCBundle\AriiJOCBundle(),
            new Arii\DSBundle\AriiDSBundle(),
);

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }

        return $bundles;
    }
    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }
}

Modification dans /Symfony/app/config/parameters.yml
Afin d'intégrer Arii à votre environnement, la majorité des modifications se font en éditant le fichier de configuration :

/home/arii/Symfony/app/config/parameters.yml
  • Base de données du portail

Le portail a besoin d'une base de données, celle-ci peut-être locale ou distante, dédiée ou partagée.
La base doit être au standard JDBC, nous avons qualifié les bases Mysql, PostegreSQL et Oracle.

Les meilleures performances sont obtenues avec une base locale dédiée, MySQL (ou MariaDB).

Voici les paramètres de base de données du portail :

Paramètre Description
database_host Hôte de la base
database_port Port de connexion
database_name Nom de la base
database_user Utilisateur de connexion
database_password Mot de passe
database_driver Driver utilisé

Voici les valeurs utilisées dans notre machine virtuelle :

parameters:
    database_host: 127.0.0.1
    database_port: null
    database_name: arii 
    database_user: root
    database_password: root 
    database_driver: mysqli
  • Options de messagerie
Paramètre Description
mailer_transport Protocole
mailer_host Hôte de messagerie
mailer_user Nom d'utilisateur
mailer_password Mot de passe
secret Code d’authentification

Les paramètres de messagerie se présentent ainsi, dans notre VM :

    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: null
    mailer_password: null
    secret: 8cfa2bd0b50b7db00e9c186be68f7ce7465123d3
  • Paramètres du portail

Les paramètres du module portail définissent le chemin des différents composants utilisés par celui-ci.

Ci-dessous les définitions de chaque paramètre :

Paramètre Description
arii_modules Modules actifs
workspace Environnement de travail
Packages Emplacement des packages
perl Emplacement de Perl
java Chemin d’accès au JRE
ditaa Chemin d'accès au composant ditaa

Configuration utilisée dans notre Appliance virtuelle Arii :

#=====================
# Parametres Arii
#=====================
    arii_modules:   JID(ROLE_USER),DS(ROLE_USER),JOC(ROLE_USER),MFT(ROLE_USER),Report(ROLE_USER),GVZ(ROLE_USER)

    workspace: /home/arii/workspace
    packages:  %workspace%/packages
    perl:      perl
    java:      /home/arii/jre/bin/java
    ditaa:     /home/arii/Symfony/vendor/ditaa
  • Paramètres des bases de données

Les bases de données utilisées par les ordonnanceurs doivent être déclarées afin d'être suivies dans le module de Suivi.
Elles doivent être au standard JDBC et nécessitent la présence du driver approprié.

Paramètre Description
name Pseudonyme de la base
dbname Nom de la base
user Compte utilisateur
password Mot de passe
type Ordonnanceur
driver Chemin d'accès
host hôte de BDD
port port

Voici un exemple de configuration, ces paramètres peuvent être dupliqués et édités pour chaque base qui sera suivie par Arii.

        - name:     scheduler 
          dbname:   scheduler
          user:     root 
          password: root 
          type:     osjs
          driver:   mysqli
          host:     localhost
          port:     3306

Configuration en place dans l' appliance :

    databases:
       - name:     Ari'i 
         dbname:   %database_name% 
         user:     %database_user%
         password: %database_password%
         type:     osjs
         driver:   %database_driver%
         host:     %database_host% 
         port:     3306
       - name:     scheduler 
         dbname:   scheduler
         user:     root 
         password: root 
         type:     osjs
         driver:   mysqli
         host:     localhost
         port:     3306
       - name:     Postgres
         dbname:   scheduler
         user:     postgres 
         password: postgres 
         type:     osjs
         driver:   postgres 
         host:     localhost
         port:     5432 
       - name:     oracle
         type:     osjs
         driver:   oracle
         dbname:   oracle
         host:     10.0.0.17
         port:     1521
         user:     osjs
         owner:    osjs
         password: osjs

A noter : Seules les SGBD MySQL, Postgre et Oracle sont supportées.
Pour plus d'informations sur la compatibilité Oracle voir : Installation client oracle pour Ari'i

  • Connexion aux moteurs Jobscheduler

Depuis Arii 1.6 les moteurs doivent être spécifiés dans le fichier parameters.yml.

Les moteurs principaux sont définis en tant que connexion "0".
Si une instance est configurée en haute disponibilité (cluster actif/passif, backup cluster),
une connexion "1" devra donc être ajoutée avec les informations du moteur de backup.

Voici la définition des différents paramètres :

Paramètres généraux Description
name Nom de l'instance
type Ordonnanceur
database Nom de la base de données
Paramètres Shell Description
cmd Langage Shell
user Utilisateur
host Serveur
home Répertoire home
data Répertoire data
Paramètres REST Description
host Adresse de l'hôte
port Port
protocol Protocole
Path Chemin

Exemple (Appliance virtuelle Arii) :

    spoolers:
        - name:          arii
          type:          osjs
          database:      arii
          0:
            shell:
              cmd:       ~
              user:      arii 
              host:      localhost
              home:      /home/arii/jobscheduler/arii
              data:      /home/arii/jobscheduler/arii
            rest:
              host:      localhost
              port:      44444
              protocol:  http
              path:      ~ 
        - name:          scheduler 
          type:          osjs
          database:      scheduler
          0:
            shell:
              cmd:       ~
              user:      osjs 
              host:      localhost
              home:      /home/osjs/jobscheduler/scheduler
              data:      /home/osjs/jobscheduler/scheduler
            rest:
              host:      localhost
              port:      4444
              protocol:  http
              path:      ~
          1:
            shell:
              cmd:       ~
              user:      osjs
              host:      localhost
              home:      /home/osjs/jobscheduler/scheduler-backup
              data:      /home/osjs/jobscheduler/scheduler-backup
            rest:
              host:      localhost
              port:      4445
              protocol:  http
              path:      ~
        - name: pgsql
          type: osjs
          database: postgres 
          0:
            shell:
              cmd:       ~
              user:      osjs
              host:      localhost
              home:      /home/osjs/jobscheduler/postgres
              data:      /home/osjs/jobscheduler/postgres
            rest:
              host:      localhost
              port:      5555 
              protocol:  http
              path:      ~


  • Connexion aux moteurs Autosys
Paramètres généraux Description
name Nom de l'instance
type Ordonnanceur
Paramètres Shell Description
cmd Langage Shell
user Utilisateur
host Serveur
Key Clef
home Répertoire home
data Répertoire data

Par exemple :

   spoolers:
       - name: 'Autosys Test'
           type: waae
           0:
               shell:
                   cmd: ssh
                   user: autosys
                   host: (ma_machine)
                   key: (ma_cle)
                   data:  (équivalent $AUTOSYS)
                   home: (équivalent $AUTOUSER)
  • Documents Autosys
    ats_doc: '/doc/{locale}/Jobs Autosys/{JOB}.job.yml'
  • Configuration des "vendor"

Les vendor désignent les composants additionnels dans Symphony,
nous utilisons graphviz pour le module de cartographie.

    graphviz_dot:    dot
    graphviz_images: /home/arii/Symfony/web/arii/images/silk 
  • Autres configurations
    • Emplacement des rapports
      Afin de pouvoir afficher les rapports dans le module consacré, il est impératif de déclarer le répertoire dans lequel ils sont stockés.
      i.e. : report_path: /home/arii/jobscheduler/arii/config/reports/output
    • Encodage des caractères
      charset: UTF-8

Modification dans /Symfony/app/config/routing.yml

arii_homepage:
    pattern:  /
    defaults: {_controller: AriiCoreBundle:Default:index }

arii_home:
    pattern:  /home/{_locale}
    defaults: { _controller: AriiCoreBundle:Default:index }
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

# ========================================
# Core Bundle
# ----------------------------------------
arii_core:
    resource: "@AriiCoreBundle/Resources/config/routing.yml"
    prefix:   /home/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

# ========================================
# Config Bundle
# ----------------------------------------
arii_Config:
    resource: "@AriiConfigBundle/Resources/config/routing.yml"
    prefix:   /config/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

# ========================================
# Admin
# ----------------------------------------
arii_Admin:
    resource: "@AriiAdminBundle/Resources/config/routing.yml"
    prefix:   /admin/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp


# ========================================
# JID
# ----------------------------------------
arii_jid:
    resource: "@AriiJIDBundle/Resources/config/routing.yml"
    prefix:   /jid/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

arii_jid_public:
    resource: "@AriiJIDBundle/Resources/config/routing_public.yml"
    prefix:   /public
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

arii_jid_nagios:
    resource: "@AriiJIDBundle/Resources/config/routing_nagios.yml"
    prefix:   /nagios
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp



# ========================================
# MFT
# ----------------------------------------
arii_mft:
    resource: "@AriiMFTBundle/Resources/config/routing.yml"
    prefix:   /mft/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp
# ========================================
# Graphviz
# ----------------------------------------
arii_GVZ:
    resource: "@AriiGraphvizBundle/Resources/config/routing.yml"
    prefix:   /gvz/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

# ========================================
# JOC
# ----------------------------------------
arii_JOC:
    resource: "@AriiJOCBundle/Resources/config/routing.yml"
    prefix:   /joc/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp
# ========================================
# TimeCode
# ----------------------------------------
arii_TC:
    resource: "@AriiTimeBundle/Resources/config/routing.yml"
    prefix:   /tc/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp
# ========================================
# Report
# ----------------------------------------
arii_Report:
    resource: "@AriiReportBundle/Resources/config/routing.yml"
    prefix:   /report/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp
# ----------------------------------------
# Housekeeping
# ----------------------------------------
arii_JID_purge:
    pattern:  /housekeeping/purge
    defaults: { _controller: AriiJIDBundle:DB:purge }

arii_JID_purge_history:
    pattern:  /housekeeping/purge_history
    defaults: { _controller: AriiJIDBundle:DB:purge_history }

arii_JID_purge_order_history:
    pattern:  /housekeeping/purge_order
    defaults: { _controller: AriiJIDBundle:DB:purge_order }

arii_JID_purge_history_out:
    pattern:  /housekeeping/purge/history/{DB}
    defaults: { _controller: AriiJIDBundle:DB:purgeHistory }

arii_JID_purge_orders_history_out:
    pattern:  /housekeeping/purge/orders/{DB}
    defaults: { _controller: AriiJIDBundle:DB:purgeOrdersHistory }

arii_JID_status_history:
    pattern:  /housekeeping/status
    defaults: { _controller: AriiJIDBundle:DB:status }

# ========================================
arii_JID_purge_history_public:
    pattern:  /public/purge/history
    defaults: { _controller: AriiJIDBundle:DB:purge_history }

arii_JID_purge_order_public:
    pattern:  /public/purge/orders
    defaults: { _controller: AriiJIDBundle:DB:purge_order }

arii_JID_purge_order_step_public:
    pattern:  /public/purge/steps
    defaults: { _controller: AriiJIDBundle:DB:purge_order_steps }

# ========================================
# Daily schedule
# ----------------------------------------
arii_ds:
    resource: "@AriiDSBundle/Resources/config/routing.yml"
    prefix:   /plan/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

# ========================================
# User Bundle
# ----------------------------------------
fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

fos_user_profile:
    resource: "@FOSUserBundle/Resources/config/routing/profile.xml"
    prefix: /profile

fos_user_register:
    resource: "@FOSUserBundle/Resources/config/routing/registration.xml"
    prefix: /register

fos_user_resetting:
    resource: "@FOSUserBundle/Resources/config/routing/resetting.xml"
    prefix: /resetting

fos_user_change_password:
    resource: "@FOSUserBundle/Resources/config/routing/change_password.xml"
    prefix: /change-password

arii_user:
    resource: "@AriiUserBundle/Resources/config/routing.yml"
    prefix:   /user/{_locale}
    requirements:
        _locale: en|fr|es|de|cn|ar|ru|jp

Démarrer le service

Dans le répertoire d'installation :

php app/SymfonyRequirements.php
php app/autoload.php
php app/console doctrine:schema:create
php app/console cache:clear
php app/console server:run

Maintenance

  • Mettre à jour le code :
cd ~/Symfony/src/Arii/${Bundle}/
git pull
  • Sauvegarder et purger les logs :
tar -czvf logSymfony_%d.tar.gz ~/Symfony/app/log/
rm -Rf ~/Symfony/app/log/*.log
  • Régénérer les caches :
rm -Rf Symfony/app/cache/*
  • Redémarrer du serveur httpd :
sudo service apache2 restart
ou
sudo service nginx restart
  • Redémarrer Symfony :
php app/console server restart



Installer MariaDB

   Installation de MariaDB

$> cd /home/arii $> sudo yum -y install MariaDB-server MariaDB-client

   Démarrer mariadb