Symfony, Subversion, et Aptana
Je me suis très largement inspiré de différents tutoriels disponibles sur le net :
- celui de Babozor (alias travailleurs du web) disponible ici
- celui de Symfony (tutoriel Jobeet) disponible ici
Je n'ai aucune prétention "pédagogique", ce billet me servant surtout d'aide-mémoire, ayant eu quelques difficultés... Ceci dit, avec quelques adaptations, il pourra servir à d'autres :-)
Mon installation est la suivante : un ordinateur accueillant mon serveur apache et svn (le tout sous Ubuntu Server), un autre ordinateur me servant de machine de développement.
Sur la machine devant contenir le dépôt
Je pars du principe qu'apache est déjà installé et fonctionne correctement.
Installer subversion et la librairie apache
sudo apt-get install subversion libapache2-svn
Création du dépôt et changement de propriétaire (c'est mon petit ajout par rapport au tuto de Babozor)
sudo svnadmin create /svn
sudo chown -R www-data:www-data /svn
Modification du module WebDAV\nModifier le fichier de configuration de WebDAV, qui se trouve ici: /etc/apache2/mods-enabled/dav_svn.conf,
sudo nano /etc/apache2/mods-enabled/dav_svn.conf
Ligne 13: décommenter Location /svn détermine le chemin d’accès depuis votre serveur web: par exemple ici http://www.monserveurweb/svn (et on n'oublie pas de fermer le tag à la ligne 54…)
Ligne 16: décommenter DAV svn permet à WebDAV d’accéder au dépôt
Ligne 19: SVNPath /svn vous permet de mettre le chemin vers le dépôt
Ligne 40,41,42 et 51 :
AuthType Basic
AuthName “Subversion Repository”
AuthUserFile /etc/apache2/dav_svn.passwd\net
Require valid-user
Authentification
On va créer un utilisateur pour l’accès au SVN via WebDAV, en utilisant cette commande:
sudo htpasswd -cm /etc/apache2/dav_svn.passwd username
(en remplaçant username par le nom de votre utilisateur), vous rentrer le mot de passe et sa configuration et hop c’est bon
Redémarrage d’apache
sudo /etc/init.d/apache2 restart
Sur la machine de développement
Mise en place de Symfony
Le projet s'appelle jobeet.
mkdir -p /home/sfprojects/jobeet
cd /home/sfprojects/jobeet
Créer le répertoire qui contiendra les fichiers du framework.
mkdir -p lib/vendor
Récupérer le framework sous lib/vendor et le décompresser.
cd lib/vendor
wget http://www.symfony-project.org/get/symfony-1.2.10.tgz
tar zxpf symfony-1.2.10.tgz
mv symfony-1.2.10 symfony
rm symfony-1.2.10.tgz
On vérifie que la configuration de PHP correspond aux besoins minimaux du framework. Attention, php-cli doit être installé.
cd ../..
php lib/vendor/symfony/data/bin/check_configuration.php
S'il y a un problème, l'affichage vous dira lequel et comme le régler. Il faut aussi faire cette vérification avec votre navigateur (il y a 2 php.ini, l'un pour apache, l'autre pour la ligne de commande)
S'il n'y a pas de problème, vérifier que symfony est correctement installé en utilisant la ligne de commande symfony pour voir sa version.
php lib/vendor/symfony/data/bin/symfony -V
Initialisation du projet
Dans symfony, les applications partageant le même modèle de données sont regroupées en projets. Dans le projet jobeet, il y a deux applications différentes : le frontend et le backend.
Création du Project
Depuis le répertoire jobeet (/home/sfprojects/jobeet), lancer la tâche symfony generate:project pour créer le projet symfony.
php lib/vendor/symfony/data/bin/symfony generate:project jobeet
Cette tâche crée aussi un raccourci pour la commande symfony à la racine du projet Jobeet.
Création de l'Application
Maintenant, créons l'application frontend en utilisant la tâche generate:app :
php symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret frontend
Mise en place du lien avec le dépôt
Créer la structure basique des répertoires. www.example.com est l'URL de votre machine de dépôt. Notez que le dépôt se trouve dans "/svn"
svn mkdir -m "created jobeet directory" http://www.example.com/svn/jobeet
puis
svn mkdir -m "created default directory structure" http://svn.example.com/svn/jobeet/trunk http://svn.example.com/svn/jobeet/tags http://svn.example.com/jobeet/svn/branches
Puis faire un checkout du répertoire vide trunk/ :
cd /home/sfprojects/jobeet
svn co http://svn.example.com/jobeet/trunk/ .
Supprimez ensuite le contenu des répertoires cache/ et log/ puisqu'on ne veut pas inclure leur contenu dans le dépôt
rm -rf cache/* log/*
On s'assure que apache puisse écrire. Personnellement, j'aurais plutôt fait un chown -R www-data:www-data plutôt que donner un accès universel :-)
chmod 777 cache/ log/
Maintenant on importe tous les fichiers/répertoires dans le dépôt.
svn add *
On précise qu'il n'y aura pas de commit pour les répertoires cache/ et log/, il faut spécifier dans une liste :
svn propedit svn:ignore cache
L'éditeur de texte se lance et il suffit de saisir le caractère suivant.
*
Sauvez et quitter. C'est fait. On fait de même pour le répertoire log/. Finalement, on envoie ces changements vers le dépôt.
svn import -m "made the initial import" . http://svn.example.com/jobeet/trunk
On efface ensuite complètement le répertoire jobeet et on lance Aptana. On choisit l'assistant "Nouveau projet", puis SVN->Checkout Projects from SVN. On choisit "Use existing repository location" puis Jobeet->Trunk.
J'ai du effacer le répertoire jobeet, car je l'avais placé dans le Workspace d'Aptana - si ce n'est pas le cas, alors il n'y a pas besoin d'effacer le répertoire - ceci dit, c'est plus propre quand même !