Installation

Version 386 (Etienne Pallier, 02/24/2020 06:07 pm) → Version 387/388 (Etienne Pallier, 02/24/2020 06:07 pm)

h1. Labinvent 2.0 (cakephp3) - Installation

<u>* ATTENTION, &lt;u&gt;*ATTENTION, CETTE DOC EST OBSOLÈTE, LA NOUVELLE DOC EST SUR https://tinyurl.com/labinvent *</u> https://tinyurl.com/labinvent*&lt;/u&gt;

Cette page décrit la phase d'installation du logiciel.

*Un gros effort a été fait pour que cette doc soit le plus à jour possible, merci de bien vouloir la lire +ATTENTIVEMENT+*.
*Les auteurs de cette doc eux-mêmes la suivent +à la lettre+ (ligne par ligne, mot par mot), pourquoi donc feriez-vous autrement ?*
*N'hésitez pas aussi à la mettre à jour vous-mêmes quand c'est nécessaire.*

_La version la plus à jour est sur la page "Installation" du wiki du projet_ : https://projects.irap.omp.eu/projects/inventirap/wiki/Installation

[ [[Labinvent_nouvelle_version|Retour au sommmaire]] ]

{{toc}}

---

h2. LIENS UTILES

* HOWTO Format Redmine Wiki : http://www.redmine.org/projects/redmine/wiki/FrRedmineWikiFormatting

* *Fichier README* : https://gitlab.irap.omp.eu/epallier/labinvent/blob/master/README-LABINVENT.md

* *Version majeure en cours (2.7)*: https://projects.irap.omp.eu/versions/162

* Liste complète des évolutions: https://gitlab.irap.omp.eu/epallier/labinvent/commits/master

* Browse files (gitlab): https://gitlab.irap.omp.eu/epallier/labinvent/tree/master

---

h2. VERSION DE DEMO (en ligne)

Voici un site de démo de LabInvent.

Notamment, en s'y connectant avec le login "utilisateur", on peut voir le workflow par défaut qui s'affiche sur la page d'accueil (pour tout utilisateur lambda, non privilégié).

Logins disponibles (sans mdp), correspondant aux 3 profils principaux (excepté le profil "superadmin"):

"utilisateur", "responsable", et "admin"

http://planetoweb2.cesr.fr/labinvent2

---

h2. RECUPERATION du logiciel

*1) Deux options*

Deux options se présentent à vous :

* a) *soit vous récupérez une +version statique+* du logiciel, en le téléchargeant (pas besoin de login, c'est anonyme) : considérez alors cette version comme une *version de test jetable car il vous faudra recommencer pour obtenir chaque nouvelle version*, pas très pratique donc, mais rapide
* b) (*méthode préférée*) *soit vous récupérez une +version synchronisée+*, avec git (nécessité d'avoir un login), ce qui vous permettra de rester constamment à jour (sans réinstallation), et même de contribuer à l'évolution du logiciel si vous le désirez

*a) (+NON RECOMMANDÉ+) Téléchargement anonyme (version statique, non synchronisée, jetable)*

Vous pouvez télécharger la version actuelle du logiciel.

Pour cela, aller sur : https://gitlab.irap.omp.eu/epallier/labinvent/tree/master

Cliquez sur : "Download zip" dans le coin en haut à droite.

Double-cliquez dessus ou dézippez-le (ou lancez la commande gzip -d labinvent.zip). Vous devriez avoir un dossier "labinvent.git".

Dans sa documentation, le logiciel sera désigné par "LABINVENT".

Vous pouvez renommer "labinvent.git" en "labinvent" si vous le souhaitez ("mv labinvent.git labinvent" ou clic droit->Renommer).

*b) (+RECOMMANDÉ+) Récupérer le logiciel via GIT (version dynamique, synchronisée, nécessité d'un login)*

Pour cette option, vous devez avoir un login. Si vous n'avez pas déjà un login, allez sur la page https://gitlab.irap.omp.eu/users/sign_in,
puis remplissez la section "Sign up". Ensuite, envoyez un email à epallier et à ebourrec (AT irap.omp.eu)
en demandant l'autorisation d'accéder au gitlab du projet labinvent. On vous donnera alors la procédure à suivre pour vous connecter.

(Si vous utilisez Windows, vous DEVEZ avant tout installer git pour windows, voir plus bas "Obtenir git pour windows")

En récupérant directement le logiciel via git, vous allez avoir une version dynamiquement synchronisée.
Vous serez donc en mesure de la mettre à jour dès qu'une nouvelle version sera disponible avec la commande "git pull".

* (Depuis Eclipse : Voir plus bas, section "A L'ATTENTION DES UTILISATEURS D'ECLIPSE")

* Depuis un terminal:

<pre>
git clone https://gitlab.irap.omp.eu/epallier/labinvent.git labinvent
</pre>

_(Ou aussi depuis ssh, seulement au sein de l'IRAP : git clone git@gitlab.irap.omp.eu:epallier/labinvent.git labinvent)_

Si vous obtenez ce message d'erreur ... :
<pre>
fatal: unable to access 'https://gitlab.irap.omp.eu/epallier/labinvent.git/': Peer's certificate issuer has been marked as not trusted by the user.
</pre>

...tapez cette commande (et relancez une commade "git clone"):
<pre>
$ git config --global http.sslVerify false
</pre>
Puis vérifiez que votre configuration soit OK :
<pre>
$ git config --list
(ou encore : cat ~/.gitconfig)

[user]
name = Etienne Pallier
email = epallier AT irap...
[http]
sslVerify = false
[push]
default = simple
</pre>

(Si vous récupérez le projet pour la première fois, git vous demandera un login et un mot de passe)

Git a normalement créé un dossier "labinvent" qui contiendra votre projet (avec un sous dossier ".git" qui sert à la synchronisation avec le dépot git).

Par défaut, vous êtes sur la branche "master" du git. Elle contient une version stable du logiciel. Si vous désirez seulement utiliser ce logiciel SANS LE MODIFIER, alors restez sur la branche "master", vous y serez très bien ;-). Attention seulement de ne faire AUCUNE modification sur la branche master !!!

Par contre, si vous souhaitez contribuer au développement de ce logiciel, et donc le modifier, +vous devez absolument changer de branche+ et vous placer sur la branche "dev" (ou bien une sous-branche dédiée comme "dev-IRAP", ou "dev-LATMOS") :
<pre>
cd labinvent/
$ git branch
$ git checkout dev
$ git branch
</pre>

*Seulement pour Windows* :

Obtenir git pour windows :

* Téléchargez git sur https://git-scm.com/download/win
* Lancez l'installation (gardez la configuration par défaut)
* Une fois installé, lancer une invite de commande (Touche Windows+R, tapez cmd, touche entrer)
<pre>
$ git config --global http.sslVerify false
</pre>
Vous pouvez désormais utiliser git depuis une invite de commande ou depuis l'interface graphique de git.

*2) Préparation*

