This file describes how to install a virtual loup-de-mer server on your plateform. See http://dev.virtual-loup-de-mer.org/vlm/wiki/installation for the last (french) version

Notes pour le lecteur

Il est probable que cette documentation n'est pas à jour au moment ou vous essayez de l'appliquer pour installer votre propre serveur Vlm.

Merci

  • de lire l'historique des fichiers RELEASE (dans hosting) et UPGRADE (dans base) notamment
  • de mettre à jour cette page

Prérequis

  • 0. Préalables
    • 0.1 Sémantique de la configuration
      • 0.1.1 répertoire de base = racine de vlm = VLMRACINE
        • par exemple /home/vlm
      • 0.1.2 répertoire de déploiement = racine du jeu = VLMJEUROOT = VLMRACINE/vlmcode
      • 0.1.3 répertoire de conf = VLMRACINE/conf
      • 0.1.4 répertoire de scripts = VLMRACINE/scripts
      • 0.1.5 branche utilisée = VLMSVNBRANCH = V_0_13 (pour la version de maintenance actuelle)
      • 0.1.6 utilisateur utilisé pour le serveur de vent = VLMGRIBUSER
    • 0.2 Prérequis logiciels
      • 0.2.0 Tous les prérequis debian en une seule commande : apt-get install subversion php5 php5-cli php-config php5-dev php5-mysql php5-gd swig apache2 mysql-server unzip gunzip zip gzip
      • 0.2.1 subversion (debian: apt-get install subversion)
      • 0.2.2 php5 (debian: apt-get install php5 php5-cli php-config php5-dev php5-mysql php5-gd)
      • 0.2.3 swig 1.3.36 ou > (debian: apt-get install swig).
        • Sur d'autres systemes (RHEL / CentOS), le compiler (choisir pour l'instant 1.3.36, même si 1.3.37 est disponible) :

wget -O - http://downloads.sourceforge.net/swig/swig-1.3.36.tar.gz | tar xz && chown -R 0.0 swig-1.3.36 ; cd swig-1.3.36 && ./configure --prefix=/opt/swig --with-php=$(\which php) && make && make install

Il est alors installé dans /opt/swig. Cela suppose que vous ayez pour la suite /opt/swig/bin dans votre PATH.

  • 0.2.4 apache (debian: apt-get install apache2)
  • 0.2.5 mysql (debian: apt-get install mysql-server) donner un mot de passe pour la base MySQL, il vous sera demandé plus tard.
  • 0.2.6 unzip dans votre path et installé (debian: apt-get install unzip)
  • 0.3 Attention à :
    • 0.3.1 Lancer les opérations avec le bon user. Il est recommandé d'avoir un seul utilisateur (unix) vlm qui lance tous les scripts et qui sert aux déploiements.
    • 0.3.2 Le VLMRACINE doit toujours être exporté d'une manière ou d'une autre. Cela peut vouloir dire par exemple ajouter VLMRACINE=/home/vlm en tête des crontab

