Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

« Projet dev » : différence entre les versions

De AJLSM
Aller à la navigation Aller à la recherche
 
(42 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
= Prérequis =
== Installer des paquets ==
<syntaxhighlight lang="bash">
sudo apt-get install subversion ant openjdk-7-jdk
</syntaxhighlight>
== Configurer l'accès au SVN en SSH ==
Le projet dev est dans SVN sur le serveur moorea. SVN est accessible depuis l'exterieur depuis le host  svn.ajlsm.com, mais à l'interne à 192.168.123.16. Parce que j'utilisent le projet dev sur des serveurs à distant comme mercure mais aussi au bureau, je configure le fichier /etc/hosts pour le host svn.ajlsm.com :
<syntaxhighlight lang="bash">
192.168.123.16  moorea svn.ajlsm.com redmine.ajlsm.com mw.ajlsm.com
</syntaxhighlight>
Sur le serveur moorea, configuration de l'utilisateur (remplacer ctate par votre utilisateur).
<syntaxhighlight lang="bash">
groupadd ctate
useradd -m -k -d -g ajlsm ctate
usermod -G ajlsm,ctate ctate
passwd ctate
vi /etc/ssh/sshd_config
/etc/init.d/sshd restart
</syntaxhighlight>
Sur la nouvelle machine du développeur :
<syntaxhighlight lang="bash">
ssh-keygen -t dsa
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_dsa.pub ctate@192.168.123.16
ssh-copy-id -i ~/.ssh/id_rsa.pub ctate@192.168.123.16
</syntaxhighlight>
== Environnement Linux ==
On commence par éditer le fichier {{path|/home/$USER/.profile}} et ajouter cette ligne :
<syntaxhighlight lang="bash">
export JAVA_HOME=/usr/lib/jvm/default-java
</syntaxhighlight>


= Quickstart =
= Quickstart =


Voici les étapes à suivre, détaillées plus bas:
# Vérifier les [[Projet_dev#Prérequis|pré-requis]]
# Création du domaine OVH
# Création du domaine OVH
# Sélection du préfix du port Tomcat dédié pour le client
# Sélection du préfix du port Tomcat dédié pour le client
Ligne 46 : Ligne 11 :
== Liste des ports utilisées ==
== Liste des ports utilisées ==
{| class="wikitable"
{| class="wikitable"
! 110 !! ad33
|-
! 164 !! ad64
|-
! 230 !! ad971
|-
! 240 !! ad971-facet
|-
|-
! 301 !! acf
! 301 !! acf
Ligne 67 : Ligne 39 :
! 310 !! obspm  
! 310 !! obspm  
|-
|-
! 30 !!
! 311 !! demo
|-
! 30 !!
|-
! 30 !!
|-
! 30 !!
|-
! 30 !!
|-
! 30 !!  
|-
|-
! 30 !!  
! 312 !! testerpleade
|-
|-
! 30 !!  
! 313 !! formation
|-
|-
! 30 !!  
! 314 !! kandinsky
|-
|-
! 30 !!  
! 315 !! ad21-rd
|-
|-
! 30 !!  
! 316 !! ad21-og
|-
|-
! 30 !!  
! 105 !! bm-orleans
|}
|}


== En local ==
== En local ==
Côté dépôt
<syntaxhighlight lang="bash">
cd /tmp
mkdir MonNouveauClient
mkdir mkdir branches tags trunk
cd trunk
cp -rp ~/Workspace/obspm/{dev,shell-scripts,specifications} .
sed -i -e s/obspm/MonNouveauClient/g dev/build.xml
svn import svn+ssh://192.168.123.16/home/svn/MonNouveauClient
</syntaxhighlight>
{{important|Pensez à créer / modifier le build.xml }}
Côté projet dev
Côté projet dev
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Ligne 110 : Ligne 83 :
  mkdir MonNouveauClient
  mkdir MonNouveauClient
  cp ../dev/workspace/build-workspace.xml .
  cp ../dev/workspace/build-workspace.xml .
  ant -f build-workspace.xml  
mkdir -p data/{cdc,datadir,ead,files,images,images-preparees,pdf}
mv MonNouveauClient/dev/obspm.properties MonNouveauClient/dev/MonNouveauClient.properties
  ant -f build_workspace.xml  
  # Il faut répondre avec le nom exact tel qu'il apparait dans la liste
  # Il faut répondre avec le nom exact tel qu'il apparait dans la liste
  ant build.pleade-libre  
  ant build.pleade-libre  
  ant build.pleade-entreprise  
  ant build.pleade-entreprise  
  ant build.MonNouveauClient
  ant build.MonNouveauClient
</syntaxhighlight>
Configuration du projet
<syntaxhighlight lang="bash">
cp app/build/pleade-libre/pleade-image/src/webapp/module-img-server/image-transformation-rules.xml data/images/
vim data/images/image-transformation-rules.xml
</syntaxhighlight>
<syntaxhighlight lang="xml">
<regles>
  <regle largeur=">500" hauteur=">500">
    <hidef role="hidef" />
  </regle>
</regles>
</syntaxhighlight>
<syntaxhighlight lang="bash">
svn commit -m "initial config"
</syntaxhighlight>
</syntaxhighlight>


Ligne 122 : Ligne 114 :
  ant create.db.user
  ant create.db.user
</syntaxhighlight>
</syntaxhighlight>
{{important|Si ant -f build_workspace plante avec la bibliothéque org.apache.bsf.engines.javascript, on peut utiliser l'éxécutable ant qui a été généré}}


== Sur la recette (vm: mercure) ==
== Sur la recette (vm: mercure) ==
Ligne 129 : Ligne 123 :
  mkdir MonNouveauClient
  mkdir MonNouveauClient
  cp ../obspm/build_workspace.xml .
  cp ../obspm/build_workspace.xml .
  ln -s ../obspm/dev  
  ln -s ../dev  
  ln -s ../obspm/pleade-libre
  ln -s ../pleade-libre
  ln -s ../obspm/pleade-entreprise
  ln -s ../pleade-entreprise
  ant -f build_workspace.xml
  ant -f build_workspace.xml
  # Il faut répondre à la question en indiquant le nom du client tel qu'il apparait dans la liste
  # Il faut répondre à la question en indiquant le nom du client tel qu'il apparait dans la liste
Ligne 137 : Ligne 131 :
  sudo cp obsm.ajlsm.com.conf MonNouveauClient.ajlsm.com.conf
  sudo cp obsm.ajlsm.com.conf MonNouveauClient.ajlsm.com.conf
  sed -i -e s/obspm/MonNouveauClient/g MonNouveauClient.ajlsm.com.conf
  sed -i -e s/obspm/MonNouveauClient/g MonNouveauClient.ajlsm.com.conf
vim MonNouveauClient.ajlsm.com.conf # modifier le port des ProxyPass et ProxyPassReverse avec celui du projet
  sudo a2ensite MonNouveauClient.ajlsm.com.conf
  sudo a2ensite MonNouveauClient.ajlsm.com.conf
cd ../sites-enabled
ln -s ../sites-available/MonNouveauClient.ajlsm.com.conf
  sudo service apache2 reload
  sudo service apache2 reload
  cd ~/recette/MonNouveauClient
  cd ~/recette/MonNouveauClient
  ant create.db.and.grant.user
  ant create.db.and.grant.user           # [mot de passe compte mysql ajlsm sur mercure]
  ant build.pleade-libre  
  ant build.pleade-libre  
  ant build.pleade-entreprise  
  ant build.pleade-entreprise  
Ligne 149 : Ligne 146 :


[[category:How To]]
[[category:How To]]
== Sur une prod Windows ==
=== Télécharger et installer ===
* http://sourceforge.net/projects/winqconsole/
* http://www.imagemagick.org/script/binary-releases.php#windows
=== Télécharger et mettre dans C:\Windows\System32 ===
* http://www.sliksvn.com/en/download
* http://the.earth.li/~sgtatham/putty/latest/x86/plink.exe
* http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe
* http://the.earth.li/~sgtatham/putty/0.62/x86/pageant.exe
* http://gnuwin32.sourceforge.net/packages/sed.htm
* http://sourceforge.net/projects/tailforwin32/
* Dans C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup, mettre un nouveau raccourci avec le cible:
** C:\Windows\System32\pageant.exe C:\Users\ctate\.ssh\id_rsa.ppk
<syntaxhighlight lang="bash">
mkdir .ssh
puttygen
</syntaxhighlight>
* [ Generate ]
* Mettre un mot de passe dans "Key passphrase:" et "Confirm passphrase:"
* [ Save public key ] ( Sauvegarder comme .ssh/id_rsa.pub )
* [ Save private key ] ( Sauvegarder comme .ssh/id_rsa.ppk )


= Les tâches ANT importantes =
= Les tâches ANT importantes =
Ligne 160 : Ligne 181 :


* drop.and.create.db: Pour supprimer la base de données et recommencer
* drop.and.create.db: Pour supprimer la base de données et recommencer
* build.dev: Il faut faire ça chaque fois que le projet dev ou un fichier client.properties est modifié.
* build.dev: Il faut faire ça chaque fois que le projet dev ou un fichier ''client.properties'' est modifié.


* luke : Voir les données dans lucene dans le datadir.
* luke : Voir les données dans lucene dans le datadir.
Ligne 171 : Ligne 192 :
</syntaxhighlight>
</syntaxhighlight>


{{important|Après un super.clean.rebuild il faut toujours supprimer le contenu des bases de données et les reconstruire avec drop.and.create.db}}
== Les tâches annexes ==
== Les tâches annexes ==
* create.db : pour créer la base de données seulement.
* create.db : pour créer la base de données seulement.
Ligne 465 : Ligne 487 :
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
ajlsm@mercure:~/recette/ad971/ad971$ svn commit -m "Modification des formulaires de recherche pour gmaps"
ajlsm@mercure:~/recette/ad971/ad971$ svn commit -m "Modification des formulaires de recherche pour gmaps"
</syntaxhighlight>
= Prérequis =
== Installer des paquets ==
<syntaxhighlight lang="bash">
sudo apt-get install subversion ant openjdk-7-jdk
</syntaxhighlight>
== Configurer l'accès au SVN en SSH ==
Le projet dev est dans SVN sur le serveur moorea. SVN est accessible depuis l'exterieur depuis le host  svn.ajlsm.com, mais à l'interne à 192.168.123.16. Parce que j'utilisent le projet dev sur des serveurs à distant comme mercure mais aussi au bureau, je configure le fichier /etc/hosts pour le host svn.ajlsm.com :
<syntaxhighlight lang="bash">
192.168.123.16  moorea svn.ajlsm.com redmine.ajlsm.com mw.ajlsm.com
</syntaxhighlight>
Sur le serveur moorea, configuration de l'utilisateur (remplacer ctate par votre utilisateur).
<syntaxhighlight lang="bash">
groupadd ctate
useradd -m -k -d -g ajlsm ctate
usermod -G ajlsm,ctate ctate
passwd ctate
vi /etc/ssh/sshd_config
/etc/init.d/sshd restart
</syntaxhighlight>
Sur la nouvelle machine du développeur :
<syntaxhighlight lang="bash">
ssh-keygen -t dsa
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_dsa.pub ctate@192.168.123.16
ssh-copy-id -i ~/.ssh/id_rsa.pub ctate@192.168.123.16
</syntaxhighlight>
== Environnement Linux ==
On commence par éditer le fichier {{path|/home/$USER/.profile}} et ajouter cette ligne :
<syntaxhighlight lang="bash">
export JAVA_HOME=/usr/lib/jvm/default-java
</syntaxhighlight>
</syntaxhighlight>

Dernière version du 28 juillet 2016 à 08:53

Voici les étapes à suivre, détaillées plus bas:

  1. Vérifier les pré-requis
  2. Création du domaine OVH
  3. Sélection du préfix du port Tomcat dédié pour le client
  4. Installation sur sa machine
  5. Installation sur la recette (vm mercure)

Liste des ports utilisées

[modifier | modifier le wikicode]
110 ad33
164 ad64
230 ad971
240 ad971-facet
301 acf
302 ad21
303 ad27
304 ad33
305 ad44
306 ad52
307 ad64
308 ad84
309 bm-dijon
310 obspm
311 demo
312 testerpleade
313 formation
314 kandinsky
315 ad21-rd
316 ad21-og
105 bm-orleans

Côté dépôt

 cd /tmp
 mkdir MonNouveauClient
 mkdir mkdir branches tags trunk
 cd trunk
 cp -rp ~/Workspace/obspm/{dev,shell-scripts,specifications} .
 sed -i -e s/obspm/MonNouveauClient/g dev/build.xml 
 svn import svn+ssh://192.168.123.16/home/svn/MonNouveauClient
Important :
Pensez à créer / modifier le build.xml .

Côté projet dev

 svn co svn+ssh://192.168.123.16/home/svn/dev
 cd dev/clients
 mkdir MonNouveauClient
 cd MonNouveauClient
 cp ../clients/obspm/client.xml .
 sed -i -e s/obspm/MonNouveauClient/g client.xml
 vim client.xml # mettre le nouvel port du projet (qui s'appelle un port >_<)
 svn commit # fini coté projet dev

Création du projet

 cd ~/Workspace
 mkdir MonNouveauClient
 cp ../dev/workspace/build-workspace.xml .
 mkdir -p data/{cdc,datadir,ead,files,images,images-preparees,pdf}
 mv MonNouveauClient/dev/obspm.properties MonNouveauClient/dev/MonNouveauClient.properties
 ant -f build_workspace.xml 
 # Il faut répondre avec le nom exact tel qu'il apparait dans la liste
 ant build.pleade-libre 
 ant build.pleade-entreprise 
 ant build.MonNouveauClient

Configuration du projet

 cp app/build/pleade-libre/pleade-image/src/webapp/module-img-server/image-transformation-rules.xml data/images/
 vim data/images/image-transformation-rules.xml
<regles>
  <regle largeur=">500" hauteur=">500">
    <hidef role="hidef" />
  </regle>
</regles>
 svn commit -m "initial config"

Ensuite, on peut configurer sa machine

 ant create.db.and.grant.user
 ant create.db.user


Important :
Si ant -f build_workspace plante avec la bibliothéque org.apache.bsf.engines.javascript, on peut utiliser l'éxécutable ant qui a été généré.

Sur la recette (vm: mercure)

[modifier | modifier le wikicode]
 ssh mercure
 cd recette
 mkdir MonNouveauClient
 cp ../obspm/build_workspace.xml .
 ln -s ../dev 
 ln -s ../pleade-libre
 ln -s ../pleade-entreprise
 ant -f build_workspace.xml
 # Il faut répondre à la question en indiquant le nom du client tel qu'il apparait dans la liste
 cd /etc/apache2/sites-available
 sudo cp obsm.ajlsm.com.conf MonNouveauClient.ajlsm.com.conf
 sed -i -e s/obspm/MonNouveauClient/g MonNouveauClient.ajlsm.com.conf
 vim MonNouveauClient.ajlsm.com.conf # modifier le port des ProxyPass et ProxyPassReverse avec celui du projet
 sudo a2ensite MonNouveauClient.ajlsm.com.conf
 cd ../sites-enabled
 ln -s ../sites-available/MonNouveauClient.ajlsm.com.conf
 sudo service apache2 reload
 cd ~/recette/MonNouveauClient
 ant create.db.and.grant.user            # [mot de passe compte mysql ajlsm sur mercure]
 ant build.pleade-libre 
 ant build.pleade-entreprise 
 ant build.MonNouveauClient
 ant start.tomcat
 ./tail_all

Sur une prod Windows

[modifier | modifier le wikicode]

Télécharger et installer

[modifier | modifier le wikicode]

Télécharger et mettre dans C:\Windows\System32

[modifier | modifier le wikicode]
mkdir .ssh
puttygen
  • [ Generate ]
  • Mettre un mot de passe dans "Key passphrase:" et "Confirm passphrase:"
  • [ Save public key ] ( Sauvegarder comme .ssh/id_rsa.pub )
  • [ Save private key ] ( Sauvegarder comme .ssh/id_rsa.ppk )

Les tâches ANT importantes

[modifier | modifier le wikicode]
  • restart: Redémarre Tomcat.
  • clean.restart: Nettoyer tomcat pendant un restart.
  • super.clean.restart : Supprimer le datadir et nettoyer tomcat pendant un restart.
  • rebuild : Arrêter tomcat et faire un rebuild et redémarrer tomcat.
  • clean.rebuild : Arrêter tomcat et nettoyer tomcat et faire un rebuild et redémarrer tomcat.
  • super.clean.rebuild : Arrêter tomcat et nettoyer tomcat et supprimer le datadir et faire un rebuild et redémarrer tomcat.
  • drop.and.create.db: Pour supprimer la base de données et recommencer
  • build.dev: Il faut faire ça chaque fois que le projet dev ou un fichier client.properties est modifié.
  • luke : Voir les données dans lucene dans le datadir.
  • svn.update : Mettre à jour tous les projets de SVN.
  • svn.update.ajlsm, svn.update.pleade-libre, svn.update.pleade-entreprise, ... Mettre à jour un projet de SVN.
svn revert . -R && svn status # Pour voir l'état du svn
svn status | rm -rf $(awk '/^?/{$1 = ""; print $0}') # Pour supprimer tous les "unversioned files"


Important :
Après un super.clean.rebuild il faut toujours supprimer le contenu des bases de données et les reconstruire avec drop.and.create.db.

Les tâches annexes

[modifier | modifier le wikicode]
  • create.db : pour créer la base de données seulement.
  • create.db.and.grant.user : pour créer la base de données et grant permissions à un utilisateur qui éxiste déjà.
  • create.db.and.user : pour créer la base de données et l'utilisateur et grant permissions à un utilisateur qui n'éxiste pas encore.
  • create.db.user : pour créer l'utilisateur dans la base de données seulement.
  • grant.db.user : Pour grant permissions vers la base de données qui éxiste déjà.
  • create.log.apps : Créer des shell scripts pour voir les logs et tail les logs (./tail_tomcat, ./less_cocoon, ...)
  • drop.db : Supprimer la base de données.
  • install : Installer tous les projets de SVN si les repertoire n'éxistent pas encore.
  • install.ajlsm, install.pleade-libre, install.pleade-entreprise, ... : Installer un projet de SVN si le repertoire n'éxiste pas encore.
  • configure.tomcat : pour configurer le context.xml et server.xml avec le port.prefix et les connexions base de données.
  • eclipse.project.ajlsm, eclipse.project.pleade-libre, eclipse.project.pleade-entreprise, ... : Configurer un projet pour eclipse.

Détail de la syntaxe du fichier client.xml

[modifier | modifier le wikicode]
  • Les clients sont configuré dans dev/clients/{nom du client}/client.xml.
  • Pour ajouter un nouveau client, créer un repertoire avec le nom d'un nouveau client, ou plus facile un projet dans svn, dans dev/clients. Copier le client.xml d'un autre client le plus proche dans le repertoire.

Voici un exemple court d'un fichier client.xml :

<client id="ad84">
	<dev>
	</dev>
	<applications>
	</applications>
	<machine>
	</machine>
</client>

<dev>...</dev>

[modifier | modifier le wikicode]

Le section <dev> est pour configurer le client pour un développeur à AJLSM. Voici un explication pour plusiers properties importants :

  • "port.prefix" qui est différent pour chaque client dans le projet dev pour démarrer plusiers tomcats pour plusiers clients au même temps.
  • "database" peut-être "mysql", "postgresql", "oracle", "mssql" ou "hsql" si on utilisent les sources dans la branche Pleade_3.5 ou avant.
  • "pleade.install.dir" est lié à "install.dir" mais c'est important pour bm-grenoble par exemple qui utilisent 2 applications AJLSM : pleade et notix, est c'est le chemin vers le webapp dans tomcat où vont les sources quand on fait un build.
  • "install.dir" utilise "pleade.install.dir" est c'est envoyé au build.xml de pleade.
  • "pleade.url-interne" l'url vers le webapp de tomcat pour faire des requêtes qui doivent éviter de contacter le réseau depuis le public URL, comme avec la publication.
  • "pleade.public-url" L'url pour accèder l'application normalement, soit vers tomcat, soit vers apache.
  • "pleade.data-dir" le chemin vers le datadir pour pleade, sans le préfixe "file://".
  • "pleade.sdx-data-dir" le chemin vers le datadir pour pleade, avec le préfixe "file://".
  • "pleade.img-server.racines" les chemins vers les images.
  • "pleade.images.preparees" les chemins vers les images préparées.
  • "pleade.ead-docs-dir" les chemins vers les documents ead.
<dev>
	<property name="port.prefix" value="209" />
	<property name="database" value="mysql"/>
	
	<property name="pleade.install.dir" location="${basedir}/tomcat/webapps/ad84" />
	<property name="install.dir" value="${pleade.install.dir}"/>
	<property name="pleade.url-interne" value="http://${computer.hostname}:${port.prefix}80/ad84" />
	<property name="pleade.public-url" value="http://${computer.hostname}:${port.prefix}80/ad84" />
	
	<property name="pleade.data-dir" value="${basedir}/data/datadir/ad84"/>
	<property name="pleade.sdx-data-dir" value="file://${pleade.data-dir}"/>
	<property name="pleade.img-server.racines" value="/mnt/disk500g/ad84/images"/>
	<property name="pleade.images.preparees" value="/mnt/disk500g/ad84/images-preparees"/>
	<property name="pleade.images.preparees.copier" value="true"/>
	<property name="pleade.ead-docs-dir" value="${basedir}/data/ead"/>
</dev>

<applications>...</applications>

[modifier | modifier le wikicode]

Le section <applications> est pour specifier tous les applications AJLSM qui sont utilisés et configurés déja dans dev/applications/applications.xml (pleade-libre, pleade-entreprise, pleade-mets, sdx-ajlsm, ajlsm, ...). On peut aussi configurer d'autres applications dans svn pour le client. LCertains attributs peut-être utiliser comme :

  • svn="..." l'URL vers le projet dans SVN.
  • installDirProperty="pleade.install.dir" important pour bien faire le build pour pleade.
  • childApplication="..." pleade-libre, pleade-entreprise ou pleade-mets selon le client.
  • webappDir="..." le chemin relatif dans le projet dans SVN pour le client qui contient les fichiers webapp surchargés dans pleade, pour qu'Eclipse puisse copier directement des fichiers xsl, css, js, etc quand ils sont modifiés pour faire un refresh et voir les changements dans le browser pour éviter faire un build chaque fois.

Voici un exemple :

<applications>
	<ad84 svn="svn+ssh://svn.ajlsm.com/home/svn/ad84/branches/new-design_20141010" installDirProperty="pleade.install.dir" childApplication="pleade-entreprise" webappDir="src/pleade3">
	</ad84>
	<ajlsm/>
	<pleade-entreprise/>
	<pleade-libre/>
	<sdx-ajlsm/>
	<tomcat />
	<thesx />
</applications>

Il y a des targets ANT important pour faire des builds depuis le projet dev (prepare, build, build.only, client) pour un application. Quand on fait un build, les applications sont copiés dans le repertoire "app/build" dans le workspace pour être modifiés avant de faire un build. J'explique les 4 targets ANT ici pour l'application ad84 :

<target name="prepare.client">

[modifier | modifier le wikicode]
  • Il y a regex pour changer ces properties (install.dir, pleade.src.dir, src.module.thesaurus) dans le fichier ad84/ad84.properties
  • Il y a regex pour éviter d'utiliser ces fichiers (~/ant.properties, ~/ad84.properties, ant.properties) qui peut-être sont utilisés par développeurs avant le projet dev, sinon, il y a un conflit avec un mélange de properties dans le build.
  • Il y a regex pour éviter de mettre le webapp dans ${ant.home}/${build.webapp[^}]*.dir, parce que le projet dev va mettre le build dans tomcat/webapps directement.
  • Après on va changer plusiers fichiers dans le projet du client ou peut-être les sources de pleade aussi selon le client, comme WEB-INF/properties/pleade-admin.properties par exemple.
<target name="prepare.ad84" unless="quick" depends="properties">
	<antcall target="prepare.pleade-entreprise"/>
	<regex file="app/build/ad84/ad84.properties" property="install.dir" value="${pleade.install.dir}" />
	<regex file="app/build/ad84/ad84.properties" property="pleade.src.dir" value="${basedir}/app/build/pleade-entreprise" />
	<regex file="app/build/ad84/ad84.properties" property="src.module.thesaurus" value="${basedir}/thesx/src/web/pleade" />

	<regex file="app/build/ad84/build.xml" find='&lt;property file="\$\{user\.home\}/\$\{project\.code\}.properties"\s*&gt;' replace="" />
	<regex file="app/build/ad84/build.xml" find='&lt;property file="\$\{user\.home\}/\.ant\.properties"\s*/&gt;' replace="" />
	<regex file="app/build/ad84/build.xml" find='&lt;property file="\./\.ant\.properties"\s*/&gt;' replace="" />
	<regex file="app/build/ad84/build.xml" find='\$\{ant\.home\}/\$\{build\.webapp[^}]*\.dir\}' replace="${basedir.regex.escaped}/app/build/ad84/build/webapp/pleade" />

	<regex file="app/build/ad84/src/pleade3/WEB-INF/properties/pleade-admin.properties" property="pleade.url-interne" value="${pleade.url-interne}" />
</target>

<target name="build.client">

[modifier | modifier le wikicode]
  • Ça va ajouter les sources pour faire le build dans le repertoire app/build avant de modifier avec regex les fichiers.
  • Après ça va appeler le target prepare qui est expliqué déjà.
  • Après ça va appeler le build.xml du projet.
<target name="build.ad84" depends="properties">
	<copy todir="app/build" verbose="true">
		<fileset dir="." excludes="**/.project" includes="ad84/**"/>
		<fileset dir="." excludes="**/.project" includes="pleade-libre/**"/>
		<fileset dir="." excludes="**/.project" includes="pleade-entreprise/**"/>
		<fileset dir="." excludes="**/.project" includes="sdx-ajlsm/**"/>
		<fileset dir="." excludes="**/.project" includes="ajlsm/**"/>
	</copy>
	<antcall target="prepare.ad84"/>

	<exec dir="app/build/ad84" executable="sh">
		<arg value="ant.sh" />
		<arg value="install" />
	</exec>
</target>

<target name="build.only.client">

[modifier | modifier le wikicode]
  • C'est pour appeler tout les targets "copy.*" pour les applications utilisés, après les targets "compile.*" pour tout les applications avec des sources java, après copier les surcharges dans le repertoire surcharge dans le workspace.
<target name="build.only.ad84" depends="properties">
	<antcall target="copy.pleade-libre"/>
	<antcall target="copy.pleade-entreprise"/>
	<antcall target="copy.ad84"/>
	<antcall target="compile.sdx-ajlsm"/>
	<antcall target="compile.pleade-libre"/>
	<antcall target="compile.pleade-entreprise"/>
	
	<copy todir="${install.dir}" overwrite="true">
		<fileset dir="surcharge" />
	</copy>
</target>

<target name="copy.client">

[modifier | modifier le wikicode]
  • Ici il faut spécifier les repertoires avec des fichiers pour le webapp pour être copiés dans le ${install.dir}
<target name="copy.ad84" depends="properties">
	<copy todir="${install.dir}" overwrite="true">
		<fileset dir="app/build/ad84/src/pleade3" includes="**">
		</fileset>
	</copy>
</target>

<machines>...</machines>

[modifier | modifier le wikicode]

Ici on peut configurer plusiers machines qui contiennent des environments pour les clients (prod, preprod, demo, ...). Une machine peut contenir des attributs comme :

  • host="..." l'address IP vers le serveur qui contient l'application.
  • hostName="..." le nom plus lisible du serveur qui contient l'application.
  • user="..." l'utilisateur UNIX pour accèder le serveur.
  • devDir="..." le chemin vers le repertoire ou on peut stoquer des fichiers avec le projet dev.
  • updateDir="..." le chemin vers le repertoire qui contient les version de l'application pour installer.
  • internalsAcces="..." pour savoir quel fichier dans le projet internals contient les mot de passe pour se connecter au serveur.

Un élément <machine> peut contenir plusiers éléments <environment> si il y a plusiers applications installés ici (comme prod, preprod, ...). Voici un exemple :

<environment name="recet"
		devDir="/apps/webserver/tomcat_preprod/output/build" 
		updateDir="/opt/data/webapps" 
		backupDir="/opt/data/webapps/backup"
		symbolicLink="/opt/data/webapps/pleade-preprod" 
		webappDir="/apps/webserver/tomcat_preprod/output/build/webapps"
		surchargeDir="/opt/data/webapps/surcharge"
		dataDir="/opt/data/sdx-data-recet" 
		updateName="pleade-bmo-v${version}-${today}.tar.gz"
		startupCmd="sudo /etc/init.d/tomcat_preprod start"
		shutdownCmd="sudo /etc/init.d/tomcat_preprod stop"
		tomcatTempDir="/apps/webserver/tomcat_preprod/output/build/temp"
		tomcatWorkDir="/apps/webserver/tomcat_preprod/output/build/work"
		tomcatLogsDir="/apps/webserver/tomcat_preprod/output/build/logs"
		httpRestartCmd="sudo /etc/init.d/httpd restart"
		version="1.3"
		>
	<property name="pleade.url-interne" value="http://localhost:8082/pleade_preprod"/>

Il y a plusiers attributs pour un environment, comme :

  • devDir="..." le chemin vers le repertoire ou on peut stoquer des fichiers avec le projet dev.
  • updateDir="..." le chemin vers le repertoire qui contient les version de l'application pour installer.
  • backupDir="..." où on peut mettre des backups de la base de données, datadir et webapp.
  • symbolicLink="..." le chemin vers le lien symbolique qui spécifie quel webapp est utilisé.
  • webappDir="..." où se trouve les webapps envoyé au serveur.
  • surchargeDir="..." où le client peut mettre des surcharges pour faire un build avec des surcharges et un webapp, comme pour msh-dijon par exemple.
  • updateName="..." Comment écrire un .tar.gz pour envoyer le webapp au serveur.
  • startupCmd="..." Pour se rappeler comment démarrer tomcat.
  • shutdownCmd="..." Pour se rappeler comment arrêter tomcat.
  • tomcatTempDir="..." le repertoire temporaire à supprimer pour nettoyer tomcat.
  • tomcatWorkDir="..." le repertoire de travail à supprimer pour nettoyer tomcat.
  • tomcatLogsDir="..." le repertoire où se trouve le log catalina.out de tomcat.
  • httpdRestartCmd="..." Pour se rappeler comment redémarrer httpd
  • apacheRestartCmd="..." Pour se rappeler comment redémarrer apache2

Les tâches ANT pour un environnement

[modifier | modifier le wikicode]

Si on a configuré un environment comme preprod par exemple, on peut faire des choses utile après, comme :

  • recet.build.msh-dijon : construire un build de l'application pour envoyer au serveur selon les properties pour l'environment.
  • send.ant.to.recet.msh-dijon : Pour envoyer l'application ANT si il n'éxiste pas sur un serveur.
  • send.build.xml.to.recet.msh-dijon : Pour envoyer un build.xml avec des commandes utiles pour redémarrer ou faire un build avec des surcharges comme msh-dijon par exemple.
  • send.recet.webapp.to.pandor.u-bourgogne.fr : Pour envoyer le webapp avec rsync vers un serveur
  • ssh.recet : Pour voir la commande pour connecter avec SSH vers un serveur.
  • recet.steps.msh-dijon : voir les étapes pour installer un build pour mettre à jour un application à distance. Par exemple :

ant recet.steps.msh-dijon

[modifier | modifier le wikicode]
ctate@ctate:~/projet/msh-dijon-113 $ ant recet.steps.msh-dijon 
copy this file: dev/temp/environment/recet/send/update/update-RECET-msh-dijon-2015-01-27.tar.gz
to: ajlsmsh@pandor.u-bourgogne.fr:/opt/data/webapps
rsync -P dev/temp/environment/recet/send/update/update-RECET-msh-dijon-2015-01-27.tar.gz ajlsmsh@pandor.u-bourgogne.fr:/opt/data/webapps
then ssh to: ssh ajlsmsh@193.52.245.146
cd /opt/data/webapps
tar xzfv update-RECET-msh-dijon-2015-01-27.tar.gz

Backup database
mysqldump --max_allowed_packet=100M -u ajlsm -p  pleade_20141126 > /opt/data/webapps/backup/update-RECET-msh-dijon-2015-01-27-backup.sql # password : w5s!pl#Tei
mysql -u ajlsm -p  pleade_20141126 # password : w5s!pl#Tei
drop table module_eadeac_default; drop table module_eadeac_eac; drop table module_eadeac_eac_docs;  drop table module_eadeac_ead; drop table module_eadeac_ead_docs;  drop table module_eadeac_oai_dc; drop table module_eadeac_oai_dc_docs;  drop table module_eadeac_qdc; drop table module_eadeac_qdc_docs; 

Backup datadir
mv /opt/data/sdx-data-recet /opt/data/webapps/backup/update-RECET-msh-dijon-2015-01-27-datadir-backup
mkdir /opt/data/sdx-data-recet

Switch to new webapp
rm /opt/data/webapps/pleade-preprod
ln -s /opt/data/webapps/update-RECET-msh-dijon-2015-01-27 /opt/data/webapps/pleade-preprod

Shutdown tomcat
sudo /etc/init.d/tomcat_preprod stop

cleanup tomcat
rm -rf /apps/webserver/tomcat_preprod/output/build/temp/* /apps/webserver/tomcat_preprod/output/build/work/*

Startup tomcat
sudo /etc/init.d/tomcat_preprod start

Logs
tail -f /apps/webserver/tomcat_preprod/output/build/logs/catalina.out
tail -f /opt/data/webapps/pleade-preprod/WEB-INF/logs/cocoon-$(date +"%Y%m%d").log
tail -f /opt/data/webapps/pleade-preprod/WEB-INF/logs/sdx-$(date +"%Y%m%d").log
tail -f /opt/data/webapps/pleade-preprod/WEB-INF/logs/publication-$(date +"%Y%m%d").log
tail -f /opt/data/webapps/pleade-preprod/WEB-INF/logs/auto-publication-$(date +"%Y%m%d").log

Visit the site: https://pandor.u-bourgogne.fr/pleade_prod

or update files directly
from: /home/ctate/projet/msh-dijon-113/dev/temp/environment/recet/new/update-RECET-msh-dijon-2015-01-27
to: ajlsmsh@pandor.u-bourgogne.fr:

Commandes utiles pour travailler sur mercure

[modifier | modifier le wikicode]
cd /home/ajlsm/recette/ad971
ant svn.update # update all projects
svn status pleade-libre # voir si il y a des modifications pour SVN. Vous pouvez ignorer les fichiers avec "X *pleade-image*" parce qu'ils sont des fichiers SVN external
cd pleade-libre

cd ..
svn commit -m "blah blah" pleade-libre # committer des sources dans pleade-libre
ant rebuild # Arrêter tomcat et faire un rebuild et redémarrer tomcat. 
ant clean.rebuild # Si il y a des fichiers qui étaient supprimés dans les sources
ant super.clean.rebuild # Si vous voulez supprimer le datadir
ant drop.and.create.db # pour supprimer la base de données et recommencer
ant build.dev # il faut faire ça chaque fois que le projet dev ou un fichier client.properties est modifié.

Se mettre à la racine des sources pour voir les modifications et :

ajlsm@mercure:~/recette/ad971/ad971$ svn st -u

Pour commiter :

ajlsm@mercure:~/recette/ad971/ad971$ svn commit -m "Modification des formulaires de recherche pour gmaps"

Installer des paquets

[modifier | modifier le wikicode]
sudo apt-get install subversion ant openjdk-7-jdk

Configurer l'accès au SVN en SSH

[modifier | modifier le wikicode]

Le projet dev est dans SVN sur le serveur moorea. SVN est accessible depuis l'exterieur depuis le host svn.ajlsm.com, mais à l'interne à 192.168.123.16. Parce que j'utilisent le projet dev sur des serveurs à distant comme mercure mais aussi au bureau, je configure le fichier /etc/hosts pour le host svn.ajlsm.com :

192.168.123.16  moorea svn.ajlsm.com redmine.ajlsm.com mw.ajlsm.com

Sur le serveur moorea, configuration de l'utilisateur (remplacer ctate par votre utilisateur).

groupadd ctate
useradd -m -k -d -g ajlsm ctate
usermod -G ajlsm,ctate ctate
passwd ctate
vi /etc/ssh/sshd_config
/etc/init.d/sshd restart

Sur la nouvelle machine du développeur :

ssh-keygen -t dsa
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_dsa.pub ctate@192.168.123.16
ssh-copy-id -i ~/.ssh/id_rsa.pub ctate@192.168.123.16

Environnement Linux

[modifier | modifier le wikicode]

On commence par éditer le fichier /home/$USER/.profile et ajouter cette ligne :

export JAVA_HOME=/usr/lib/jvm/default-java