* Si jamais votre dossier "labinvent" appartient à root (vous avez fait un "git clone" depuis root...), il serait préférable que vous en soyez vous-même (ou un autre user) le propriétaire :
> sudo chown -R nom_utilisateur labinvent/

---

h2. INSTALLATION

h3. Plateformes testées

*- Fedora 20* (version test Thibault Ajas, IRAP, avril 2017)

*- Centos 6.6* (version de "production", SI IRAP ) :
- PHP : 5.6.22
- Mysql : 5.1.73-3.el6_5
- Apache : 2.2.15-39.el6.centos

*- Debian GNU/Linux 8.5* (jessie) (version de "production", IAS) :
- PHP : 5.6.22
- Mysql : MariaDB 10.0.25
- Apache : 2.4.10

*- Scientific Linux (=Centos) 6.4* (version dev/test Etienne Pallier linux, IRAP) :
- PHP : 5.6.30
- MYSQL : 5.5.56
- APACHE : 2.2.15

*- UBuntu 14.04.4* (Ancienne version dev/test Alexandre Cases, IRAP) :
- PHP : 5.5.9 (ne suffit plus)
- MYSQL : 5.5.47
- Apache : 2.4.7

*- (17/1/18) Mac OS 10.13.2 avec brew* (version dev/test Etienne Pallier, IRAP) :
- PHP 7.2.0 + MySQL 5.7.20 + Apache 2.4.28

*- Mac OS 10.12.5 avec XAMPP* 5.6.3 et 7.1 (version dev/test Etienne Pallier, IRAP) :
- PHP 5.6.3 + MySQL 5.6.21 + Apache 2.4.10
- PHP7.1.6 + MariaDB 10.1.24 + Apache 2.4.25

h3. A/ PREREQUIS

Ce logiciel est multiplateforme (Linux, MacOS, et Windows).
Il nécessite une combinaison "AMP" pour fonctionner, soit les 3 pré-requis suivants :

* un serveur web Apache (récent)
* un serveur de base de données Mysql (récent)
* le langage *Php en version 7.x* (recommandé), php 5.6 étant toujours supporté (pour le moment)
* (N'installez PAS le framework CakePhp, il sera installé automatiquement pour vous !)

Si ce tiercé est déjà présent sur votre OS, vous pouvez passer à l'étape suivante (B/ Installation), et revenir ici seulement en cas de problème de configuration.

Sur Windows, vous pouvez utiliser Wampserver ou XAMPP qui regroupent ces 3 éléments (il n'y aura rien d'autre à faire ensuite).

Sur Mac, vous pouvez installer chacun des 3 éléments séparément via HomeBrew (ou MacPort), ou plus simplement utiliser XAMPP ou MAMP, ou encore télécharger le paquet binaire Mac correspondant à chaque élément.

*Voici la démarche à suivre sur Linux* :

h4. *1) Installation des prérequis*

* *+Exemple pour Mac OS 10.13 avec brew+ (fait en janvier 2018) :*
((
Dans le détail :
OLD: https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions
NEW:
1 - https://getgrav.org/blog/macos-mojave-apache-upgrade-homebrew
2 - https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions
))
<pre>
Install Xcode:
$ xcode-select --install

Install homebrew :
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew --version
$ brew doctor
$ brew tap homebrew/php
$ brew update
$ brew upgrade

Install Apache:
Stop pre-installed Mac OS Apache:
$ sudo apachectl stop
$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
Install brew version:
$ brew install httpd
$ sudo brew services start httpd
Go http://localhost:8080 and check it displays "It Works!"
$ sudo apachectl -k restart
$ tail -f /usr/local/var/log/httpd/error_log
$ sudo apachectl start
$ sudo apachectl stop
$ sudo apachectl -k restart
Edit /usr/local/etc/httpd/httpd.conf :
- Listen 80 instead of 8080
- you can change DocumentRoot "/usr/local/var/www" if you want (like DocumentRoot /Users/your_user/Sites, but I did not)
- <Directory /usr/local/var/www> : AllowOverride All
- uncomment LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
- user and group : by default "daemon" (or _www), but you could change to
User your_user
Group staff
(I did not)
- ServerName localhost
$ sudo apachectl -k restart
Go to http://localhost:80 and check it displays "It Works!"

Install PHP (as many versions as you want):
$ brew install php56 --with-httpd
$ brew install php56-intl
$ brew unlink php56
$ brew install php70 --with-httpd
$ brew install php70-intl
$ brew unlink php70
$ brew install php71 --with-httpd
$ brew install php71-intl
$ brew unlink php71
$ brew install php72 --with-httpd
$ brew install php72-intl
Also, you may have the need to tweak configuration settings of PHP to your needs. A common thing to change is the memory setting, or the date.timezone configuration. The php.ini files for each version of PHP are located in the following directories:
/usr/local/etc/php/5.6/php.ini
/usr/local/etc/php/7.0/php.ini
/usr/local/etc/php/7.1/php.ini
/usr/local/etc/php/7.2/php.ini
Let's switch back to the first PHP version now:
$ brew unlink php72
$ brew link php56

