Symfony, Subversion, et Aptana

Je me suis très largement inspiré de différents tutoriels disponibles sur le net :

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 !