Installation - v-l-m/vlm GitHub Wiki

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.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_24''' (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 php5-dev php5-mysql php5-gd swig apache2 mysql-server unzip zip gzip libgd2-xpm-dev libpng12-dev libjasper-dev sudo make mytop apachetop mysqltuner ntpdate mailutils exim4 php5-curl curl gfortran libgfortran3
  • 0.2.1 subversion (debian: apt-get install subversion)
  • 0.2.2 php5 (debian: apt-get install php5 php5-cli 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 gzip)
  • 0.2.7 gfortran (debian: apt-get install gfortran libgfortran3 (pour cnvgrib)
  • 0.2.8 libgd, jasper, png (debian: apt-get install libgd2-xpm-dev libpng12-dev libjasper-dev
  • 0.2.9 sudo (debian: apt-get install sudo pour certains scripts.
  • 0.2.10 mytop apachetop mysqltuner apt-get install mytop apachetop mysqltuner pour le monitoring
  • 0.2.11 ntpdate (debian: apt-get install ntpdate pour synchroniser le temps du serveur
  • 0.2.12 make (debian : apt-get install make pour MAKE)
  • 0.2.13 exim (debian : apt-get install mailutils exim4) pour l'envoi de mails
  • 0.2.14 curl (debian : apt-get install curl php5-curl) pour utiliser les api twitter et facebook

##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

##0.4 Prérequis de données

  • 0.4.1 Pour l'instant, vous devez récupérer un export d'un des serveurs de dev pour disposer à la fois des schémas et des données de base pour votre instance. Adressez vous aux développeurs.
  • 0.5 Prérequis systèmes
    • 0.5.1 Optionnel : pour plus de confort, il est préférable de donner les droits à l'utilisateur de redémarrer le démon apache
      • en editant via visudo le fichiers sudoers et en donnant par exemple cette configuration :

        User_Alias APACHEMASTERS = vlm Cmnd_Alias APACHE = /etc/init.d/apache2 restart APACHEMASTERS ALL = NOPASSWD: APACHE

        User_Alias MYSQLMASTERS = vlm Cmnd_Alias MYSQL = /etc/init.d/mysql restart MYSQLMASTERS ALL = NOPASSWD: MYSQL

      • OU en copiant le fichier ad-hoc

        sudo cp /home/vlm/conf/sudo.vlm.dist /etc/sudoers.d/vlm sudo chmod 0440 /etc/sudoers.d/vlm

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

##Base de l'installation

  • 1.0 Système :

    • 1.0.1 Installer les dépendances (Cf. 0.2)
    • 1.0.2 Créer un utilisateur ad-hoc (debian : adduser vlm)
  • 1.1 Début installation :

    • 1.1.1 se placer à la racine (exemple : /home/vlm

    • 1.1.2 $ wget http://dev.virtual-loup-de-mer.org/vlm/browser/trunk/hosting/scripts/install.sh?format=txt -O install.sh ou plutot copier le script install.sh à partir de github

    • 1.1.3 $ source install.sh V_0_24 (pour la branche V_0_24)

    • 1.1.4 Editer le fichier ~/.subversion/servers et ajouter :

      store-passwords = yes
      store-plaintext-passwords = yes
      
    • 1.2 Configuration :

      • 1.2.1 vérifier que la variable VLMRACINE est fixée de façon permanente
        • 1.2.1.0 Se déconnecter de l'user vlm et se reconnecter, puis echo $VLMRACINE. Si ce n'est pas renseigné, faire une des étapes qui suit.
        • 1.2.1.1 configuration globale (en root) :
          • via /etc/profile $ cp /home/vlm/conf/profile.d.vlm_global.sh.dist /etc/profile.d/vlm_global.sh
          • via /etc/bash.bashrc : ajouter export VLMRACINE=/home/vlm à la fin du fichier.
        • 1.2.1.2 configuration au niveau user, exemple via le .bashrc et le .profile:
          • echo "export VLMRACINE=/home/vlm" >> .bashrc
          • echo "export VLMRACINE=/home/vlm" >> .profile
        • 1.2.1.3 '''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)
      • activez les notices php (Cf. commentaire dans la conf) pour le moteur
    • 1.2.3 (Optionnel) Nommer l'hôte dans l'etc/hosts

      • par exemple : 127.0.1.1 vlm (NB: vboxvlm pour une VM virtualbox)
  • 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. Si vous n'avez pas encore créé la base, vous aurez une erreur d'accès interdit à vlm@localhost que vous pouvez ignorer