Apache PHP Setup:
Edit /usr/local/etc/httpd/httpd.conf.
- Modify the paths as follows:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php72/libexec/apache2/libphp7.so
We can only have one module processing PHP at a time, so for now, comment out all but the php56 entry:
LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php7_module /usr/local/opt/php70/libexec/apache2/libphp7.so
#LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
#LoadModule php7_module /usr/local/opt/php72/libexec/apache2/libphp7.so
- Add these lines :
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
$ sudo apachectl -k restart

Validating PHP Installation:
Simply create a file called info.php in your DocumentRoot folder (/usr/local/var/www/ or Sites/). In that file, just enter the line:
<?php phpinfo();
Go to http://localhost/info.php

PHP Switcher Script:
We will install the sphp script into brew's standard /usr/local/bin:
$ curl -L https://gist.github.com/w00fz/142b6b19750ea6979137b963df959d11/raw > /usr/local/bin/sphp
$ chmod +x /usr/local/bin/sphp
Check your PATH :
$ echo $PATH
should be like : /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
In ~/.bash_profile :
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
At this point, I strongly recommend closing ALL your terminal tabs and windows. This will mean opening a new terminal to continue with the next step.

Apache PHP Setup - Part 2:
Edit /usr/local/etc/httpd/httpd.conf:
Replace all your LoadModule php* with ONLY this :
# Brew PHP LoadModule for `sphp` switcher
LoadModule php5_module /usr/local/lib/libphp5.so
#LoadModule php7_module /usr/local/lib/libphp7.so

$ sphp 70
should switch to php7 !!!
Go to http://localhost/info.php to check it is now Php7

Updating PHP and other Brew Packages:
$ brew update
$ brew upgrade
You will need to switch to each of your installed PHP versions and run update again to get updates for each PHP version and ensure you are running the version of PHP you intend

