======OpenSI====== OpenSI est un logiciel Open-Source existant en deux versions. La version communautaire, gratuite, et la version dite professionnelle payante. Ce tutoriel montre la mise en place sur un serveur Debian de la version communautaire. ======Installation d'un serveur OpenSI 4.8-EC sur Debian====== La version 4.8-EC est disponible depuis décembre 2010. L'objectif est de présenter une méthode rapide et simple d'installation d'un serveur OpenSI version 4.8-EC sur un serveur Debian/Lenny. Il importera une fois l'installation faite de modifier certaines choses, notamment la connexion mysql du user opensi et le mot de passe du superviseur. Un script de sauvegarde et une méthode de restauration seront proposés ainsi que la mise en place d'un serveur sécurisé par certificat SSL/TLS. Remarque : ce tutorial fonctionne de manière identique sous Debian version Squeeze, Etch et Sarge ( attention MySQL 4 dans ce cas, ce qui ne pose aucun problème ). Son adaptation à une autre distribution est aisée ( je l'ai testé sur Fedora, OpenSuse et même OpenSolaris sans difficultés ) car en fait assez peu de directives propres à Debian ( aptitude, update-rc.d ... ) sont utilisées. Les packages utilisés sont ceux considérés comme stables à la mi-février 2010. Le serveur est mis en place avec une configuration basique de Debian, seul ssh et postfix en smtp local ( pour les mails au root ! ) sont activés. Le serveur utilisé pour ce tutorial a les caractéristiques suivantes : * CPU Celeron 2,93Ghz, * RAM 256Mo, * Disque dur 80G0 IDE, * Codage caractères UTF8, attention cela impose certaines choses à OpenSI serveur ( notamment au niveau des options tomcat ) qui n'est pas, à ce jour, compatible UTF8. Ce serveur est exploité en production et supporte sans difficulté 50 utilisateurs simultanés. Le disque est partitionné ainsi : ^ Partitions primaires ^^^ ^Point de montage ^Taille ^Type FS ^ | /boot | 100Mo | Ext2 | | swap | 512Mo | swap | | / ( voir note plus bas ) | 500Mo | Ext3 | ^ Partitions logiques ^^^ ^Point de montage ^Taille ^Type FS ^ | /usr | 5Go | Ext3 | | /usr/local | 5Go | Ext3 | | /opt | 10Go | Ext3 | | /var | 2Go | Ext3 | | /tmp | 1Go | Ext3 | | /home | le reste | Ext3 | **Toutes les commandes se font __en root__ ( sous Ubuntu pour éviter trop de sudo ...passez en root par //sudo -i// le temps de l'installation ), attention de bien respecter les commandes chown présentées dans ce tutorial et relatif au user tomcat. Ne pas céder à la "paresse" en abusant du chmod -R 777 !!!!** __Note :__ Il peut être utile de passer la partition "/" à 2Go si vous envisagez la recompilation du noyau. Des tests effectués sur les noyaux linux 2.6.31 ont montré que 500Mo ne suffisent pas pour une installation du noyau par la méthode Debian. =====Astuce personnelle pour "blinder un serveur"===== Les partitions permettent d'éviter certaines choses désagréables comme par exemple l'ajout intempestif de logiciels ou la copie d'exécutables dans /tmp ou $HOME. Pour cela, une fois tout installé et configuré, modifier la table de montage ainsi : vi /etc/fstab # /etc/fstab: static file system information. # # proc /proc proc defaults 0 0 /dev/hda3 / ext3 errors=remount-ro 0 1 /dev/hda1 /boot ext2 defaults 0 2 /dev/hda10 /home ext3 rw,nosuid,nodev,noexec 0 2 /dev/hda7 /opt ext3 ro 0 2 /dev/hda9 /tmp ext3 rw,nosuid,nodev,noexec 0 2 /dev/hda5 /usr ext3 ro 0 2 /dev/hda6 /usr/local ext3 ro 0 2 /dev/hda8 /var ext3 rw,nosuid,nodev,noexec 0 2 /dev/hda2 none swap sw 0 0 ======Déroulement de l'installation====== Dans un premier temps, mettre en place la plate-forme d'accueil de OpenSI comprenant : * Serveur MySQL, version 5.0 package Debian ou RedHat, * JDK java, version 1.6.0-18 ( 32 ou 64bits voir plus loin ), * Tomcat, version 5.5.28 ou 6.0.24 * Ant, version 1.8.0 J'ai pris le parti de rester sur la version 32 bits du jdk et le version 5.5.28 du serveur tomcat. Toutefois les packages sont disponibles pour la version 64 bits du jdk et la version 6.0.24 de tomcat. L'adaptation des commandes est simple. =====Serveur MySQL===== On peut difficilement faire plus simple. Sur les RedHat like on utilise yum. aptitude install mysql-server Renseigner le mot de passe du root mysql ( les exemples suivants sont présentés avec //"motdepasse"// ), il sera utile lors de la création initiale de la base. **Pour Redhat/Mandriva/Fedora** yum install mysql-server service mysqld start chkconfig mysqld on mysqladmin -u root password motdepasse La version 4.8 de opensi semble plus gourmande avec mysql, les valeurs par défaut du serveur sont donc un peu juste. Editer le fichier /etc/mysql/my.cnf et rajouter la ligne suivante dans la section [mysqld] set-variable=innodb_buffer_pool_size=128M La valeur peut aller jusqu'a 75% de la RAM du serveur si celui-ci est dédié à OpenSI. Relancer mysql après la modification de ce paramètre. /etc/init.d/mysql restart =====Plate-forme JAVA===== J'ai fait le choix de ne pas installer les packages de la distribution Debian, mais directement les binaires fournis sur les sites officiels de sun et apache. Afin de respecter les normes Debian, ces binaires seront installé sous /usr/local. Les versions utilisées sont : * ant 1.8 * tomcat 5.5.28, la version 6.0.24 fonctionne aussi * jdk 6.18 En fait il est possible d'utiliser toute version 5 ou 6 de tomcat ainsi que tout jdk depuis la version 4. Cette méthode à aussi un avantage, elle fonctionne sur toutes les distributions. Il est possible de charger les packages suivants depuis les sites officiels, pour ma part je les ai mis sur l'un de mes serveurs. Récupérer sur Internet les packages suivants : | ^ Version 32 bits ^ Version 64 bits ^| ^**ANT**|[[http://www.concarnux.org/fichiers/apache-ant-1.8.0-bin.tar.gz|apache-ant-1.8.0-bin.tar.gz]]| ^**TOMCAT 5.5**|[[http://www.concarnux.org/fichiers/apache-tomcat-5.5.28.tar.gz|apache-tomcat-5.5.28.tar.gz]]| ^**TOMCAT 6**|[[http://www.concarnux.org/fichiers/apache-tomcat-6.0.24.tar.gz|apache-tomcat-6.0.24.tar.gz]]| ^**JAVA JDK**|[[http://www.concarnux.org/fichiers/jdk-6u18-linux-i586.bin|jdk-6u18-linux-i586.bin ( 32bits )]]|[[http://www.concarnux.org/fichiers/jdk-6u18-linux-x64.bin|jdk-6u18-linux-x64.bin ( 64bits )]]| Les enregistrer sous /home. Il est possible d'utiliser la commande wget. Le code suivant est donné sous réserve de modification des liens Internet. cd /home wget -O apache-ant-1.8.0-bin.tar.gz "http://www.concarnux.org/fichiers/apache-ant-1.8.0-bin.tar.gz" wget -O apache-tomcat-5.5.28.tar.gz "http://www.concarnux.org/fichiers/apache-tomcat-5.5.28.tar.gz" wget -O jdk-6u18-linux-i586.bin "http://www.concarnux.org/fichiers/jdk-6u18-linux-i586.bin" Si vous souhaitez utiliser la version 6.0.24 de tomcat wget -O apache-tomcat-6.0.24.tar.gz "http://www.concarnux.org/fichiers/apache-tomcat-6.0.24.tar.gz" Si vous souhaitez utiliser la version 64 bits du jdk wget -O jdk-6u18-linux-x64.bin "http://www.concarnux.org/fichiers/jdk-6u18-linux-x64.bin" Puis les installer en suivant les commandes ci-dessous et en répondant aux questions posées par l'installateur de java : root@machine:~$ **cd /usr/local** root@machine:~$ **tar -xzf /home/apache-ant-1.8.0-bin.tar.gz** root@machine:~$ **tar -xzf /home/apache-tomcat-5.5.28.tar.gz** root@machine:~$ **chmod u+x /home/jdk-6u18-linux-i586.bin** root@machine:~$ **/home/jdk-6u18-linux-i586.bin** root@machine:~$ **ln -s apache-ant-1.8.0 ant** root@machine:~$ **ln -s apache-tomcat-5.5.28 tomcat** root@machine:~$ **ln -s jdk1.6.0_18 java** Ajouter un user tomcat ( ne pas mettre tomcat comme mot de passe ! ), qui sera propriétaire du serveur tomcat et de l'application OpenSI. root@machine:~$ **adduser tomcat** Créer un script de lancement de tomcat sous /etc/init.d root@machine:~$ **vi /etc/init.d/tomcat** #! /bin/bash ### BEGIN INIT INFO # Provides: tomcat # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Demarrage de tomcat au boot # Description: ### END INIT INFO NAME="Jakarta Tomcat 5.5.28" TOMCAT_HOME=/usr/local/tomcat CATALINA_HOME=/usr/local/tomcat JAVA_HOME=/usr/local/java CATALINA_OPTS="-Dfile.encoding=iso8859-1 -Djava.awt.headless=true" TOMCAT_USER=tomcat LC_ALL=fr_FR export TOMCAT_HOME CATALINA_HOME JAVA_HOME CATALINA_OPTS TOMCAT_USER LC_ALL cd $TOMCAT_HOME/logs case "$1" in start) echo -ne "Démarrage $NAME. " /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh ;; stop) echo -ne "Arrêt $NAME. " /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh ;; restart) echo -ne "Re-démarrage $NAME. " /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh /bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh ;; *) echo "Usage: /etc/init.d/tomcat {start|stop|restart}" exit 1 ;; esac exit 0 La ligne "CATALINA_OPTS="-Dfile.encoding=iso8859-1 -Djava.awt.headless=true" est importante, car le serveur est en codage UTF8 et il est impossible de charger des images ou logos sans la directive -Dfile.encoding=iso8859-1. A ce jour OpenSI serveur n'est pas compatible UTF8. La directive -Djava.awt.headless=true permet notamment sur les plateformes Ubuntu de bien afficher le graphique d'évolution du chiffre d'affaire et de ne pas avoir dans les logs tomcat le message suivant : ... - Servlet.service() for servlet org.experlog.lite.OpenEAS threw exception java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment ... Ce script fonctionne sous les Redhat like, mais n'est pas compatible avec la commande chkconfig. Ce script est très succinct, mais efficace. Le rendre exécutable et le mettre dans le démarrage au boot root@machine:~$ **chmod u+x /etc/init.d/tomcat** root@machine:~$ **update-rc.d tomcat defaults** Puis affecter le programme tomcat au user tomcat root@machine:~$ **chown -R tomcat:tomcat /usr/local/apache-tomcat-5.5.28/** Editer /etc/environment et ajouter les deux lignes suivantes : JAVA_HOME=/usr/local/java ANT_HOME=/usr/local/ant Editer /etc/profile afin de compléter le PATH. # /etc/profile: system-wide .profile file for the Bourne shell (sh(1)) # and Bourne compatible shells (bash(1), ksh(1), ash(1), ...). if [ "`id -u`" -eq 0 ]; then PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" else PATH="/usr/local/bin:/usr/bin:/bin:/usr/games" fi if [ "$PS1" ]; then if [ "$BASH" ]; then PS1='\u@\h:\w\$ ' else if [ "`id -u`" -eq 0 ]; then PS1='# ' else PS1='$ ' fi fi fi PATH=$PATH:/usr/local/java/bin:/usr/local/ant/bin export PATH umask 022 Relancer le serveur afin de tester le démarrage automatique de tomcat. La commande netstat donne les ports ouverts. netstat -ltaupen Connexions Internet actives (serveurs et établies) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat User Inode PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 103 9343 3026/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 4763 1873/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 4890 1940/master tcp 0 0 192.168.1.110:22 192.168.1.6:41076 ESTABLISHED 0 5190 2011/0 tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1000 5271 1959/java tcp6 0 0 :::8009 :::* LISTEN 1000 5269 1959/java tcp6 0 0 :::8080 :::* LISTEN 1000 5248 1959/java tcp6 0 0 :::22 :::* LISTEN 0 4761 1873/sshd Les ports 8009 et 8080 doivent être ouvert en écoute. En pointant un navigateur sur l'IP du serveur ( 192.168.1.110 dans l'exemple ) et le port 8080 on doit voir apparaitre la page d'accueil de tomcat. Le port 3306 correspond au serveur mysql. Le port 25 concerne le serveur smtp local. http://192.168.1.110:8080/ Utilisation de la commande nmap ( le package s'installe par aptitude install nmap ) nmap localhost Starting Nmap 4.62 ( http://nmap.org ) at 2009-09-10 15:33 CEST Interesting ports on localhost (127.0.0.1): Not shown: 1710 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 3306/tcp open mysql 8009/tcp open ajp13 8080/tcp open http-proxy Nmap done: 1 IP address (1 host up) scanned in 0.166 seconds =====Serveur OpenSI===== Charger sur le net le package [[http://www.concarnux.org/fichiers/opensi-serveur-4.8.tgz|OpenSI Serveur version 4.7.8-1]] et le mettre sous /home. Vous pouvez aussi utiliser wget : cd /home wget -O opensi-serveur-4.8.tgz "http://www.concarnux.org/fichiers/opensi-serveur-4.8.tgz" Décompresser le package root@machine:~$ **cd /usr/local/tomcat/webapps** root@machine:~$ **mkdir OpenSI** root@machine:~$ **cd OpenSI** root@machine:~$ **tar -xvzf /home/opensi-serveur-4.8.tgz** root@machine:~$ **chown -R tomcat:tomcat /usr/local/tomcat/webapps/OpenSI** Lancer le script deploy situé sous /usr/local/tomcat/webapps/OpenSI root@machine:~$ **cd /usr/local/tomcat/webapps/OpenSI** root@machine:~$ **./deploy** Ce script va, entre autre créer un répertoire, opensi-parametres sous /usr/local/tomcat/webapps. Se positionner dans le répertoire /usr/local/tomcat/webapps/opensi-parametres/configuration et recopier le fichier de configuration modèle. root@machine:~$ **cd /usr/local/tomcat/webapps/opensi-parametres/configuration** root@machine:~$ **cp ../../OpenSI/opensi.cfg.template opensi.cfg** Editer le fichier /usr/local/tomcat/webapps/opensi-parametres/configuration/opensi.cfg et modifier les 3 lignes suivantes : app.UploadDir: /usr/local/tomcat/webapps/OpenSI opensi.absdir: /usr/local/tomcat/webapps/OpenSI opensi.CheckConnexion: /usr/local/tomcat/webapps/OpenSI/ESRootDir/ESTemplates/Shop/CheckConnexion.tmpl **Très important, bien définir les droits au user tomcat à ce stade, si vous avez exactement suivi les commandes, ce fichier,opensi.cfg, appartient au root.** Le fichier de log de tomcat ( /usr/local/tomcat/logs/catalina.out ) sinon indiquera un accès impossible au fichier opensi.cfg. root@machine:~$ **chown -R tomcat:tomcat /usr/local/apache-tomcat-5.5.28/** Le script “deploy” a créé des liens symboliques, il faut autoriser le serveur Tomcat à les suivre. Editer le fichier de configuration “context.xml" de tomcat, qui se trouve dans le répertoire /usr/local/tomcat/conf et remplacer la ligne //// comme dans l'exemple ci-dessous : WEB-INF/web.xml Lors de la compilation, il y a des messages d'erreurs dus au codage UTF8, en production ce n'est pas très génant, toutefois si on est rigoureux et grace au shell suivant, il est possible de ré-encoder les fichiers. Comme pré-requis installer le package recode. aptitude install recode Puis sous /home créer un fichier recodeUTF8.sh et y copier les lignes ci-dessous. #!/bin/sh # Initialiser le filtre d'extensions. extensions[0]="*.java" #extensions[1]="*.htm" #extensions[2]="*.sql" # Pour chaque extension. for ext in ${extensions[*]}; do # Rechercher et convertir les fichiers. for fic in `find ./OpenSI -name "$ext"`; do # Executer la commnde de conversion. recode `file -i "$fic" | cut -d= -f2`..utf8 $fic done done Rendre le fichier executable chmod u+x recodeUTF8.sh Se positionner au "bon endroit" et lancer le shell. cd /usr/local/tomcat/webapps /home/recodeUTF8.sh Si vous utiliser ant, version 1.8, il faut corriger le fichier build.xml en rajoutant includeantruntime="false" dans la ligne de compilation javac ( target name="compile", voir çi-dessous ), ceci afin d'éviter un warning. Procéder ensuite à la compilation du programme. root@machine:~$ **cd /usr/local/tomcat/webapps/OpenSI/WEB-INF** root@machine:~$ **ant dist** Redémarrer tomcat. root@machine:~$ **/etc/init.d/tomcat restart** Mettre en place la base de données. root@machine:~$ **cd /usr/local/tomcat/webapps/OpenSI/database** root@machine:~$ **mysql -u root -p < SchemaGeneral.sql** Le programme demandera alors le mot de passe du root mysql qui fut initialisé lors de l'installation du package mysql-server. A ce stade le serveur est opérationnel et il est possible d'y accéder depuis le client en accès non sécurisé ( port 8080 ). Le mot de passe du superviseur est "root", pensez à le changer via le client opensi. ======Sauvegarde des données====== Un petit script sans prétention pour sauvegarder rapidement les bases. Dans un premier temps, créer un répertoire qui contiendra les sauvegardes : root@machine:~$ **mkdir /home/svgmysql** Puis créer le script suivant dans le répertoire /root, il sera lancé chaque jour par le cron. L'exemple utilise le mot de passe du root mysql qui est dans ce cas : //motdepasse//. root@machine:~$ **vi /root/svgmysql.sh** #!/bin/sh for x in `mysql -u root -pmotdepasse -Bse "show databases"`; do mysqldump -u root -pmotdepasse $x | gzip -9 > /home/svgmysql/$x.`date +%Y%m%d`.gz done Le rendre exécutable. Ne donner l'accès que au root, ce script contient en effet le mot de passe principal de mysql en clair ! root@machine:~$ **chmod 0700 /root/svgmysql.sh** Et enfin le rajouter dans le cron root@machine:~$ **vi /etc/crontab** 00 22 * * * root /root/svgmysql.sh La sauvegarde sera lancée chaque jour à 22H00. **Important** : ce script ne sauvegarde que les bases mysql, mais pas l'ensemble des données OpenSI, notamment les photos ou les logos, vu l'arborescence de ce tutorial, sous /usr/local/tomcat/webapps/opensi-parametres =====Sauvegarde distante et sécurisée===== Le script ci-dessus ne permet pas une vraie sécurité des sauvegardes. L'idéal est de sauvegarder sur un support distant. Je vais présenter ici une solution permettant de créer une archive tar des données OpenSI sur un serveur distant via ssh. Afin d'automatiser le tout il est nécessaire de mettre en place une identification par clés asymétriques, permettant ainsi la connexion distante sans mot de passe. Pour cela je vais utiliser le user tomcat qui sera chargé de copier les sauvegardes locales vers le serveur distant. Nous avons donc deux serveurs : * production : qui contient OpenSI et les bases * sauvegarde : qui accueillera les sauvegardes. Le propos ici n'est pas de détailler le principe d'identification par clés asymétriques ( voir avec l'ami google pour plus d'info ! ). Sur le serveur production, se connecter tomcat et créer les clés ssh. Le système va poser 3 questions faire simplement Entrée à chaque fois. su - tomcat ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/tomcat/.ssh/id_rsa): Created directory '/home/tomcat/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/tomcat/.ssh/id_rsa. Your public key has been saved in /home/tomcat/.ssh/id_rsa.pub. The key fingerprint is: 73:89:05:f8:15:ba:7d:5b:84:7c:9f:a8:e5:05:28:75 tomcat@adi155.adimcor.eu The key's randomart image is: +--[ RSA 2048]----+ | .. .o E | | . oo.o. | | ..o..o.o | | .=.. oo..| | S + .o.o.| | o .+o. | | ... | | | | | +-----------------+ Le petit dessin va être différent sur vos machines. Cette commande a créé sous la home directory un répertoire .ssh qui contient deux fichiers : * id_rsa, la clé privée, * id_rsa.pub, la clé publique qui sera à transférer sur le serveur de sauvegarde. Sur le serveur de sauvegarde, créer un user tomcat et y mettre un mot de passe. Ne rien faire de plus. ( vérifier quand même la place disque ) Revenir sur le serveur production et toujours sous le user tomcat, transférer la clé publique.Vous devrez donner le mot de passe du user tomcat sur la machine sauvegarde pour le transfert. Ensuite cela sera inutile, l'indentification se faisant pas les clés. sh-copy-id tomcat@sauvegarde The authenticity of host 'sauvegarde (192.168.1.111)' can't be established. RSA key fingerprint is 35:69:ab:f8:26:71:56:6f:86:b8:19:56:ce:25:31:dc. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'sauvegarde,192.168.1.111' (RSA) to the list of known hosts. tomcat@sauvegarde's password: Now try logging into the machine, with "ssh 'tomcat@sauvegarde'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. Remplacer sauvegarde par votre serveur distant et à la demande d'authentification du serveur répondre //"yes"// Tester que vous pouvez vous connecter en tomcat sur le serveur distant sans taper le mot de passe. root@machine:~$ **ssh tomcat@sauvegarde** root@machine:~$ **exit** De nouveau sur le serveur de production, tester le transfert des sauvegardes par la commande suivante : root@machine:~$ **tar -cvf - /home/svgmysql/ | ssh tomcat@sauvegarde "cat > sauvegarde.tar"** Il suffit que le user tomcat est un accès en lecture du répertoire /home/svgmysl sur le serveur de production, ce qui est la cas par défaut. En se connectant sur le serveur de sauvegarde en tomcat, le fichier sauvegarde.tar doit se trouver dans la home directory. ===Modification du script de sauvegarde=== Toujours sous le user tomcat, créer le script suivant : root@machine:~$ **vi svgdistante.sh** #!/bin/bash tar -cf - /home/svgmysql/ | ssh tomcat@sauvegarde "cat > svgopensi.`date +%Y%m%d`.tar" Le rendre exécutable. root@machine:~$ **chmod u+x svgdistante.sh** Puis repasser sous root et modifier le script initial de sauvegarde root@machine:~$ **vi /root/svgmysql.sh** #!/bin/sh for x in `mysql -u root -pmotdepasse -Bse "show databases"`; do mysqldump -u root -pmotdepasse $x | gzip -9 > /home/svgmysql/$x.`date +%Y%m%d`.gz done su - tomcat -c "/home/tomcat/svgdistante.sh" Le tester en le lançant manuellement : root@machine:~$ **/root/svgmysql.sh** Sur le serveur sauvegarde dans la home directory du user tomcat doit se trouver un fichier type //"svgopensi.20090917.tar"//. La tâche restant programmée dans le cron, chaque jour à 22H00 une sauvegarde locale sera faite et une copie sur un serveur distant dans la foulée. Attention en cas de sauvegarde sur un serveur via une ADSL fonctionne parfaitement, mais utilise le débit montant de l'ADSL, c'est à dire au mieux 1Mbit/s !!! ======Restauration des données====== Sauvegarder ne sert pas à grand chose, voir à rien, si il est impossible de restaurer. Il importe bien sur de sauvegarder les données créées par le script précédent ailleurs que sur le même serveur. **Principe de restauration** Pour l'exemple nous allons considérer que tout est perdu. Le serveur est détruit, reprendre donc la réinstalation basique complète de OpenSI. Il n'existait qu'un dossier "MABOITE" avec 2 exercices comptables. Le "crash" s'est produit le 12 septembre 2009. Nous allons utiliser les données de la veille. Les sauvegardes doivent donc être les suivantes : * FACT_MABOITE.20090911.gz * CPTA_0_MABOITE.20090911.gz * CPTA_1_MABOITE.20090911.gz * opensi.20090911.gz Il n'est pas utile de restaurer les bases internes mysql. La reinstallation de mysql-server suffit. Récupérer depuis la sauvegarde les fichiers ci-dessus et les placer sous /home/svgmysql. Décompresser les sauvegardes : cd /home/svgmysql gunzip FACT_MABOITE.20090911.gz gunzip CPTA_0_MABOITE.20090911.gz gunzip CPTA_1_MABOITE.20090911.gz gunzip opensi.20090911.gz Se connecter en root sous mysql et créer les 4 bases de données : mysql -u root -pmotdepasse mysql> create database opensi; mysql> create database FACT_MABOITE; mysql> create database CPTA_0_MABOITE; mysql> create database CPTA_1_MABOITE; mysql> quit Puis charger les données, il est possible de mettre le mot de passe du root, afin d'éviter de la taper à chaque fois, dans la ligne de commande comme dans l'exemple suivant : mysql -u root -pmotdepasse opensi < opensi.20090911 mysql -u root -pmotdepasse FACT_MABOITE < FACT_MABOITE.20090911 mysql -u root -pmotdepasse CPTA_0_MABOITE < CPTA_0_MABOITE.20090911 mysql -u root -pmotdepasse CPTA_1_MABOITE < CPTA_1_MABOITE.20090911 Si il existe plusieurs dossiers, il suffit donc de restaurer une fois la base opensi, puis les bases FACT et CPTA de chaque dossier. Si le serveur n'est pas détruit, cette méthode permet également de migrer vers un autre serveur simplement, ou encore de revenir à une situation antérieure ( utile dans le cas d'une mise à jour de OpenSI ). Remarque : je redémarre toujours tomcat après cette manipulation. ======Changer le mot de passe opensi====== Par défaut opensi créé un user mysql avec la connexion suivante : opensi/opensi. Pour changer ceci, il faut redéfinir le mot de passe dans mysql du user opensi et modifier le fichier opensi.cfg en conséquence. Attention pour des mises à jour, les scripts fournis supposent que la connexion se fait en opensi/opensi, il sera donc nécessaire d'adapter les scripts. Modification du mot de passe MySQL. Passage en opensi/motdepasse. root@machine:~$ **mysql -u opensi -popensi** mysql> set password = password( 'motdepasse'); Query OK, 0 rows affected (0.00 sec) mysql> quit Puis modifier le fichier de configuration opensi.cfg root@machine:~$ **cd /usr/local/tomcat/webapps/opensi-parametres/configuration/** root@machine:~$ **vi opensi.cfg** ... # Paramètres de connexion à la base de données opensi.serveurdb: jdbc:mysql://localhost/ jdbc.Driver: com.mysql.jdbc.Driver jdbc.Url: jdbc:mysql://localhost/opensi jdbc.User: opensi # Changer ici le mot de passe jdbc.Password: motdepasse jdbc.MaxConn: 100 jdbc.MinConn: 20 ... Relancer tomcat root@machine:~$ **/etc/init.d/tomcat restart** ======Mettre en place un serveur sécurisé====== Il ne s'agit pas ici de faire un tutoriel sur SSL, mais de montrer la mise en place rapide et efficace de certificat pour tomcat. Se connecter sous le user tomcat root@machine:~$ **su - tomcat** Il faut dans un premier temps générer le keystore ( la clef privé ) via la commande keytool. Pour créer la clef, il faut définir un alias (le nom en toutes lettres) et un nomdustockage (le nom du fichier). Retenez bien le nom de l'alias que vous spécifiez. La syntaxe est la suivante : keytool -genkey -keyalg [RSA/DSA] -alias [nom-alias] -keystore [nomdustockage] Il est possible d'omettre l'option -keystore, le nom du stockage sera alors .keystore. La commande utilise l'algorithme de cryptage RSA et définie une validité de 10 ans ( la valeur par défaut est 90 jours ). $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -validity 3650 Tapez le mot de passe du Keystore : // la valeur par défaut est changeit, mettre par exemple motdepasse. Ressaisissez le nouveau mot de passe : Quels sont vos prénom et nom ? [Unknown] : Roger Dupont Quel est le nom de votre unité organisationnelle ? [Unknown] : Informatique Quelle est le nom de votre organisation ? [Unknown] : MABOITE Quel est le nom de votre ville de résidence ? [Unknown] : QUIMPER Quel est le nom de votre état ou province ? [Unknown] : Bretagne Quel est le code de pays à deux lettres pour cette unité ? [Unknown] : FR Est-ce CN=Roger Dupont, OU=Informatique, O=MABOITE, L=QUIMPER, ST=Bretagne, C=FR ? [non] : oui Spécifiez le mot de passe de la clé pour (appuyez sur Entrée s'il s'agit du mot de passe du Keystore) : // Faire juste Entrée à ce niveau. Le mot de passe du keystore est important, il devra être renseigné dans le fichier server.xml ( voir plus loin ). Ceci à pour effet de créer un fichier .keystore dans le répertoire du user tomcat. ls -al total 24 drwxr-xr-x 2 tomcat tomcat 4096 sep 12 09:49 . drwxr-xr-x 5 root root 4096 sep 11 08:59 .. -rw-r--r-- 1 tomcat tomcat 220 sep 10 15:07 .bash_logout -rw-r--r-- 1 tomcat tomcat 3116 sep 10 15:07 .bashrc -rw-r--r-- 1 tomcat tomcat 1374 sep 12 09:49 .keystore -rw-r--r-- 1 tomcat tomcat 675 sep 10 15:07 .profile Les commandes suivantes permette de vérifier le keystore. keytool -list -alias tomcat Tapez le mot de passe du Keystore : tomcat, 12 sept. 2009, PrivateKeyEntry, Empreinte du certificat (MD5) : 84:B3:12:B7:53:50:0E:AF:E2:DC:3D:DD:3A:DC:16:97 tomcat@adi001:~$ keytool -list -keystore .keystore Tapez le mot de passe du Keystore : Type Keystore : JKS Fournisseur Keystore : SUN Votre Keystore contient 1 entrée(s) tomcat, 12 sept. 2009, PrivateKeyEntry, Empreinte du certificat (MD5) : 84:B3:12:B7:53:50:0E:AF:E2:DC:3D:DD:3A:DC:16:97 keytool -list -alias tomcat Tapez le mot de passe du Keystore : tomcat, 12 sept. 2009, PrivateKeyEntry, Empreinte du certificat (MD5) : 84:B3:12:B7:53:50:0E:AF:E2:DC:3D:DD:3A:DC:16:97 Sortir du user tomcat pour revenir à root. Modifier en suite le fichier serveur.xml, les lignes relatives à SSL sont par défaut commentées, retirer le commentaire et rajouter les deux clauses //keystoreFile// et //keystorePass//. user@machine:~$ **vi /usr/local/tomcat/conf/server.xml** ... ... Remarque : pour n'autoriser que le protocole sécurisé, il suffit de commenter la section relative au port 8080. Redémarrer tomcat user@machine:~$ **/etc/init.d/tomcat restart** Les commandes suivantes montrent l'ouverture du port 8443 user@machine:~$ **netstat -ltaupen** Connexions Internet actives (serveurs et établies) Proto Recv-Q Send-Q Adresse locale Adresse distante Etat User Inode PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 103 4820 1946/mysqld tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 4732 1864/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 0 5080 2069/master tcp 0 0 192.168.1.110:22 192.168.1.3:42188 ESTABLISHED 0 10120 3667/0 tcp6 0 0 127.0.0.1:8005 :::* LISTEN 1000 10697 3933/java tcp6 0 0 :::8009 :::* LISTEN 1000 10695 3933/java tcp6 0 0 :::8080 :::* LISTEN 1000 10685 3933/java tcp6 0 0 :::22 :::* LISTEN 0 4730 1864/sshd tcp6 0 0 :::8443 :::* LISTEN 1000 10691 3933/java user@machine:~$ **nmap localhost** Starting Nmap 4.62 ( http://nmap.org ) at 2009-09-12 10:38 CEST Interesting ports on localhost (127.0.0.1): Not shown: 1709 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 3306/tcp open mysql 8009/tcp open ajp13 8080/tcp open http-proxy 8443/tcp open https-alt Nmap done: 1 IP address (1 host up) scanned in 0.153 seconds Pointer un navigateur sur https://192.168.1.110:8443 et accepter le certificat afin de le charger dans Firefox. Cette manipulation doit être faite sur tous les clients désirant accéder à OpenSI. Le certificat étant auto-signé, le navigateur Firefox ne peut le valider comme si il émanait de Verisign ( c'est possible mais plus cher !!! ) Il suffit ensuite de paramétrer le client OpenSI en cochant le case "serveur sécurisé" et en changeant le port de 8080 à 8443. ====== Compilation du client OpenSI ====== A affiner... mkdir opensi.tmp cp opensi.xpi opensi.tmp cd opensi.tmp unzip opensi.xpi ls rm -f opensi.xpi mv chrome chrome.old mkdir chrome cd chrome.old jar -xf opensi.jar ls rm -f opensi.jar # faire les modifications, revenir juste sous chrome.old jar -cf opensi.jar * mv opensi.jar ../chrome cd .. rm -fR chrome.old zip -r opensi.xpi * ======Conclusion===== En respectant toute ces directives votre serveur devrait tenir la route un bon moment, pensez à le blinder un peu notamment au niveau des partitions comme expliqué au début. **Très important :**\\ J'insiste encore sur ce point, toutes les commandes se font sous le compte du root.\\ La seule exception passe par un //su - tomcat// pour la création de la sauvegarde distante. L'utilisation d'un autre compte fera échouer le processus pour des questions de droits.\\ Utiliser root pour installer un serveur en production ne pose aucun problème, car en utilisation ce sont les comptes tomcat et mysql qui font tourner les services.\\ Ne cédez pas à la tentation du chmod -R 777 * !!!!