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
-
- 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
#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.
- via /etc/profile
- 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.1 vérifier que la variable VLMRACINE est fixée de façon permanente
-
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.3.0 executer
-
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
- 1.4.1
##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.5.1
-
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.
- exemple (en root): <
- 1.6.1 Créer le lien symbolique depuis le répertoire des extensions php vers bin/lib
-
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
- exemple (en root):
-
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)
kernel.msgmnb=65536
kernel.msgmax=65536
kernel.shmmax=2147483648
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.7.1 Déployer le module grib :
-
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
- mytop :
- 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.1.1
- 2.3.2 lancez
$ ./importdump.sh vlmdump.sql.gz
- 2.3.3 Lisez le fichier UPDATE au cas ou
- 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.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 ...
-
- 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).
- 3.1.1 lister les modules via
#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
-
- 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
-
- 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/
-
- 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
-
- 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
-
- Synchro NTP : ajouter un fichier dans /etc/cron.hourly/ contenant
#!/bin.sh ntpdate-debian
-
- modcache
a2enmod cache
cp ~/conf/disk_cache.conf.dist /etc/apache2/mods-available/disk_cache.conf
cp ~/conf/default.apache2.dist /etc/default/apache2
-
-
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
-