(Now, details are in https://getgrav.org/blog/macos-sierra-apache-mysql-vhost-apc)

MySQL:
$ brew update
$ brew install mysql
(or "mariadb")
$ brew services start mysql
$ /usr/local/bin/mysql_secure_installation
(To stop : $ brew services stop mysql)

Apache Virtual Hosts:
Edit httpd.conf:
LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so
# Virtual hosts
Include /usr/local/etc/httpd/extra/httpd-vhosts.conf
Edit /usr/local/etc/httpd/extra/httpd-vhosts.conf:
<VirtualHost *:80>
#DocumentRoot "/Users/your_user/Sites"
DocumentRoot "/usr/local/var/www"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/Users/your_user/Sites/grav-admin"
ServerName grav-admin.test
</VirtualHost>
(We used to recommend using .dev domain name, but since Chrome 63 forces all .dev domains to use SSL, this guide has been updated to use .test)
Listen 8082
#NameVirtualHost *:8082
<VirtualHost *:8082>
<Directory /PROJECTS/LABINVENT/SOURCE/labinvent2>
#Options Indexes FollowSymLinks ExecCGI Includes
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
#ServerName labinvent
#ServerAlias labinvent
ServerAdmin epallier AT irap...
DocumentRoot "/PROJECTS/LABINVENT/SOURCE/labinvent2"
#DocumentRoot "/Users/epallier/MYPROJECTS/LABINVENT/SOURCE/WITH_LAST_CAKEPHP_2/cakephp/app/webroot"
#DocumentRoot "/Users/epallier/projects/LABINVENT/SOURCE/WITH_LAST_CAKEPHP_2/cakephp/app/webroot"
#DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/labinvent2015/cakephp/app/webroot"
#DocumentRoot "/Users/epallier/ECLIPSE_WORKSPACES/workspace_php/labinvent2015/cakephp/app/webroot"
# logs are relative to <ServerRoot> :
ErrorLog logs/labinvent2.error_log
CustomLog logs/labinvent2.access_log combined
</VirtualHost>

Xdebug:
sphp 56
brew install php56-xdebug --build-from-source
sphp 70
brew install php70-xdebug --build-from-source
sphp 72
brew install php72-xdebug --build-from-source
Go to http://localhost/info.php to check xdebug

</pre>

* *+Exemple pour ScientificLinux (CentOS) 6.4+ (fait en juillet 2017) :*

ATTENTION, SUR CENTOS (ou dérivé), il vaut mieux désactiver selinux

Pour mettre à jour PHP de la 5.6 à la 7.1 :
--> https://blog.remirepo.net/post/2016/12/05/Install-PHP-7.1-on-CentOS-RHEL-or-Fedora
<pre>
$ sudo yum update kernel
$ sudo yum update

$ sudo yum install yum-utils
$ sudo yum-config-manager --enable remi-php71
$ sudo yum update
=> mais il y a un conflit à cause de phpmyadmin, donc je supprime ce package :
$ sudo yum erase phpmyadmin
$ sudo yum update

$ php -v => 7.1

Redémarrage Apache:
$ sudo /etc/init.d/httpd restart

Tentative de réinstaller phpmyadmin
$ sudo yum install phpmyadmin
=> toujours un conflit, je laisse tomber, dommage...

Tentative d'accelerer php 7:
(https://community.1and1.com/php-7)
$ sudo yum install php71-php-opcache
Creer un repertoire .opcache/ dans le webroot/ du projet:
$ cd webroot/
$ mkdir .opcache/
$ chmod 777 .opcache/

Modifier php.ini :
$ sudo vi /etc/php.ini
Ajout des lignes suivantes :
; EP added this for opcache (Jul 2017):
zend_extension=opcache.so;
opcache.enable=1;opcache.memory_consumption=32;
opcache.interned_strings_buffer=8;
opcache.max_accelerated_files=3000;
opcache.revalidate_freq=180;
opcache.fast_shutdown=0;
opcache.enable_cli=0;
opcache.revalidate_path=0;
opcache.validate_timestamps=2;
opcache.max_file_size=0;
opcache.file_cache=/projects/labinvent/labinvent2/webroot/.opcache;
opcache.file_cache_only=1;

Faire un lien vers l'extension opcache.so
$ cd /usr/lib64/php/modules/
$ sudo ln -s /opt/remi/php71/root/usr/lib64/php/modules/opcache.so

Verifier que .opcache/ contient bien des données (du cache)

Mais je ne vois pas vraiment d'accélération...
</pre>


* *+Exemple pour CentOS 6.7+ (fait en 2016) :*

ATTENTION, SUR CENTOS, il vaut mieux désactiver selinux

Mettre à jour le serveur:
<pre>
$ sudo yum kernel
(restart)
$ sudo yum update
</pre>

Pour installer Apache, MySQL & PHP 5.3 :
--> https://www.zerostopbits.com/how-to-install-apache-mysql-and-php-on-centos-6-7/

Pour mettre à jour PHP de la 5.3 à la 5.6
--> https://www.zerostopbits.com/how-to-upgrade-php-5-3-to-php-5-6-on-centos-6-7/

Mettre à jour Mysql (version 5.1 à 5.5):
<pre>
$ sudo yum update
</pre>

* *+Exemple pour une distribution UBuntu+ 14.04.4 (fait en 2016) et 14.04.5 (Mai 2017) :*

%{color:red;} /!\ Par défaut, la version de php installée ici est php5.5 qui ne suffit plus. Si vous souhaitez installer la version 5.6, remplacez TOUS les "php5" par "php5.6", et si vous voulez la version 7.1, remplacez TOUS les "php5" par "php7.1" /!\%

Pour commencer il faut mettre à jour les "repository" de apt :
<pre>
$ sudo apt-get update && sudo apt-get upgrade
</pre>

Installer un serveur web (Apache) :
<pre>
$ sudo apt-get install apache2
</pre>

Installer un serveur de base de données (MySQL):
<pre>
$ sudo apt-get install mysql-server
</pre>

Installer le langage PHP en version 5.5.9 minimum (5.6 recommandé)
<pre>
$ sudo apt-get install php5 php-pear
$ sudo apt-get install php5-mysql
</pre>

Installer phpmyadmin et le configurer
<pre>
$ sudo apt-get install phpmyadmin
$ sudo dpkg-reconfigure -plow phpmyadmin
</pre>
/!\ Lorsque vous aurez l'écran suivant, n'oubliez pas d'appuyer sur la touche "espace" avant la touche "entrée" /!\

!https://i.stack.imgur.com/Q9qYW.png!

Afin d'avoir cela :

!https://i.stack.imgur.com/VIh0U.png!

Si, en visitant http://localhost/phpmyadmin/ vous avez l'erreur "The mcrypt extension is missing. Please check your PHP configuration.", executez les commades suivantes :
<pre>
$ sudo apt-get install php5-mcrypt
$ sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available
$ sudo php5enmod mcrypt
$ sudo service apache2 restart
</pre>

* *+Exemple pour une distribution Fedora 20++ (fait en avril 2017) :*

https://www.digitalocean.com/community/tutorials/how-to-install-lamp-linux-apache-mysql-php-on-fedora

Pour commencer il faut mettre à jour l'OS :
<pre>
$ sudo dnf update dnf
$ sudo dnf update kernel
$ sudo dnf update
</pre>

Installer git:
<pre>
$ sudo dnf install git
</pre>

Installer php :
<pre>
$ sudo dnf install php
$ sudo dnf install php-mysql
</pre>

Installer un serveur web (Apache) :
<pre>
$ sudo dnf install httpd
$ sudo systemctl enable httpd
(ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service')
$ sudo systemctl start httpd
</pre>

Installer un serveur de base de données (MySQL):
<pre>
$ sudo dnf install mariadb mariadb-server -y
$ sudo systemctl enable mariadb
(ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service')
$ sudo systemctl start mariadb
$ sudo mysql_secure_installation
</pre>

(OPTIONNEL) Installer phpmyadmin (par defaut accessible uniquement depuis localhost), utile pour gérer plus facilement la BD :
<pre>
$ sudo dnf install phpmyadmin
$ sudo systemctl restart httpd

Pour Ubuntu:
sudo apt-get php5-mcrypt
sudo apt-get install phpmyadmin
Pensez à activer l'extension mcrypt : sudo php5enmod mcrypt
</pre>

</pre>

---

h4. *2) Configuration des prérequis*

* *+Configuration de Php+*
Pour savoir où est le fichier php.ini:
php -r "print phpinfo();" | grep ".ini"
(sur XAMPP, c'est dans /Applications/XAMPP/xamppfiles/etc/php.ini)

* *Extension PHP "intl"*:
Vérifier qu'elle est activée dans le php.ini:
<pre>
php --ini|grep intl
Sinon, l'ajouter dans le php.ini:
extension=intl.so
</pre>
Vérifier qu'elle est bien installée :
<pre>
$ php -m| grep intl
(ça devrait retourner "intl")

Sinon, l'installer:

Ubuntu:
$ sudo apt-get install php5-intl

CentOS:
$ sudo yum install php-intl

MacOS avec brew:
Installer l'extension
Les extensions sont recherchées dans /usr/local/Cellar/php72/7.2.0_11/lib/php/
$ brew install php72-intl
Fichier créé /usr/local/etc/php/7.2/conf.d/ext-intl.ini donne chemin de l'extension : /usr/local/opt/php72-intl/intl.so
(Pour info, le fichier php.ini est dans /usr/local/etc/php/7.2/php.ini, mais c'est inutile de le modifier)

MacOS avec XAMPP:
cf http://stackoverflow.com/questions/27886117/php-intl-installation-on-xampp
Il se pourrait que vous ayez besoin de ré-exécuter l'installeur de XAMPP afin de cocher l'option "XAMPP Developer Files", si vous ne l'aviez pas déjà fait lors de votre installation de XAMPP
cd /Applications/XAMPP/bin
sudo ./pecl install intl
(Vérifier qu'elle a bien été installée dans /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20131226/)
Attention, cette méthode semble ne plus fonctionner avec XAMPP 7 (qui inclut php 7).
Sur Mac, j'ai dû installer l'extension intl via macport :
sudo port install php71-intl
Puis copie de cette extension dans le dossier de XAMPP :
sudo cp /opt/local/lib/php71/extensions/no-debug-non-zts-20160303/intl.so XAMPP_716-0/xamppfiles/lib/php/extensions/no-debug-non-zts-20160303/
Redémarrer Apache
</pre>

* *Dossier de log (optionnel)*:
Dans le fichier /etc/php5/apache2/php.ini (ou /etc/php.ini sur CentOS), vous devez positionner votre répertoire de log :
<pre>
error_reporting = E_ALL
error_log = /var/log/php/error.log
max_input_time = 30
</pre>
Ensuite il vous faudra peut-être créer le dossier en question et donner à Apache les droits sur ce dossier (www-data pour Ubuntu, apache pour CentOS...):
<pre>
sudo mkdir /var/log/php
sudo chown www-data /var/log/php
</pre>

* *Recharger la configuration du serveur Web*
<pre>
$ sudo service httpd reload
(CentOS: $ sudo systemctl reload httpd)
(MacOS: $ sudo apachectl restart)
</pre>

* *OPTIONNEL - +Configuration du serveur web+ (Apache)*

Ces configurations sont nécessaires sur Ubuntu, mais pas forcément sur CentOS/Fedora :

* KeepAlive:
Editer le fichier de configuration du serveur web (/etc/apache2/apache2.conf sur Ubuntu, /etc/httpd/conf/http.conf sur CentOS/Fedora) et mettre le paramêtre "KeepAlive" à "Off" :
<pre>
KeepAlive Off
</pre>

* event et prefork modules:
Par défaut Apache utilise un "event module" et PHP un "prefork module".
Il faut désactiver le 1er module et activer le second :
<pre>
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
</pre>

* Activer le mode rewrite de Apache:
<pre>
sudo a2enmod rewrite
</pre>

* Autoriser les fichiers .htaccess sur le site :
(cf http://book.cakephp.org/3.0/fr/installation.html#url-rewriting)
Allez dans le fichier /etc/apache2/apache2.conf (ou httpd.conf sur CentOS), vérifier que la propriété 'AllowOverride' soit à la valeur 'All' pour le dossier Labinvent :
<pre>
<Directory /var/www/html/labinvent>
Options FollowSymLinks
AllowOverride All
</Directory>
</pre>
NB : Si Labinvent n'est pas dans le repertoire des sites webs :
- faire un lien dans le dossier web racine de Apache (/var/www/html/) vers le repertoire d'installation de Labinvent
- sinon, vous pouvez tenter de mettre son chemin absolu :
<pre>
<Directory /chemin/abosolu/vers/labinvent>
</pre>
NB: Une autre solution plus "propre" consisterait à créer un virtual host dédié pour Labinvent, sur un port 808x (8081, 8082, ...)
(TODO: mettre ici un exemple de config)

* *Recharger la configuration du serveur Web*
<pre>
$ sudo service httpd reload
(CentOS: $ sudo systemctl reload httpd)
(MacOS: $ sudo apachectl restart)
</pre>

h3. B/ Installation du logiciel LabInvent

<pre>
cd install/
./installation.sh
</pre>

Attention: sur Mac, utiliser installation-macos.sh au lieu de installation.sh

(vous pourriez éventuellement le faire en tant qu'administrateur "root", mais ça n'est pas nécessaire, le script fera quelques petits "sudo" seulement au besoin).
(Conseil : à la plupart des questions, laissez les réponses par défaut)

---

---

h3. C/ TESTS

* Verifiez que la BD d'inventaire (par défaut "labinvent" sauf si vous lui avez donné un autre nom) à bien été créée (avec phpmyadmin par exemple).

* Verifiez que les tests passent :
placez-vous à la racine du projet, exécutez la commande ./TESTS.sh
(équivalent à 'vendor/bin/phpunit' ; si ça ne marche pas, essayez 'vendor/phpunit/phpunit/phpunit')
(Php7 utilise Phpunit 6 alors que Php 5 utilise Phpunit PHPUnit 5.7)

* Performance :

* Sur Mac OS 10.13 avec brew :

* Avec php5.6, les 94 tests s'exécutent en 55 secondes
* Avec php7.2, les 94 tests s'exécutent en 49 secondes

* Sur Mac OS 10.12 avec XAMPP :

* En php5.6, les 53 tests s'exécutent en 25-26 secondes
* En php7.1, les 53 tests s'exécutent en 9-10 secondes, soit 2 à 3 fois plus vite !!! (vive Php 7)

* Sur ScientificLinux (CentOS) 6.4 (serveur de test pweb) :

* En php5.6, les 53 tests s'exécutent en 20 secondes
* En php7.1, les 53 tests s'exécutent en 16-17 secondes, soit pas beaucoup plus rapide, bizarre...

* Sur CentOS 6.4 (serveur de production), dans une VM :
* En php5.6 avec phpunit 5.7, les 53 tests s'exécutent en 47 secondes !!!
* En php7.1, les 53 tests s'exécutent en ??? (Php7, c'est pour très bientôt...)


PS : Pour n'exécuter que certains tests :

<pre>
Marquer le(s) test voulu avec une annotation :
/**
* @group failing
* Tests the api edit form
*/
public function testEditAction()

Ensuite, exécuter avec : phpunit --group failing

Attention, ne pas oublier d'enlever ces annotations avant le commit !

On peut attribuer plusieurs groupes à un test :
/**
* @group failing
* @group bug2204
*/
public function testSomethingElse()
</pre>

---

h3. D/ ACCES A L'APPLICATION WEB

Où placer le dossier "labinvent" ?

En admettant que l'application soit installée localement sur votre pc ou serveur, il y a 3 moyens d'accéder (localement) au site web de l'application LabInvent :

* (1) Soit classiquement via "http://localhost/labinvent"

* (2) Soit via un port dédié tel que par exemple "http://localhost:8081"

* (3) Soit via un nom de serveur dédié tel que par exemple "http://labinvent.test"

Voici comment faire dans chacun de ces 3 cas :

* (1) :

* soit vous déplacez le dossier "labinvent/" directement dans le repertoire des sites webs du serveur web local (DocumentRoot, par exemple /var/www/html/ ou /var/www/html/localhost/public_html/, ...)
* soit vous laissez ce dossier là où il est et :
- vous faites un lien depuis votre DocumentRoot (/var/www/html/ ou autre) vers ce dossier labinvent/
- ou bien vous indiquez au serveur web où le trouver via une directive dans le fichier de configuration du serveur web httpd.conf :
<pre>
Alias /labinvent /Users/epallier/Documents/_W_more/PROJECTS/LABINVENT/SOURCE/labinvent2
<Directory /Users/epallier/Documents/_W_more/PROJECTS/LABINVENT/SOURCE/labinvent2/>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</pre>

* (2) : utiliser un Virtual Host avec un port dédié (ici 8081) :

<pre>
Listen 8081
<VirtualHost *:8081>
<Directory /PROJECTS/LABINVENT/SOURCE/labinvent2>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ServerAdmin epallier AT irap...
DocumentRoot "/PROJECTS/LABINVENT/SOURCE/labinvent2"
# logs are relative to <ServerRoot> :
ErrorLog logs/labinvent2.error_log
CustomLog logs/labinvent2.access_log combined
</VirtualHost>
</pre>

* (3) : utiliser un Virtual Host avec un nom de serveur (ici labinvent.test) :

Il faut d'abord ajouter le nom du serveur (ici labinvent.test) dans votre fichier /etc/hosts :
<pre>
127.0.0.1 labinvent.test
</pre>

Puis créer un hôte virtuel de ce genre :
<pre>
<VirtualHost *:80>
ServerName labinvent.test
ServerAdmin epallier AT irap...
DocumentRoot "/PROJECTS/LABINVENT/SOURCE/labinvent2"
# logs are relative to <ServerRoot> :
ErrorLog logs/labinvent2.error_log
CustomLog logs/labinvent2.access_log combined
<Directory /PROJECTS/LABINVENT/SOURCE/labinvent2>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
</pre>

h3. E/ CONFIGURATION DU SITE WEB

Le site est maintenant installé, il vous faut maintenant le configurer.
Si vous voulez le conserver, le script de creation de la BD est database/build.sql (s'il existait déjà avant votre installation, il a été sauvegardé dans build.sql.ORIG).
Votre fichier de configuration est config/app.php (s'il existait déjà avant votre installation, il a été sauvegardé dans app.php.ORIG).

* Tester l'accès web à l'application : http://localhost/labinvent (ou bien http://localhost:8081 si vous avez créé un virtual host sur le port 8081 pour labinvent)
Vous devriez arriver par défaut sur une page correspondant au mode install, elle vous indique la bonne configuration de l'application et de ses dépendances.
Vérifier simplement que TOUS LES POINTS SONT AU VERT.
(La page affichera un message si l'URL-Rewriting ne fonctionne pas correctement).
Si tout est au vert, passez à l'étape suivante (D/ Configuration de l'application).
Sinon (il y a des points rouges), reportez-vous ci-dessous à l'extension qui pose problème, pour l'installer ou la configurer:

* Extension PHP "mbstring" et librairie "zlib"
La collection de librairies est normalement déja installée avec PHP en tant que dépendance, sinon faire :
<pre>
sudo apt-get install libapache2-mod-php5
</pre>
=> Redémarrer votre serveur et vérifier que la ligne correspondant à l'extension soit passée au vert.

* Librairie PHP "php-gd"
<pre>
sudo apt-get install php5-gd
</pre>
=> Redémarrer votre serveur et vérifier que la ligne correspondant à l'extension soit passée au vert.
Si ce n'est toujours pas le cas, aller dans le fichier /etc/php5/apache2/php.ini :
Vérifier que la ligne suivante est présente et décommentée (absence de ";" devant la ligne) sinon il faut la rajouter :
<pre>
extension=gd.so
</pre>

* URL-Rewriting
Il est possible que le mode rewrite ne fonctionne pas correctement si les fichiers .htaccess dans la racine et dans webroot disparaissent. Sur certains systèmes les fichiers commençant par un point peuvent disparaitre lors d'une copie. Si c'est le cas pour vous, voici le contenu de ces deux fichiers et leurs emplacements :
<pre>
Fichier ./.htaccess :
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>

Fichier ./webroot/.htaccess :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
</pre>

* Une fois que tout est au vert, redémarrer votre serveur Web et vérifier que la ligne correspondant à l'extension manquante soit passée au vert.
<pre>
sudo service apache2 restart
(ou simplement le recharger: utiliser "reload" au lieu de "restart")
</pre>

---

h3. F/ CONFIGURATION DU LOGICIEL D'INVENTAIRE

* Si vous n'y êtes pas déjà, allez sur la page d'accueil de LabInvent : http://localhost/labinvent (ou bien http://localhost:8081 si vous avez créé un virtual host sur le port 8081 pour labinvent)

* Depuis la page web de configuration "Configurer votre Labinvent", cliquez sur le lien "Editer la configuration générale" (en bas à gauche) pour configurer le logiciel, configurez selon vos besoins. ATTENTION, N'ACTIVEZ PAS LE MODE LDAP POUR LE MOMENT, on le fera plus tard.
Cliquez sur "Valider"

* Maintenant, sortez du mode "installation" en cliquant sur le bouton "Stopper le mode installation"
_Si vous voulez revenir au mode "installation", allez dans le dossier database/ et exécutez simplement ./mode_panique.sh (./mode_panique_macos.sh sur Mac OS) puis revenez sur la page d'accueil_

* Désactivez (manuellement) le mode DEBUG général (différent de celui proposé dans la configuration ci-dessus) :
Allez à la racine du projet, et ouvrez votre fichier de configuration générale de labinvent (config/app.php)
<pre>
Allez environ à la ligne 12 (au début du fichier):
'debug' => filter_var(env('DEBUG', true), FILTER_VALIDATE_BOOLEAN),

Et remplacez le true par false, comme ceci :
'debug' => filter_var(env('DEBUG', false), FILTER_VALIDATE_BOOLEAN),
</pre>

* Connectez-vous à l'aide du login utilisateur créé lors de l'installation (par défaut "superadmin"), avec le mot de passe "login".
Il vous permet de vous connecter en tant que "super administrateur" pour pouvoir configurer l'application.
Vérifiez que c'est bien le cas : sur la page d'accueil, vous devriez avoir une ligne qui affiche "Vous êtes connecté en tant que Nom Prénom et avec le niveau d'authentification Super Administrateur."
NB1 : Les autres comptes utilisateurs que le script d'installation aura créé ont aussi le même mot de passe par défaut : "login"
NB2 : Il y a toujours un utilisateur par défaut en mode "SANS LDAP", il s'agit de l'utilisateur "_fake_ldap_user_" avec le mot de passe "_fake_ldap_user_pass" (il a le profil minimum, c'est à dire "Utilisateur" ; il est utile notamment pour les tests, afin de tester le profil "Utilisateur" accordé par défaut à toute personne du ldap qui n'a pas de privilège particulier)

* Si vous désirez encore modifier la configuration générale de l'application :
Dans le menu latéral, cliquez sur le lien "Outils", puis sur "Configuration générale de l'application", puis sur "Editer la configuration"

* Ensuite retournez dans la liste des outils et cliquez sur "Gérer le contenu variable de l'application".
Sur cette page vous aurez accès à toutes les données statiques communes aux matériels (catégories, groupes métier et techniques, types de suivi, ...). Vous pouvez en ajouter, en supprimer ou les modifier...

---

h3. G/ Gestion de l'authentification des utilisateurs via un annuaire LDAP

Labinvent peut être utilisé avec un annuaire LDAP. Si c'est ce que vous voulez, voici comment faire.

*ATTENTION* : après être passé en mode LDAP, vous risquez de ne plus pouvoir vous connecter à l'application !!!
Assurez-vous donc d'abord que votre login super administrateur (par défaut "superadmin") porte le MEME NOM que votre login ldap. Si c'est actuellement "superadmin", remplacez-le par votre login ldap. Pour cela, allez dans le menu "Outils", puis "Gérer les utilisateurs privilégiés", éditez l'utilisateur correspondant au super administrateur actuel, et changez son login et son mot de passe pour qu'ils correspondent exactement à ceux du LDAP. Déconnectez-vous puis reconnectez-vous avec ce nouveau login et vérifiez que vous êtes bien "super administrateur".
Maintenant que c'est fait, vous pouvez passer en mode LDAP :

* Si ce n'est pas déjà fait, connectez-vous à l'aide de votre login super administrateur (qui doit maintenant correspondre à votre login LDAP)

* Dans le menu de gauche, cliquez sur le lien "Outils", puis sur "Configuration générale de l'application", puis sur "Editer la configuration"

* Cochez "Utilisation du LDAP". Les options de configuration du LDAP s'affichent alors. Modifiez-les selon vos besoins

* Cliquez sur "Valider"

* Une fois la connexion au LDAP configurée, toute personne enregistrée dans l'annuaire LDAP peut alors se connecter au logiciel. Vérifiez que vous arrivez à vous connecter avec votre login LDAP qui a le profil super administrateur

* Par défaut, un utilisateur provenant du LDAP a un statut de simple "utilisateur". Pour lui attribuer un rôle supérieur (privilégié), il faut aller dans "Gérer les utilisateurs privilégiés" du menu "Outils" pour l'y ajouter (liste déroulante des utilisateurs du LDAP), en lui attribuant un rôle.

Mode panique : Si vous ne pouvez plus vous connecter à l'application (après être passé en mode LDAP), vous pouvez toujours repasser en mode "installation" comme au début : allez dans le dossier database/ et exécutez simplement ./mode_panique.sh (./mode_panique_macos.sh sur Mac OS) puis revenez sur la page d'accueil et connectez-vous avec votre login super administrateur ("superadmin" par défaut)

---

h3. H/ Configuration de l'envoi des emails (optionnel)

* En tant que SuperAdministrateur, aller dans "Outils" -> "Configuration générale de l'application", cliquez sur "Editer la configuration" et décocher "Ne pas envoyer les mails de management en local".

* L'envoi de mail est réalisé grâce à une adresse qu'il faut créer pour labinvent. Le protocole d'envoi est à définir dans config/app.php selon le serveur choisi. Lors de l'envoi d'un mail il faut utiliser le transport 'dev' en local.

* Pour changer de mail et de transport, il faut aller dans la section Email/Transport de config/app.php, et vérifier/adapter a votre convenance le bloc suivant :

<pre>
'EmailTransport' => [
'default' => [
'className' => 'Mail',
// The following keys are used in SMTP transports
'host' => 'localhost',
'port' => 25,
'timeout' => 30,
'username' => 'user',
'password' => 'secret',
'client' => null,
'tls' => null,
'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
],
...
</pre>

---

h3. I/ Etiquettes (optionnel)

Contenu déporté sur le document général (voir chapitre "Etiquettes") : https://tinyurl.com/labinvent

!etiqueteuse.jpg!

*Etiqueteuses installées sur le labo (IRAP ONLY)*

Dans l'idéal, il faudrait une étiqueteuse par gestionnaire financier :

SUR LE SITE ROCHE :

* Jean-Louis Lefort (site Roche 101) ==> installée le 1/12/14 (pc8008, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
Aucun problème, installée sur lettre G: - laissé 1 ruban D1 12mm de 7m en plus du ruban installé (3m seulement)
Pour info, ancienne installation faite sur son pc XP (23/5/14) (version soft DLS 8.5.1) Problème : si le logiciel DLS (Dymo Label Soft) est déjà ouvert, ça provoque une erreur Windows. Il faut donc refermer le logiciel avant de demander l'impression d'un ruban (c'est peut-être dû à cette version 8.5.1, la dernière version sortie, car sur l'ancienne version, je ne crois pas qu'il y ait cette erreur sur XP)
* Dorine Roma (site Roche 102) ==> installée le 1/12/14 (pc8006 Optiplex 7010, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
Installée sur lettre G: - ruban installé = 3m seulement
* Carole Lecinana (site Roche 104) ==> installée le 1/12/14 (pc8005 Optiplex 7010, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
Installée sur lettre G: - ruban installé = 3m seulement
* Marjorie Cloup (site Roche 104) ==> installée le 1/12/14 (pc8007 Optiplex 7010, Windows 7 Pro 2009 SP1, version soft DLS 8.5.1)
Installée sur lettre G: - ruban installé = 3m seulement

SUR LE SITE BELIN :

* Carole Gaiti (site Belin 61) ==> installée le 24/6/14 (pc Win 7 - version soft DLS 8.5.1)
* Dolores Granat (site Belin 80bis) ==> A FAIRE
* Isabelle Moro (site Belin B064) ==> A FAIRE
* De plus, Etienne Pallier (site Roche 63, Mac OS 10.7) et Elodie Bourrec (site Belin 59, Win 7) sont tous les deux équipés d'une étiqueteuse
* Enfin, l'étiqueteuse (ancienne) de Gilbert Rouaix (site Roche 19, Win XP) semble compatible puisqu'on a réussi à imprimer des étiquettes dessus.

Au total, ça fait donc 9.

---

h2. UTILISATION du logiciel

Depuis le site web de Labinvent, cliquez sur "Accueil", et ouvrez le "Guide d'utilisation" (pdf)

(Vous pouvez aussi aller à la page wiki "Utilisation" [[Documentation_utilisateurs]])

---

h2. MISE A JOUR du logiciel

*1) Noter votre version actuelle*

Voir sur la page d'accueil en bas à droite

*2) Mettre à jour le code*

Aller sur la racine du projet et exécuter :
<pre>
$ git pull
</pre>

*3) [Seulement si nécessaire] Mettre à jour la base de données*

Aller dans le dossier database/update/

*Exécuter TOUS les scripts qui sont d'une date postérieure à la date de votre version (notée à l'étape 1)*
Attention, il faut les exécuter *dans l'ordre chronologique*, un par un

Exemple:
<pre>
Placez vous dans ./database/update et éxécutez les commandes correspondantes :

./db-update-2016-06-03.sh

./db-update-2016-06-06.sh

./db-update-2016-06-07.sh
</pre>

Remarques :
* Le fichier README-LABINVENT.md contient la liste des mises à jour.

*4) Tester que tout fonctionne bien*

Aller à la racine du projet.
$ ./TESTS.sh
Si jamais les tests ne veulent pas s'exécuter, essayer ceci:
$ cd install/
$ ./plugins_update.sh
(équivalent à faire "php composer.phar update", ce qui met à jour les plugins, et notamment CakePhp)
(et si ça ne marche toujours pas, on peut aussi essayer ./plugins_install.sh)
$ ./TESTS.sh
Tous les tests doivent passer
NB: Si phpunit ne se met pas à jour, ne pas hésiter à supprimer tout le dossier vendor/phpunit/ avant de lancer la commande ./plugins_update.sh

*5) Upgrade de Php => passage à Php7*

* Ubuntu:
<pre>
sudo apt-get install php7.0 php-gettext php7.0-mbstring libapache2-mod-php7.0 php7.0-mysql php7.0-mcrypt php7.0-intl
sudo a2dismod php5.6
sudo a2enmod php7.0
sudo service apache2 restart
sudo update-alternatives --set php /usr/bin/php7.0
sudo service apache2 restart
</pre>

---

h2. MODE PANIQUE

Vous avez changé la configuration du LDAP et elle ne fonctionne plus !
Du coup, vous ne pouvez plus vous connecter au site !
Pas de panique, le mode panique est là !
Il suffit de repasser le logiciel en mode INSTALL pour pouvoir y accéder sans connexion.
Pour cela, exécuter le script mode_panique.sh qui se trouve dans le dossier database/ :

<pre>
./mode_panique.sh
</pre>

(
_Si vous préférez, vous pouvez aussi exécuter manuellement la requête sql set_mode_install.sql qui se trouve dans le même dossier:_
mysql -u login -p labinvent2 < set_mode_install.sql
_Remplacer 'login' par le 'username' défini dans votre fichier config/app.php dans la section Datasources (default)_
_Remplacer 'labinvent2' par le 'database' défini au même endroit_
_Ou bien exécuter cette requête depuis phpmyadmin_
)

h2. MODE DEBUG (dev only)

Pour les développeurs, il y a un outil très pratique à utiliser qui est DebugKit. Il aide à voir ce qui se passe en interne au sein du framework cakephp (valeur des variables, dernières requetes sql exécutées...).

Il est installé par défaut. Donc, pour l'activer, rien de plus simple, il suffit de passer config/app.php en mode debug (ligne 12 qui définit la variable debug, passer à "true")

h2. UPDATE DE LA BRANCHE MASTER (dev only)

Pour mettre à jour la branche "master" à partir de la branche "dev-IRAP" (ou "dev") :

Aller sur la branche master :
$ git checkout master
$ git branch

Mettre à jour la branche master :
$ git merge --no-ff dev-IRAP
$ git push

Revenir sur la branche dev-IRAP (ou dev)
$ git checkout dev-IRAP