Developpement - v-l-m/vlm GitHub Wiki

Cette page vise à expliquer une manière de monter son environnement de développement pour pour vlm

Objectif

  • Disposer de plusieurs vhost de développement en prise directe avec un checkout local du subversion de type :
  • pouvoir juste faire un svn update pour mettre à jour ces vhosts

Prérequis

  • avoir installé VLM comme indiqué dans Installation
  • la suite suppose que vous avez donc un répertoire /home/vlm qui est votre répertoire racine

Nota bene

  • le windserver & le module php issu de vlm-c seront nécessairement mutualisés. (répertoire ~/bin )
  • pour des raisons d'espaces disques, le répertoire contenant les gshhs sera mutualisés également

Contrairement à l'installation, le but est ici de pouvoir travailler dans le svn, et donc que vos modifications soient visibles sans avoir besoin de commiter.

En se plaçant dans votre répertoire racine, utiliser la commande :

svn co http://dev.virtual-loup-de-mer.org/svn/vlm svn

ce qui va créer un répertoire 'svn' contenant tout le subversion de vlm.

Le but est de pouvoir éventuellement disposer d'un vhost par branches du subversion.

Exemple de fichier vhost pour le trunk (1.2.3.4 est l'ip de votre serveur, foo.com votre domaine, vlm le sous domaine que vous avez utilisé dans l'installation précédente) :

<VirtualHost 1.2.3.4:80>
        ServerAdmin [email protected]
        DocumentRoot /home/vlm/svn/trunk/site
        ServerName trunk.vlm.foo.com
        ServerAlias vlm-trunk
        ErrorLog    /var/log/apache2/vlm_trunk_error_log
        CustomLog   /var/log/apache2/vlm_trunk_access_log combined
        <Directory /home/vlm/svn/trunk/site>
                DirectoryIndex index.php index.html
                Order Allow,Deny
                Allow from All
                AllowOverride All
                Options Indexes Includes
                AddType application/x-httpd-php .php
        </Directory>

Exemple de vhost pour la branche V_0_9 :

<VirtualHost 1.2.3.4:80>
        ServerAdmin [email protected]
        DocumentRoot /home/vlm/svn/branches/V_0_9/site
        ServerName prod.vlm.foo.com
        ServerAlias vlm-prod
        ErrorLog    /var/log/apache2/vlm_prod_error_log
        CustomLog   /var/log/apache2/vlm_prod_access_log combined
        <Directory /home/vlm/svn/branches/V_0_9/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>

Créez autant de vhost que vous avez de branches ou vous travaillez..

Dupliquez la base mysql si vous le souh‪aitez, vous pouvez sans problème utiliser une base par vhost. Mais le besoin est en général assez minime, les modifications de schema étant rares et en générale ascendantes.

Vous avez déjà tout configuré lors de l'installation initiale.

  • Créer un répertoire ~/svndatas/ qui contiendra entre autres les répertoires TEMP de chaque branche
  • Créer les sous répertoire (exemple : ~/svndatas/tmp-trunk)
  • Pour chaque branche, mettez vous dans le répertoire site et créer le lien symbolique vers les images. Exemple : ln -s ../medias/images/ images

Les fichiers de configuration et les liens symboliques peuvent être créé au sein des répertoires du subversion sans en faire partie. Ne les ajoutez pas avec svn add !!!

A la fin de cette installation, quand vous ferez un 'svn status', vous verrez :

?      conf
?      site/images
?      site/.htaccess
?      site/robots.txt
?      lib/phpcommon/param.php
?      hosting/conf/conf_script

Le ? signifie que le fichier n'est pas versionné, et c'est normal.

.htaccess

Dans chaque branche sur laquelle vous travaillez, créez votre fichier .htaccess.

Exemple pour le trunk, fichier ~/svn/trunk/site/.htaccess

<Files /f_windAtPosition.php>
  Order Allow,Deny
  Deny from All
</Files>
<IfModule mod_php5.c>
  php_value include_path ".:/home/vlm/svn/trunk/lib/phpcommon:/usr/share/php:"
  php_value extension vlmc.so
</IfModule>
Options Indexes Includes FollowSymLinks

param.php

Dans chaque branche sur laquelle vous travaillez, créez votre fichier param.php à partir du fichier hosting/conf/param.php.dist.

Exemple pour le trunk, fichier ~/svn/trunk/lib/phpcommon/param.php :

<?php
define("SERVER_NAME", "VLMTEST-TRUNK");

/********to_be_change****************/
define("DBSERVER", "localhost");
define("DBUSER", "vlm");
define("DBPASSWORD", "foobar");
define("DBNAME", "vlm");

// Stockage des gshhs, idem que VLMGSHHS dans conf_script
define("GSHHS_DIRECTORY", "/home/vlm/gshhs");

// SYSTEME DE GESTION DU VENT : OLD, NEW, NO, SPF
define("SYSTEME_WIND_AT_POSITION", "SPF");

//TEMPORARY DIR : idem que $VLMTEMP = $VLMRACINE/tmp dans conf_script
define("VLMTEMP", "/home/vlm/svndatas/tmp-trunk");

?>

NB :

  • c'est a cet endroit qu'il faut spécifier la base de donnée éventuellement spécifique à la branche
  • le paramètrage du GSHHS_DIRECTORY utilise le même répertoire que l'installation initiale
  • le répertoire VLMTEMP pointe vers le répertoire que nous avons créé précédemment.

conf_script

Pour pouvoir tester des runs du moteur, il est nécessaire de configurer le conf_script pour chaque branche. Il y a une différence d'arborescence qui nécessaire un lien symbolique. Ce qui s'appeller le VLMRACINE est la racine de la branche

Pour chaque branche :

  • en se placant à la racine de la branche, créer un lien symbolique ln -s hosting/conf conf
  • copier le fichier hosting/conf/conf_script.dist en hosting/conf/conf_script et éditez le
  • tout n'est pas utile, mais il faut modifier au moins les clefs suivantes :
    • export VLMJEUROOT=$VLMRACINE
    • export VLMTEMP=/home/vlm/svndatas/tmp-trunk
    • personnalisez pour qu'il trouve votre binaire php export VLMPHPPATH="/opt/php/bin/php --define extension=vlmc.so --define include_path=.:/opt/php/lib/php:$VLMJEUROOT/lib/phpcommon"
    • personnalisez d'autres clefs si vous savez ce que vous vous faites...

execution à la maine

Les scripts shell de VLM présupposent que la variable VLMRACINE est définie.

Donc si vous souhaitez lancer un run moteur, par exemple, dans la branche trunk, il faut avoir défini la variable

Exemple :

VLMRACINE=/home/vlm/svn/trunk ; /home/vlm/svn/trunk/moteur/cron-vlm.sh

Crontab

Il est nécessaire de préceder les lignes qui vont s'appliquer à une branche donnée par l'affectation correcte de VLMRACINE (Cf. exemple dans le moteur)

Fichier robots.txt

Si vous faites l'install ci dessus sur un serveur connecté à un internet, vous ne souhaitez sans doute pas être référencé par les moteurs de recherche (ne serait ce que pour une question de charge serveur). Dans ce cas, créer un fichier robots.txt dans 'site' qui contient :

User-Agent: *
Disallow: /
⚠️ **GitHub.com Fallback** ⚠️