Initialisation d’un projet Symfony 1.4 en 5 étapes

Logo SymfonyCar comme moi, vous l’avez sûrement souvent cherchée (et souvent trouvée dans le tutorial Jobeet), la procédure d’installation et configuration initiale de Symfony 1.4.

Je vais donc tenter de résumer cela en 5 petites étapes, sur l’environnement suivant :

  • PHP 5.3.2
  • Apache 2.2.14
  • Ubuntu 10.04

1. Téléchargement et installation

$ mkdir /var/www/sfProject
$ cd /var/www/sfProject
$ mkdir -p lib/vendor # Bonne pratique : on place Symfony dans ce sous-dossier
$ wget http://www.symfony-project.org/get/symfony-1.4.13.tgz
$ tar -zxf symfony-1.4.13.tgz
$ rm -f symfony-1.4.13.tgz # On supprime l'archive plus nécessaire
$ mv symfony-1.4.13 symfony

Vous avez désormais Symfony 1.4.14 installé dans /home/user/www/sfProject/lib/vendor/symfony.

2. Initialisation d’un projet

Un projet Symfony peut regrouper plusieurs applications (souvent 2 : frontend et backend), elles-même composées de modules.

Par exemple, dans le cadre d’un projet de blog, nous aurons :

  • Projet = MonBlog
  • Applications = frontend, backend
  • Modules = billets, commentaires …

Nous allons donc générer notre nouveau projet Symfony :

$ cd /var/www/sfProject
$ php lib/vendor/symfony/data/bin/symfony generate:project sfProject

Votre projet Symfony sfProject est désormais déployé dans /home/user/www/sfProject.

Dans la foulée, nous allons générer la première application de notre projet sfProject : le frontend, autrement dit la partie visible de votre site.

$ php symfony generate:app frontend

On en profite également pour donner à notre application (au sens large) les droits d’écriture sur les dossier de cache et de logs Symfony :

$ chmod 777 cache/ logs/

3. Configuration d’Apache

Afin de fonctionner correctement de de façon sécurisée, un projet Symfony nécessite un minimum de configuration de votre serveur web Apache.

Nous allons donc créer dans /etc/apache2/sites-available/ le fichier sfProject :

sudo nano /etc/apache2/sites-available/sfProject

On insère dans ce fichier les informations suivantes :

Listen 127.0.0.1:8080
<VirtualHost 127.0.0.1:80>
  DocumentRoot "/var/www/sfProject/web"
  DirectoryIndex index.php

  <Directory "/var/www/sfProject/web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf /var/www/sfProject/lib/vendor/symfony/data/web/sf

  <Directory "/var/www/sfProject/lib/vendor/symfony/data/web/sf">
    AllowOverride All
    Allow from All
  </Directory>
</VirtualHost>

On finit en activant ce profil de site et en redémarrant Apache :

sudo a2ensite sfProject
sudo service apache2 restart

Votre projet Symfony est désormais accessible sur http://localhost:8080, et doit pour l’instant ressembler à ça :

Symfony Project Created

4. Configuration MySQL et création du modèle de données

En premier lieu, nous allons renseigner les identifiants de connexion à notre base MySQL dans un fichier de configuration Symfony, grâce à la commande suivante :

php symfony configure:database "mysql:host=localhost;dbname=myDatabase" myUser mYsEcret

Le fichier config/databases.yml est alors créé, nous passons donc au modèle de données.

Afin de créer un modèle de données parlant, nous allons reprendre l’exemple de création d’un projet de blog.

Nous allons commencer très simplement avec la gestion des billets (post) et des commentaires (comment).

Ouvrez avec votre éditeur préféré le fichier config/doctrine/schema.yml.

Post:
tableName: post
columns:
id:         { type: integer, primary: true, autoincrement: true }
title:      { type: string(255), notnull: true }
content:    { type: string(4000), notnull: true }
author:     { type: string(255), notnull: true }
created_at: { type: timestamp, notnull: true }
updated_at: { type: timestamp, notnull: true }

Comment:
tableName: comment
columns:
id:         { type: integer, primary: true, autoincrement: true }
post_id:    { type: integer, notnull: true }
content:    { type: string(4000), notnull: true }
author:     { type: string(255), notnull: true }
created_at: { type: timestamp, notnull: true }
updated_at: { type: timestamp, notnull: true }
relations:
Post:
local:    post_id
foreign:  id
type:     one

On sauvegarde notre schéma, puis on génère le modèle correspondant ainsi que les formulaires et filtres associés :

$ php symfony doctrine:build-model
$ php symfony doctrine:build-forms
$ php symfony doctrine:build-filters

Une fois le modèle créé dans Symfony, nous allons générer les requêtes SQL nécessaires à la création des tables correspondantes dans notre base MySQL, et exécuter celles-ci :

$ php symfony doctrine:build-sql
$ php symfony doctrine:insert-sql

5. Création d’un premier module : post

php symfony doctrine:generate-module --with-show --non-verbose-templates frontend post Post

On génère donc le module post, dans l’application frontend, basé sur la classe Post définie dans le schéma vu plus haut.

Rendez-vous sur http://localhost:8080/frontend_dev.php/post.

Le module post en action

Ca y est, votre premier projet Symfony fonctionne !

Dans le cadre d’un tutorial à venir, plus complet, portant sur la réalisation d’une plateforme de blog, toujours basée sur Symfony 1.4.

Au programme, entre autres, gestion des commentaires, des utilisateurs, un espace d’administration …

Colorez votre shell prompt Ubuntu

Par défaut, le shell prompt sous Ubuntu est extrêmement (trop) sobre.

Pourtant, il est très simple d’avoir un prompt coloré comme c’est le cas par défaut sous Gentoo : il suffit d’éditer votre fichier .bashrc :

$ nano ~/.bashrc

Autour de la ligne 39, vous devriez avoir :

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

Il vous suffit de décommenter la ligne 39 et d’enregistrer votre fichier.

Rechargez votre terminal, et miracle, votre prompt est désormais coloré :

Shell prompt coloré sous Ubuntu

Si vous souhaitez aller plus loin dans la personnalisation du prompt, vous pouvez modifier la valeur de PS1 dans le même fichier .bashrc, normalement ligne 53, à l’aide de cet article : http://www.gentoo.org/doc/en/articles/prompt-magic.xml.

Premier billet de ce blog

Combien de fois me suis-je demandé pourquoi ne pas avoir noté quelque part ces fichues lignes de configuration de tel ou tel outil ? Pourquoi ne pas avoir mis dans mes favoris ce lien qui me serait si utile maintenant ? Pourquoi ne pas avoir gardé ce bout de code indispensable ?

C’est partant (entre autres) de ces constats que je me suis décidé. Ca y est. Je lance un blog.

Passionné comme beaucoup d’informatique et nouvelles technologies en général, je souhaite partager à travers ce modeste blog mes morceaux de codes, tutoriaux, et autres trouvailles du net.

J’y parlerai notamment beaucoup du monde de l’Internet en général, de ses grands acteurs comme Google, de l’open source en général, de développement PHP, de Linux, et tant d’autres sujets.

A très vite !

Logo Google

Logo Google