Aller au contenu principal

Apache et Symfony

Comment configurer Apache pour un projet Symfony ?

astuce

Si vous recherchez un hébergement gratuit pour un projet Symfony, vous pouvez consulter le tutoriel Hébergement du portfolio.

Notions théoriques

Symfony est un framework PHP puissant et populaire qui permet de créer des applications Web robustes et maintenables. Il suit une architecture basée sur le design pattern MVC (Model-View-Controller) et repose sur des principes tels que la modularité et la réutilisation des composants.

Pour qu’un projet Symfony fonctionne correctement, l’environnement serveur doit être configuré avec les bonnes versions de PHP, Apache et les extensions nécessaires.

info

Prérequis techniques pour Symfony :

  1. PHP version 8.1 ou supérieure
  2. Extensions PHP : curl, json, ctype, tokenizer, session, simplexml, intl, pdo, mbstring
  3. Apache installé avec le module mod_rewrite activé.
  4. Composer installé pour la gestion des dépendances.

Symfony génère des fichiers qui doivent être accessibles via un serveur Web (Apache ou Nginx). Le répertoire public de Symfony se trouve dans le dossier public/, qui sert de DocumentRoot pour le serveur Web.

Détails des étapes de configuration d’un projet Symfony sous Apache
ÉlémentDescription
DocumentRootRépertoire racine du projet Symfony qui doit pointer vers /chemin_du_projet/public/.
mod_rewriteNécessaire pour la gestion des URLs (routes Symfony).
Fichier .envFichier de configuration pour les variables d'environnement (base de données, environnement).
Cache & LogsRépertoires où Symfony génère les caches et fichiers de logs (var/cache et var/log).

Exemple pratique

  1. Créer un projet Symfony nommé mon_projet avec les composants webapp

    astuce

    Pour de l'aide vous pouvez consulter l'Introduction à Symfony.

  2. Configurer Apache pour le projet Symfony :

    Créez un répertoire pour héberger le projet (par exemple /var/www/mon_projet), puis copiez le projet Symfony dans ce répertoire :

    sudo mv mon_projet /var/www/
    sudo chown -R www-data:www-data /var/www/mon_projet

    Créez un fichier de configuration Apache pour le projet :

    sudo nano /etc/apache2/sites-available/mon_projet.conf

    Dans ce fichier, écrivez la configuration suivante :

    <VirtualHost *:80>
    ServerName monprojet.fr
    DocumentRoot /var/www/mon_projet/public

    <Directory /var/www/mon_projet/public>
    AllowOverride All
    Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/mon_projet_error.log
    CustomLog ${APACHE_LOG_DIR}/mon_projet_access.log combined
    </VirtualHost>
  3. Activer le VirtualHost et configurer Apache :

    • Activez le site :
    sudo a2ensite mon_projet
    • Assurez-vous que le module mod_rewrite est activé :
    sudo a2enmod rewrite
    • Redémarrez Apache :
    sudo systemctl restart apache2
  4. Configurer les permissions et les fichiers de cache/logs :

    Symfony nécessite que certains répertoires soient accessibles en écriture par le serveur Web.

    Assurez-vous que var/cache et var/log ont les bonnes permissions :

    sudo chown -R www-data:www-data /var/www/mon_projet/var
    sudo chmod -R 775 /var/www/mon_projet/var
  5. Configurer le fichier hosts sur la machine cliente :

    Modifiez le fichier hosts de votre machine pour associer l’adresse IP du serveur à votre nom de domaine :

    ip_serveur monprojet.fr
    info

    Si vous n'avez pas accès à un serveur DNS (Domain Name System), vous devez modifier le fichier hosts de votre machine pour établir une association manuelle entre l'adresse IP du serveur et le nom de domaine souhaité.

    Le fichier hosts agit comme une petite base de données locale, permettant à votre système d'exploitation de résoudre un nom de domaine (par exemple, monprojet.fr) en une adresse IP (par exemple, 192.168.1.10) sans passer par un serveur DNS.

    Cette méthode est utile pour les environnements de développement ou de test où il n'est pas nécessaire de configurer un DNS public ou interne.

    En pratique, cela vous permet de configurer un virtualhost et d'accéder à vos sites hébergés en saisissant des noms de domaine personnalisés dans votre navigateur, plutôt que de devoir utiliser des adresses IP directement.

  6. Tester l’installation :

    Ouvrez un navigateur Web et accédez à l’adresse http://monprojet.fr. Vous devriez voir la page d’accueil par défaut de Symfony.


Test de mémorisation/compréhension


Quel est le répertoire public d'un projet Symfony ?


Quel module Apache doit être activé pour gérer les URLs de Symfony ?


Où doit pointer le DocumentRoot d'un projet Symfony ?


Quelle commande permet d'activer un site dans Apache ?



TP pour réfléchir et résoudre des problèmes

Dans ce TP, vous allez héberger un projet Symfony avec les spécifications suivantes :

  1. Nom de domaine :

    • blog.fr pour un blog personnel
    • admin.blog.fr pour la section d'administration
  2. Prérequis :

    • Installer le projet Symfony.
    • Configurer deux VirtualHosts distincts pour les noms de domaines ci-dessus.
  3. Étapes :

    • Créer un projet Symfony blog --webapp.

      astuce

      Pour de l'aide vous pouvez consulter l'Introduction à Symfony.

    • Configurer Apache pour avoir un VirtualHost qui pointe vers /var/www/blog/public pour blog.fr et un autre VirtualHost qui pointe vers /var/www/blog/public/admin pour admin.blog.fr.

    • Modifier le fichier hosts pour ajouter les noms de domaine sur la machine cliente.

    • Tester les URLs http://blog.fr et http://admin.blog.fr pour vérifier le bon fonctionnement.

  4. Développer les sections du site :

    • Ajoutez un fichier index.html.twig pour la page d’accueil du blog.
    • Ajoutez une route et une vue pour la section admin.
Une solution