SMI est plus un GMAO (gestionnaire de maintenance) qu'un PGI ou ERP (progiciel de gestion intégré) écrit en language PHP qui permet la gestion d'un service après vente où un centre de maintenance technique. Il doit être sur un serveur local ou distant pour pouvoir fonctionner dans un explorateur web.
Avec ce logiciel il est possible de :
Avant de pouvoir installer SMI vous devez disposer soit de :
- Un serveur local Xampp équipé de Apache 2, php 5.6 une version de base de donnée MySql 5.5 ou 5.6 déjà bien configuré.
- Un espace web sur un serveur distant sur lequel vous avez les droits d'administration. Avec base de données MySql.
- Un serveur apache 2 équipé de php5.6 mysql 5.5 virtualisé sous Docker dans le cas des distributions Ubuntu récentes, voir plus bas pour la mise en œuvre.
Commencer tout d'abord par télécharger l'archive contenant les fichiers de SMI, la version actuelle étant 1.0.5 sur le site officiel de SMI ici.
Rendez vous dans le répertoire racine www de votre serveur local Xampp et créez y un répertoire 'smi' en minuscule.
Ayant ouvert un terminal dans le dossier racine du serveur :
mkdir smi
Extraire tout le contenu de l'archive téléchargée avec FileRoller en mode graphique dans le répertoire smi ainsi créé.
Ou en terminal, se placer dans le dossier ou se trouve l'archive, admettons que le dossier racine du serveur soit www et se trouve dans votre répertoire personnel :
unzip smi_1.0.5.zip -d ~/www/smi/
Créer un répertoire de téléchargement et un répertoire de sauvegarde et un répertoire de logos pour SMI , pour cela, entrer dans le répertoire de smi et faire ceci :
mkdir telechgt && mkdir telechgt/fictec && mkdir svg && mkdir logos
Il faut maintenant donner des permissions au dossier de smi et tout son contenu pour que tout se passe bien, pour cela sortir du dossier smi et se situer dans son dossier parent :
cd .. sudo chmod -R 777 smi
En console ou en utilisant l'interface graphique phpmyadmin, créer une base de donnée 'smi'. Créer un utilisateur nommé wwwrun et lui donner les droit suivants: 'SELECT', 'INSERT', 'UPDATE', DELETE', 'FILE', 'CREATE ', 'ALTER', 'INDEX', et 'DROP' sur la base smi que vous venez de mettre en place. (voir doc de MySql)
Ouvrir en édition le fichier inc/prm.inc.php, éditer les données dans les champs , ne pas oublier que l'utilisateur est wwwrun, il faut y mettre un mot de passe, laisser les répertoires de téléchargement et sauvegarde par défaut puisque nous les avons créés tels quels. Puis sauver.
De la racine du répertoire de SMI :
sudo nano inc/prm.inc.php
Il faut ensuite changer les droits pour le fichier prm.inc.php, se placer dans le répertoire de smi et taper ceci :
sudo chmod 644 inc/prm.inc.php
Et de la même façon, changer les droits pour le répertoire inc lui même :
sudo chmod 755 inc
Ce n'est pas encore tout, il faut maintenant initialiser la base de données smi pour qu'elle contienne les table nécessaire au fonctionnement initial. Les fichiers .sql à cet effet se trouvent dans smi/install/sql/ dans ce cas précis, nous utiliserons le fichier smi_1.0.5.sql
En ouvrant phpmyadmin, sélectionner la base de smi et se connecter avec l'identifiant défini pour celle-ci , ensuite , au-dessus cliquer sur l'onglet 'Importer' et cliquer sur le bouton 'choisir un fichier' spécifier le fichier voulu et au fond de la page cliquer sur 'Executer' des warning ou erreurs peuvent apparaître , elles sont souvent insignifiantes.
Maintenant que tous les fichiers et répertoires sont en place, que la base de données et l'utilisateur ont été créés, démarrer Xampp comme d'habitude en veillant à ce que apache2 et mysql soit bien actif, Ouvrir votre explorateur internet et taper cette adresse pour avoir accès à la page principale de SMI http://localhost/smi/index.php
Si tout s'est bien passé, vous ne devriez pas obtenir de messages d'erreur, si tel était le cas, se référer au forum officiel sur le site de SMI.
Commencer tout d'abord par télécharger l'archive contenant les fichiers de SMI, la version actuelle étant 1.0.5 sur le site officiel de SMI ici.
Rendez vous dans le répertoire racine www de votre serveur local , généralement /var/www/ et créez y un répertoire 'smi' en minuscule.
Ayant ouvert un terminal dans le dossier racine du serveur :
mkdir smi
Extraire tout le contenu de l'archive téléchargée avec FileRoller en mode graphique dans le répertoire smi ainsi créé.
Ou en terminal, se placer dans le dossier ou se trouve l'archive, admettons que le dossier racine du serveur soit www et se trouve dans votre répertoire personnel :
unzip smi_1.0.5.zip -d /var/www/smi/
Créer un répertoire de téléchargement , un répertoire de sauvegarde et un répertoire de logos pour SMI , pour cela, entrer dans le répertoire de smi et faire ceci :
mkdir telechgt && mkdir telechgt/fictec && mkdir svg && mkdir logos
Il faut maintenant donner des permissions au dossier de smi et tout son contenu pour que tout se passe bien, pour cela sortir du dossier smi et se situer dans son dossier parent :
cd .. sudo chmod -R 777 smi
En console ou en utilisant l'interface graphique phpmyadmin, créer une base de donnée 'smi'. Créer un utilisateur nommé wwwrun et lui donner les droit suivants: 'SELECT', 'INSERT', 'UPDATE', DELETE', 'FILE', 'CREATE ', 'ALTER', 'INDEX', et 'DROP' sur la base smi que vous venez de mettre en place. (voir doc de MySql)
Ouvrir en édition le fichier smi/inc/prm.inc.php, éditer les données dans les champs , ne pas oublier que l'utilisateur est wwwrun, il faut y mettre un mot de passe, laisser les répertoires de téléchargement et sauvegarde par défaut puisque nous les avons créés tels quels. Puis sauver.
De la racine du répertoire de SMI :
sudo nano inc/prm.inc.php
Il faut ensuite changer les droits pour le fichier prm.inc.php, se placer dans le répertoire de smi et taper ceci :
sudo chmod 644 inc/prm.inc.php
Et de la même façon, changer les droits pour le répertoire inc lui même :
sudo chmod 755 inc
Ce n'est pas encore tout, il faut maintenant initialiser la base de données smi pour qu'elle contienne les table nécessaire au fonctionnement initial. Les fichiers .sql à cet effet se trouvent dans smi/install/sql/ dans ce cas précis, nous utiliserons le fichier smi_1.0.5.sql
En ouvrant phpmyadmin, sélectionner la base de smi et se connecter avec l'identifiant défini pour celle-ci , ensuite , au-dessus cliquer sur l'onglet 'Importer' et cliquer sur le bouton 'choisir un fichier' spécifier le fichier voulu et au fond de la page cliquer sur 'Executer' des warning ou erreurs peuvent apparaître , elles sont souvent insignifiantes.
Maintenant que tous les fichiers et répertoires sont en place, que la base de données et l'utilisateur ont été créés, démarrer Xampp comme d'habitude en veillant à ce que apache2 et mysql soit bien actif, Ouvrir votre explorateur internet et taper cette adresse pour avoir accès à la page principale de SMI http://localhost/smi/index.php
Si tout s'est bien passé, vous ne devriez pas obtenir de messages d'erreur, si tel était le cas, se référer au forum officiel sur le site de SMI.
Après de nombreux essais et recherches, il s'est avéré que l'installation sous Ubuntu 16.04 de PHP 5.6 par un ppa est un jeu d'enfant mais il n'en est pas de même pour mysql 5.5 ou 5.6 qui est un véritable parcours du combattant pour l'utilisateur commun, Krodelabestiole, un membre du forum Ubuntu à eu l'idée géniale d'utiliser Docker pour lancer SMI dans son environnement compatible, sans pour autant modifier quoi que ce soit au système hôte. Merci à lui au passage.
Brève présentation de Docker, c'est un logiciel qui permet de mettre en 'container' toutes sortes de logiciels dans autant de versions que possible, soit combinés en environnement complet, soit installés de manière individuelle pour un usage précis. C'est une solution qui permet une virtualisation très légère du strict nécessaire sans pour autant faire tourner un OS complet comme le fait VirtualBox.
Commençons par ce tutoriel très bien réalisé sur la question pour installer docker ainsi que php et mysql dans les versions attendues par SMI. Suivez toutes les étapes du tutoriel scrupuleusement sans tenir compte du point 4, nous utiliserons la méthode avancée pour SMI Tutoriel d'installation sous Docker
Si vous avez bien suivi ce tutoriel vous devez maintenant avoir dans votre répertoire personnel un répertoire www/ , télécharger l'archive sur le site de smi Téléchargement sur la page officielle
Dans www/ créer un répertoire pour smi, se placer dans le dossier www/ et taper ceci en console :
mkdir smi
Ensuite suivre exactement la procédure décrite au point précédent pour l'installation de smi dans le répertoire après avoir démarré Docker en sachant que l'accès à Phpmyadmin du container se fait par http://localhost:8080
Dans prm.inc.php, utilisez les lignes suivantes en lieu et place des lignes traditionnellement utilisées. Ce sont les identifiants définis pour la base MySQL de Docker:
// Constantes de connexion à la base MySQL define('DBUSER', 'root'); // Utilisateur MySQL define('DBPASS', 'root'); // Mot de Passe pour MySQL define('DBHOST', 'db'); // Adresse IP du serveur MySQL
Il est maintenant temps de lancer SMI et de procéder à ses configurations initiales comme habituellement. Pour cela, taper dans la barre d'adresse de votre explorateur http://localhost/smi/admin/index.php.
Il ne reste plus qu'à automatiser le démarrage du container Docker ainsi que de la page de SMI, voici un exemple de script que vous placerez dans le même dossier que le script .yml de docker ainsi créé précédemment. Vous le personnaliserai si nécessaire en fonction de vos besoin, le mieux est de créer un lanceur sur le bureau. Ne pas oublier de donner les droits d'exécution au script !
script_smi_docker.sh :
#!/bin/bash # Script de démarrage de SMI dans Docker. # Arrêt d'un serveur natif éventuel, absolument nécessaire !! sudo service apache2 stop sudo service mysql stop # Déplacement dans le dossier du script .yml cd /home/user/docker_smi/ # Lancement du container docker-compose up & # Ouverture de la page de SMI dans Chromium après attente de 20 sec sleep 20 chromium-browser http://localhost/smi/index.php
Passons au lanceur maintenant, dans cet exemple reprenons le même chemin que le script et mettons y pour commande d'exécution :
sh /home/user/docker_smi/script_smi.sh
Voilà qui est fait !
A compléter !
Au premier lancement de SMI il est nécessaire de le configurer pour pouvoir l'utiliser correctement, vous vous trouvez donc sur une page de login sur laquelle vous aller utiliser comme login 'Administrateur' et comme mot de passe 'Administrateur'. Vous arrivez directement sur la page d'accueil de SMI qui vous dit qu'il n'est pas configuré, cliquez donc sur configurer. Entrez les données de votre société, si vous êtes en France tout se passe bien, pour d'autres pays, il faudra procéder à une manipulation pour les villes et provinces, voir au point suivant.
Si vous avez entré tous les paramètres obligatoires correctement , la validation du formulaire devrait se faire. Attention: un problème de format des numéros de téléphones Belge se produit dans la version 1.0.0 il devrait toutefois être résolu dans la version 1.0.1.
SMI à été prévu à l'origine pour la France, et prend donc en charge par défaut les départements et villes françaises, mais à été adapté pour plusieurs autres pays dont la Belgique et la Suisse. Sans cela, impossible de terminer la première configuration. Pour que SMI puisse prendre en charge les villes et provinces d'autres pays, vous trouverez des fichiers CSV dans le répertoire install/csv/ pour chaque pays il faut un fichier 'dep' et un fichier 'villes'.
Exemple pour la Belgique, à adapter pour d'autres pays :
Copier les fichiers csv dans le répertoire d'importation de SMI en admettant que vous ayez créé les dossiers comme prescrits, positionnez vous dans le dossier principal de SMI et taper ceci :
cp install/csv/be_villes.csv telechgt/fictec/ && cp install/csv/be_dep.csv telechgt/fictec/
Une fois ces fichiers copiés, ouvrez SMI et se diriger dans le menu jusqu'à Administration/Données/Importations/villes et aussi Administration/Données/Importations/départements, dans les deux cas utiliser les fichiers copiés pour l'importation.
Après cette opération, revenir à la page de configuration par la page d'accueil que vous devriez maintenant pouvoir mener à bien.
SMI est un logiciel en permanente évolution qui devrait bientôt se doter d'une gestion de facturation et de stock, pour la prise en main je vous recommande donc de consulter sa documentation officielle.
La syntaxe de prm.inc.php peut faire perdre beaucoup de temps, ce n'est pas simple à compléter, c'est pourquoi ci-dessous vous trouverez un fichier exemple relatif à une installation sous docker, adaptable en fonction de votre propre situation.
// Vérification des tentatives de hack $pos = strpos($_SERVER['PHP_SELF'], 'inc.php'); if ($pos !== FALSE) { header('Location: ../index.php'); } ////////////////////////////////////////////////////////////////////////////////// /// Vous pouvez modifier ces variables en fonction de votre configuration /// ////////////////////////////////////////////////////////////////////////////////// /************************************************/ /** Language de l'application **/ /************************************************/ // Language par défaut de l'application (pris sur le browser) $lng_appli = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); /************************************************/ /** Fuseau Horaire du serveur **/ /************************************************/ date_default_timezone_set('Europe/Paris'); /**************************************************/ /** Répertoire de l'application **/ /**************************************************/ define('REP', 'smi'); // Répertoire de l'application $rep_appli = $racine_web . '/' . REP; // Chemin web absolu vers l'application /*******************************************/ /** Nom de la base MySQL **/ /*******************************************/ define('DBNAME', 'smi'); // Nom de la base de données define('PREFIXE', 'smi'); // Préfixe des noms des tables /*************************************************************/ /** Constantes des bases MySQL **/ /*************************************************************/ // login/mot de passe Administrateur par défaut (créé la 1ère fois) $admin_code = 'Administrateur'; // Code 'Administrateur' $admin_mdp = 'Administrateur'; // Mot de passe 'Administrateur' // Constantes de connexion à la base MySQL define('DBUSER', 'root'); // Utilisateur MySQL define('DBPASS', 'root'); // Mot de Passe pour MySQL define('DBHOST', 'db'); // Adresse IP du serveur MySQL /****************************************************/ /** Variables des téléchargements **/ /****************************************************/ /*************************************************************/ /** Constantes et variables pour la gestion des icônes **/ /** pour les statuts et des logos pour les agences, **/ /** et les applications complémentaires **/ /*************************************************************/ // Constantes & Variables des répertoires pour les fichiers internes et téléchargés, et les sauvegardes $url_gfc = $root . 'smi/telechgt/fictec'; // Chemin REEL complet pour la gestion des fichiers techniques //$url_gfc = '/srv/www/smi/telechgt/fictec'; // Chemin REEL complet pour la gestion des fichiers techniques $url_tfc = '/home/user/www/smi/telechgt/fictec/'; // Chemin REEL depuis la racine pour le téléchargement des // fichiers techniques $url_svg = $root . 'smi/svg/'; // Chemin REEL vers le répertoire des sauvegardes //$url_svg = '/srv/www/datas/smi/svg/'; // Chemin REEL vers le répertoire des sauvegardes // Extensions autorisées $extensions_ok = ['.png', '.zip', '.pdf', '.7z', '.txt', '.csv', '.rtf', '.wk1', '.wks', '.123', '.iso', '.xls', '.doc', '.ods', '.odt', '.odg', '.odp', '.odb', '.sxw', '.sxi', '.sti', '.sxd', '.gz', '.tar', '.gif', '.rar', '.arj', '.jpg', '.ppt', '.exe', '.jpg', '.gif', '.bmp']; // Tailles maximum (en octets) des fichiers pouvant être téléchargés // (Pensez à contrôler votre PHP.INI) $taille_maxi_admin = 1024 * 6000; $taille_maxi_cge = 1024 * 6000; $taille_maxi_age = 1024 * 3000; $taille_maxi_tec = 1024 * 2000; /*******************************************/ /** Variables des icônes **/ /*******************************************/ // Constantes & Variables des répertoires icônes et images /***********[ TRES TRES IMPORTANT SOUS LINUX !!! ]***************/ /** **/ /** pensez à changer le propriétaire du répertoire des icônes **/ /** en le passant sous le même propriétaire que celui qui **/ /** exécute les scripts, sinon, rien ne s'affichera. **/ /** Par exemple 'chown wwwrun /srv/www/htdocs/maint/icones' **/ /** **/ /****************************************************************/ $chemin_icones = '../icones'; // Chemin relatif vers les icônes $url_logos = $rep_appli . '/logos'; // Chemin complet vers le dossier de stockage des logos $chemin_logos = '../logos'; // Chemin relatif vers les logos $cheminr_logos = $root . REP . '/logos'; // Chemin REEL vers les logos $chemin_images = '../img'; // Chemin relatif vers les images /*************************************************************/ /** Constantes & Variables pour les emails **/ /*************************************************************/ $admin_name = ''; // Nom de l'Administrateur $admin_mail = ''; // Email de l'Administrateur // Coordonnées du serveur smtp de votre FAI $smtp_nom = ''; // Nom du serveur SMTP // Vous pouvez en donner plusieurs (séparez-les avec des ';') $smtp_port = 25; // Port du serveur SMTP $smtp_login = ''; // Login du serveur SMTP (si serveur avec authentification...laisser vide si pas d'authentification) $smtp_mdp = ''; // Mot de passe du serveur SMTP (si serveur avec authentification...laisser vide si pas d'authentification) $smtp_pausem = 5; // Pause en secondes entre chaque envoi de mail (emailings) $smtp_secure = ''; // Mode de sécurité SMTP ('ssl', 'tls', ou rien) // SMI n'en tien compte que s'il y a un login $pop_before = false; // Si true, on fait un 'POP before SMTP', sinon rien $pop_nom = ''; // Non du serveur POP3 (SMI n'en tient compte que si 'POP before STMP') $pop_port = 110; // Port du serveur POP3 (SMI n'en tient compte que si 'POP before STMP') $pop_timeout = 30; // Time Out du serveur POP3 (SMI n'en tient compte que si 'POP before STMP') $pop_login = ''; // Login du serveur POP3 (SMI n'en tient compte que si 'POP before STMP') $pop_mdp = ''; // Mot de passe du serveur POP3 (SMI n'en tient compte que si 'POP before STMP') /***************************************************/ /** Applications complémentaires **/ /***************************************************/ $url_cal = ''; // Racine de l'application calendrier / agenda $url_fac = ''; // Racine de l'application facturation $url_facc = ''; // Racine de l'application facturation client
Contributeur principal : yoritomo