##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 (en root): < $ 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 (en root): 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 Copier le fichier sysctl de vlm dans sysctl.d (en root) : cp /home/vlm/conf/sysctl.d.vlm.sysctl.conf.dist /etc/sysctl.d/vlm.sysctl.conf

  • 1.6.4 (Alternative au 1.6.3) Ajouter les lignes suivantes au fichier /etc/sysctl.conf (en root)

    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.6.5 prise en compte du nouveau systcl (en root): sysctl -p /etc/sysctl.d/vlm.sysctl.conf

  • 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 http://www.nco.ncep.noaa.gov/pmb/codes/GRIB2/ et l'installer dans ~/bin (VLMBIN) Cf. CompilerCnvgrib
    • 1.7.3 Lancer manuellement $ ~/bin/noaa.sh 00|06|12|18 (suivant l'horaire GMT). Vérifier le retour dans vlmdatas/grib/logs.txt
    • 1.7.4 Déclarer le crontab (utiliser VLMJEUROOT/grib/crontab.example 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.6.1 Copie : cp $VLMRACINE/vlmcode/grib/windserver.sh /etc/init.d/windserver
    • 1.7.6.2 Prise en charge suivant les runlevels update-rc.d windserver start 30 2 3 4 5 . stop 70 0 1 6 .
    • 1.7.6.3 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.7.8 (optionnel) déclarer un vhost grib.vlm.org en se basant sur l'exemple grib.vhost.example et vérifier le param.php pour l'url de gribs
    • 1.7.9 (optionnel -tant qu'on n'a pas besoin du câche de gribtiles) Compiler http://ftp.cpc.ncep.noaa.gov/wd51we/gribw/gribw.tar et l'installer dans ~/bin (VLMBIN)
  • 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)

  • 1.9 Installer WGrib2

#Base Mysql

  • 2.0 Serveur mysql ( 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.0.1 Paramètrage de la base mysql : Voir le fichier my.cnf.debian.diff notamment pour les différences avec une stock debian.
    • 2.0.2 (Optionnel) Outils de monitoring
      • mytop : apt-get install mytop
      • mysqltuner : apt-get install mysqltuner
  • 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) (cf base_conf)
    • 2.2.2 allez dans ~/vlmcode (ou VLMJEUROOT), puis dans base/scripts {{chmod u+x init.sh}}
    • 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) For the record, mode op sur testing
      • 2.3.1.1 $ chmod u+x dump.sh
      • 2.3.1.2 $ ./dump.sh et transférer le vlmdump sur votre instance
    • 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)
    • pour un serveur de dev, pensez à modifier les clefs suivantes :
    • define("EMAIL_COMITE_VLM", "[email protected]");
    • define("MAIL_PREFIX", "VLM_".SERVER_NAME);
    • define("DISPLAY_LANG_WARNINGS", True);

#Le site, les images, le phpcommon ...

    1. 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 (site, lib/phpcommon medias guest_map jvlm externals)
      • 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).
        #Les logs doivent aller dans $VLMLOG/apache2
        #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 [email protected]

           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>
  * 3.1.4 créer le répertoire $VLMLOG s'il n'existe pas déjà
  * 3.1.5 Compléter le fichier /etc/hosts si nécessaire. Exemple : `127.0.1.1       vlm`
  * 3.1.6 Activation de l'hôte virtuel `sudo a2ensite vlm`
  * 3.1.7 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' et le module 'headers' de apache : `a2enmod expires` `a2enmod headers`
        * 3.1.6 activez l'extension vlmc dans le fichier php.ini
        * Ajouter la ligne au fichier php.ini `extension=vlmc.so`
        * ou (debian way) `mv /home/vlm/conf/vlmc.ini.dist /etc/php5/apache2/conf.d/vlmc.ini`
        * 3.1.7 (Optionnel pour debian < 6 et ubuntu < 10.4) : Recompiler php-gd : http://cumu.li/2008/5/13/recompiling-php5-with-bundled-support-for-gd-on-ubuntu
        * 3.1.8 redémarrer apache `/etc/init.d/apache restart`

        #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 (Opération longues a cause des downloads):
    • 3.2.1 déployer le module 'maps'
    • 3.2.2 Automatique, le script suivant va se lancer ./init-gshhs.sh
      • le téléchargement s'opère et les fichiers sont décompressés dans le même répertoire
      • si vous avez plusieurs serveurs à déployer, vous pouvez éviter de retélécharger les maps en les copiant d'un serveur à l'autre depuis VLMDATAS/maps/
    • 3.2.3 Automatiquement, les maps vont être regénérées dans mysql par le script gshhs2mysql/import-gshhs.sh
    • 3.2.4 déployer le module clip_gshhs Il faudra peut être ajuster l'url de récupération (vlm) des fichiers de bd pour les côtes. (penser à configurer le TILES_G_PATH si nécessaire dans le conf/param.php)

#Le moteur sur le serveur maître

    1. 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

#(Optionnel) Les ajouts

    1. Logrotate
    • 5.1 apt-get install logrotate
    • 5.2 Installer la rotation pour les logs apache de vlm cp /home/vlm/conf/vlm-apache2.logrotate.dist /etc/logrotate.d/
    1. Awstats
    • 6.1 apt-get install awstats et se référer à la documentation d'installation (ou ici, par exemple :

    • 6.2 Configurer :

      HostAliases="localhost 127.0.0.1 REGEX[.*(virtual-loup-de-mer|v-l-m).org$]" LogFile="/home/vlm/logs/apache2/vlm_access_log" LogFormat=1 SiteDomain="virtual-loup-de-mer.org" LoadPlugin=tooltips LoadPlugin=ipv6 LoadPlugin=hostinfo

    • 6.3 Ne pas laisser Awstat en libre accès

    1. Paramètrage optionnel des vhosts dédiés au cache
    • 7.1 Activer mod rewrite a2enmod rewrite expires
    • 7.2 configurer le vhost en utilisant hosting/conf/apache.vhost.cache.example
    1. Synchro NTP : ajouter un fichier dans /etc/cron.hourly/ contenant

    #!/bin.sh ntpdate-debian

    1. modcache
    • a2enmod cache
    • cp ~/conf/disk_cache.conf.dist /etc/apache2/mods-available/disk_cache.conf
    • cp ~/conf/default.apache2.dist /etc/default/apache2
    1. Perf apache (pour 8Go de ram), dans /etc/apache2/apache2.conf Timeout 60

      #Prefork MPM StartServers 10 MinSpareServers 5 MaxSpareServers 10 ServerLimit 512 MaxClients 256 MaxRequestsPerChild 255

⚠️ **GitHub.com Fallback** ⚠️