Les outils de déploiement, l'installation de base

  • 1. Installation de base
    • 1.1 Début installation :
      • 1.1.1 se placer à la racine
      • 1.1.2 $ wget http://dev.virtual-loup-de-mer.org/vlm/browser/trunk/hosting/scripts/install.sh?format=txt -O install.sh
      • 1.1.3 $ source install.sh V_0_13 (pour la branche V_0_13)
    • 1.2 Configuration :
      • 1.2.1 vérifier que la variable VLMRACINE est fixée de façon permanente (optionnel)
        • 1.2.1.1 exemple via le .bashrc et le .profile:
          • ajouter export VLMRACINE=/home/vlm à la fin du fichier ~/.bashrc ou /etc/bashrc :
            • {{echo "export VLMRACINE=/home/vlm" >> .bashrc}}}
            • {{echo "export VLMRACINE=/home/vlm" >> .profile}}}
        • 1.2.1.2 NB: IL FAUDRA AUSSI AJOUTER VLMRACINE=/home/vlm en tête des crontab
      • 1.2.2 adapter les options de configuration dans conf/*.dist en supprimant l'extension .dist
        • attention aux chemins php, notamment (Cf. commentaires pour les chemins debian types)
      • 1.2.3 (Optionnel) Nommer l'hôte dans l'etc/host
        • par exemple : 127.0.1.1 vlm
    • 1.3 Test de la configuration de base :
      • 1.3.0 executer $ ~/scripts/testconf.sh
      • 1.3.1 => les répertoires VLMGSHHS, VLMGRIBS, VLMTEMP et VLMJEUROOT sont créés conformément à la configuration
      • 1.3.1 faire la maj de scripts avec $ ~/scripts/maj_scripts.sh
      • 1.3.2 => on doit avoir une mise à jour de ~/scripts
    • 1.4 Test de la configuration de déploiement :
      • 1.4.1 $ ~/scripts/maj_module.sh hosting
      • 1.4.2 => on doit avoir le module hosting qui se crée dans le répertoire de déploiement (~/vlmcode/hosting). Ce déploiement ne sert à rien à proprement parler, il teste juste la disponibilité de VLMJEUROOT

Serveur de vent : grib & vlm-c

  • 1.5 Test du déploiement (et de la compilation) de vlmc
    • 1.5.1 $ ~/scripts/maj_module.sh lib/vlm-c => la compilation doit avoir lieu modulo quelques warnings,
    • 1.5.2 vous devez avoir les fichiers .so et php dans ~/bin/lib (ou ailleurs suivant votre configuration)
    • 1.5.3 vous devez avoir windserver dans votre ~/bin
  • 1.6 Configuration pour php & vlm-c
    • 1.6.1 Créer le lien symbolique depuis le répertoire des extensions php vers bin/lib
      • exemple: $ ln -s /home/vlm/bin/lib/vlmc.so `php-config --extension-dir`/vlmc.so
      • Si PHP est compilé manuellement par vous, le répertoire des extensions de PHP n'est peut-être pas créé. Son nom est donné par la commande "php-config --extension-dir". S'il n'existe pas, créez le avant de continuer.
  • 1.6.2 Créer le lien symbolique depuis le répertoire inclus par défaut par php vers bin/lib
    • exemple: $ ln -s /home/vlm/bin/lib/vlmc.php /usr/share/php/vlmc.php
    • Ce chemin d'accès peut être différent, par exemple /opt/php/lib/php, pour un php compilé et installé avec un prefix=/opt/php
  • 1.6.3 Ajouter les lignes suivantes au fichier /etc/sysctl.conf
       # Controls the maximum size of a message, in bytes
       kernel.msgmnb=65536
       # Controls the default maximum size of a message queue
       kernel.msgmax=65536
       # Controls the maximum shared segment size, in bytes
       kernel.shmmax=2147483648
       # Controls the maximum number of shared memory segments, in pages
       kernel.shmall=2097152
  • 1.7 Configuration de la récupération des gribs (serveur maitre)
    • 1.7.1 Déployer le module grib : $ ~∕scripts/maj_module.sh grib
    • 1.7.2 Compiler cnvgrib et l'installer dans ~/bin (VLMBIN)
    • 1.7.3 Lancer manuellement $ ~/bin/noaa.sh 00|06|12|18 (suivant l'horaire GMT).
    • 1.7.4 Déclarer le crontab (utiliser VLMJEUROOT/grib/crontab.sample comme exemple)
    • 1.7.5 Déclarer VLMGRIBUSER dans le script de configuration (voir VLMRACINE/conf/conf_script)
    • 1.7.6 Déclarer l'init du windserver au boot (script d'init en exemple fournit dans VLMJEUROOT/grib)
      • 1.7.7 Lien symbolique dans l'init.d :
      • 1.7.8 Prise en charge suivant les runlevels

update-rc.d windserver start 30 2 3 4 5 . stop 70 0 1 6 .

  • 1.7.9 N'oubliez pas que VLMRACINE doit être déclaré
  • 1.7.7 Pour démarrer le windserver en manuel (utile pour une installation en local)
           $ $VLMRACINE/vlmcode/grib/windserver.sh start
    
    (stop pour le stopper)
  • 1.8 Configuration de la récupération des gribs (serveur esclave)
    • 1.8.1 faire les 1.7.1 & 1.7.2 & 1.7.5 & 1.7.6
    • 1.8.2 Lancer manuellement $ ~/bin/noaa-slave.sh 00|06|12|18 (suivant l'horaire).
    • 1.8.3 Déclarer le crontab (utiliser VLMJEUROOT/grib/crontab.slave.example comme exemple)
  • 1.9 Unit test de vlm-c : $ php --define extension=vlmc.so ~/vlmcode/lib/vlm-c/php/vlmc-shm-unittest.php
    • => visualiser le résultat (sortie html)

La base Mysql

  • 2 Install de la base mysql sur le serveur maître (NB: si elle existe déjà, sauter cette étape mais lire le fichier UPDATE du module base)
    • 2.1 Déploiement du module base : $ ~/scripts/maj_module.sh base
    • 2.2 Installation de la base de données mysql...
      • 2.2.1 vérifiez que vous avez bien paramétré le fichier ~/conf/conf_base (NB: l'utilisateur configuré dans ~/conf/conf_base ne dois pas exister, l'utilisateur 'temporary' non plus)
      • 2.2.2 allez dans ~/vlmcode (ou VLMJEUROOT), puis dans base/scripts
      • 2.2.3 Lancez $ ./init.sh. il vous demande le mot de passe administrateur de la base de donnée et crée l'utilisateur vlm et sa base
    • 2.3 Importation des données
      • 2.3.1 Récupèrez (demandez sur la ml) un dump mysql gzippé (il est produit avec le script base/scripts/dump.sh)
      • 2.3.2 lancez $ ./importdump.sh vlmdump.sql.gz
      • 2.3.3 Lisez le fichier UPDATE au cas ou
    • 2.4 Configuration du fichier param.php (en reportant la conf de la base de donnée)

Le site, les images, le phpcommon …

  • 3. Install du php+apache sur chaque serveur
    • 3.1 déploiement des autres modules
      • 3.1.1 lister les modules via ~/scripts/maj_module.sh
      • 3.1.2 installer (ou réinstaller) chaque module de la liste via ~/scripts/maj_module.sh NOMDUMODULE
      • 3.1.3 configurer le vhost en le pointant vers ~/vlmcode/site en s'inspirant de l'exemple apache.vhost.example qui est dans le répertoire conf)

Exemple de configuration d'Apache en local (localhost):
Fichier /etc/apache2/sites-available/vlm

       #/home/vlm/vlmcode est le chemin d'hébergement des fichiers de vlm
       #/home/vlm/vlmcode/site/ est le vhost servi par apache

       <VirtualHost *:80>
           ServerAdmin admin@mail.com

           DocumentRoot /home/vlm/vlmcode/site
           ServerName vlm
           ServerAlias vlm

           ErrorLog    /var/log/apache2/vlm_error_log
           CustomLog   /var/log/apache2/vlm_access_log combined

           <Directory /home/vlm/vlmcode/site>
               DirectoryIndex index.php index.html

               Order Allow,Deny
               Allow from All

               AllowOverride All
               Options Indexes Includes

               AddType application/x-httpd-php .php

           </Directory>

       </VirtualHost>

Ligne à ajouter au fichier /etc/hosts

       127.0.1.1       vlm

Activation de l'hôte virtuel

       $ sudo a2ensite vlm

On redémarre apache

       $ sudo /etc/init.d/apache2 reload
  • 3.1.4 vérifiez vos fichiers de configuration (notamment conf_htaccess)
    Exemple de fichier $VLMRACINE/vlmcode/site/.htaccess
           <Files /f_windAtPosition.php>
                  Order Allow,Deny
                  Deny from All
           </Files>
           <IfModule mod_php5.c>
                  php_value include_path ".:/home/steph/vlmsite/vlmcode/lib/phpcommon:/usr/share/php:"
           </IfModule>
           Options Indexes Includes FollowSymLinks
    
  • 3.1.5 activez le module 'expires' de apache : $ a2enmod expires
  • 3.1.6 activez l'extension vlmc dans le fichier php.ini
    Ajouter la ligne au fichier php.ini
           extension=vlmc.so
    

En configuration local, si tout va bien, quand vous tapez http://vlm/ dans votre navigateur préféré votre VLM arrive :)

  • 3.2 Installer les cartes gshhs :
    • 3.2.1 déployer le module 'maps'
    • 3.2.2 se placer dans maps/gshhs
    • 3.3.3 lancer le script ./init-gshhs.sh
      • le téléchargement s'opère et les fichiers sont décompressés dans le même répertoire

Le moteur sur le serveur maître

  • 4. Mise en place du moteur
    • 4.1 déployer le moteur si ce n'est déjà fait via ~/scripts/maj_modules.sh moteur
    • 4.2 utiliser le crontab.example comme exemple pour paramètrer le cron

Notes pour les versions futures