Developpement - v-l-m/vlm GitHub Wiki
Cette page vise à expliquer une manière de monter son environnement de développement pour pour vlm
- Disposer de plusieurs vhost de développement en prise directe avec un checkout local du subversion de type :
- http://trunk.vlm.foo.com pour le trunk
- http://prod.vlm.foo.com pour la branche de maintenance actuelle
- pouvoir juste faire un
svn update
pour mettre à jour ces vhosts
- 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
- 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 souhaitez, 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.
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
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.
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...
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
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)
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: /