Configurer les VirtualHosts pour Symfony

Un petit mémo technique sur la configuration des VirtualHosts avec Apache2 pour un projet Symfony. Je montre comment faire à la fois sur Windows et Linux.

Pour Windows (WampServer 2.x)

Note : Je pars du principe que vous installé Wamp à la racine du disque C:\ et pas dans C:\Program Files. Si ce n’est pas le cas adaptez les chemins à votre installation, mais idéalement il ne faut pas d’accents ou d’espaces dans le répertoire d’installation comme c’est conseillé dans la documentation Symfony.

Commencez par éditer le fichier C:\wamp\bin\apache\Apache2.2.17\conf\extra\httpd-vhosts

#C:\wamp\bin\apache\Apache2.2.17\conf\extra\httpd-vhosts
<VirtualHost *:80>
  ServerName www.projectname.com
  ServerAdmin webmaster@projectname.com
 
  DocumentRoot "c:\wamp\www\projectname\web"
  DirectoryIndex index.php
  <Directory "c:\wamp\www\projectname\web">
    AllowOverride All
    Allow from All
  </Directory>

  Alias /sf "c:\wamp\www\projectname\lib\vendor\symfony\data\web\sf"
  <Directory "c:\wamp\www\projectname\lib\vendor\symfony\data\web\sf">
    AllowOverride All
    Allow from All
  </Directory>
   
  ErrorLog "c:\wamp\logs\projectname-error.log"
  CustomLog "c:\wamp\logs\projectname-access.log" common
</VirtualHost>

Il est préférable de créer un fichier de log pour chaque projet pour faciliter le débogage. Par ailleurs, afin de garder le répertoire localhost accessible, rajoutez ceci à la fin du fichier :

<VirtualHost *:80>
    DocumentRoot "C:\wamp\www"
    ServerName localhost
    ServerAlias localhost
</VirtualHost>

Ensuite, éditez le fichier C:\wamp\bin\apache\Apache2.2.17\conf\httpd.conf et dé-commentez la ligne suivante (ligne 469 normalement) :

#Include conf/extra/httpd-vhosts.conf

Pour finir, modifiez le fichier C:\WINDOWS\system32\drivers\etc\hosts et rajoutez cette ligne :

#C:\WINDOWS\system32\drivers\etc\hosts
127.0.0.1 www.projectname.com

Il ne reste plus qu’à redémarrer le service Apache. Le site est désormais accessible via votre navigateur à l’adresse http://www.projectname.com/

Pour Linux (serveur LAMP)

Note : Là aussi je pars du principe que vous déjà installé votre serveur LAMP et que votre projet se situe dans le dossier /var/www et pas dans le /home

Commencez par éditer le fichier hosts :

sudo nano /etc/hosts

Et rajoutez cette ligne :

127.0.0.1 www.projectname.com

Placez vous dans le dossier /etc/apache2/sites-available/ et créez un fichier avec le nom de votre projet (sans extension)

cd /etc/apache2/sites-available/ && touch projectname

Ouvrez le fichier que vous venez de créer avec votre éditeur favori et copiez le code suivant :

<VirtualHost *:80>
    ServerAdmin webmaster@projectname.com
    ServerName projectname.com
    ServerAlias www.projectname.com
   
    DocumentRoot "/var/www/projectname/web"
    DirectoryIndex index.php

    <Directory /var/www/projectname/web>
        AllowOverride All
        Allow from All
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/projectname-error.log

    # Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/projectname-access.log combined

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

</VirtualHost>

Pour terminer, créez le lien dans le dossier /etc/apache2/sites-enabled. Pour ce faire, utilisez cette commande :

sudo a2ensite projectname

N’oubliez pas de recharger la configuration d’Apache en faisant :

sudo /etc/init.d/apache2 reload

Voilà vous pouvez aller sur votre site à l’adresse http://www.projectname.com/

Il ne restera plus qu’à répéter cette opération pour chaque nouveau projet même s’il doit être possible d’automatiser tout ça par un script (sur Linux du moins). J’ai volontairement mis les www dans le fichier hosts mais vous pouvez très bien ne pas les mettre…

4 Commentaires sur “Configurer les VirtualHosts pour Symfony”

  • olivier clémence
    # Le 7 octobre 2011 à 8 h 49 min

    j’ai rédigé un article sur le même sujet mais le tiens est bien plus complet.
    Je le garde dans mes bookmark pour mon prochain projet Symfony, merci.
    Si ça intéresse voici le lien vers mon article:
    http://www.blog.manit4c.com/2011/06/14/utiliser-un-virtualhost-avec-wamp-pour-vos-sites-en-local/

    1
  • Quiche
    # Le 11 octobre 2011 à 14 h 02 min

    Pour optimiser et supprimer le fichier htaccess, on peu inclure les règles de l’url rewriting et autres mod directement dans le vhost, j’ai testé sur un site pour mon entreprise, la charge serveur est moins importante pendant les pics de connexion.

    2
  • mika
    # Le 11 octobre 2011 à 17 h 52 min

    @Quiche: Merci pour ta contribution, je ne connaissais pas cette technique. J’aurai bien voulu la tester mais tous mes sites sont sur des serveurs mutualisés alors c’est rapé !

    PS: J’ai édité ton lien car Akismet le considère comme du spam.

    3
  • Emma
    # Le 7 septembre 2014 à 20 h 24 min

    L’article ci-dessous présente également un exemple de configuration pour l’environnement de « dev » et de « prod »

    http://www.equation.fr/equablog/2014/08/29/symfony-2-bien-debuter-projet-vhost/

    4

Laisser un commentaire

Vous pouvez ces balises HTML dans votre commentaire :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current month ye@r day *