Couverture de l'article Kit de survie : Symfony2 et Nginx

Parce que chez Wanadev, nous aimons apprendre toujours plus et proposer des applications web toujours plus rapides, nous vous proposons aujourd'hui le serveur web « à la mode », Nginx.

Après avoir rédigé un article sur comment installer un projet Symfony2 sur IIS, retour aux sources avec une distribution open source.

L'installation est relativement simple. Dans mes recherches, je n'ai pas eu de souci à trouver de la documentation, mais aucun post sur la marche à suivre pour mettre en place un projet Symfony2 avec Nginx en front et PHP-FPM comme Engine.

Pourquoi Nginx et PHP-FPM plutôt qu'Apache

Apache2 reste encore aujourd'hui le serveur web le plus populaire. Facile à installer et à utiliser, il est la solution privilégiée et parfois l'unique solution pour les jeunes développeurs ou pour les amateurs de développement. Il suffit de regarder les statistiques d'utilisation des serveurs pour voir la suprématie d'Apache (60.4%) loin devant Nginx (2ème avec à peine 21%). Malgré ces chiffres, on peut également trouver d'autres statistiques visant à prouver que la tendance va en s'inversant. open-source-guide.com a récemment publié un article dans lequel il nous indique que Nginx se place désormais en pole position des serveurs les plus utilisées quand l'on regarde les 10000 sites ayant le plus fort trafic.

Pourquoi Apache est une solution tout embarquée ?

Apache est simple à installer et contrairement à Nginx il possède un avantage, il embarque l'intégralité des programmes dont il a besoin. De cette manière, lorsqu'on installe Apache, on dispose immédiatement d'un serveur front qui délivre les ressources, mais également d'un engine qui exécutent les scripts. Cela est plus simple à utiliser mais cela représente d'énormes inconvénients.

Pourquoi Nginx est mieux, plus stable et plus rapide qu'Apache ?

La force de Nginx est sa capacité à déléguer. Contrairement à Apache, Nginx ne sait faire qu’une seule chose, délivrer du contenu. Ce premier point le rend plus stable car Nginx reçoit les requêtes et déporte les traitements quand il y en a, et renvoie la ressource.

Nginx possède un autre avantage. Il n'est pas lié à PHP comme l'est Apache. Un avantage qui permet d’exécuter des scripts multi-languages très facilement. Cela nous rend complètement libre d'utiliser les technologies que l'on souhaite pour générer nos scripts. De base, PHP-FPM est utilisé, mais dans certains cas, on pourrait utiliser HHVM pour exécuter nos scripts car il est plus rapide.

Le fait que les tâches soient séparées permet d'optimiser facilement les requêtes et d’augmenter la stabilité.

Dernier intérêt, si l'engine (back) venait à tomber lors d'une attaque ou tout simplement pour une erreur interne, tant que Nginx est up, le service est en mesure de répondre une page d'erreur. Avec Apache, cela est impossible. Nous aurions alors une page blanche.

Bien, et si on voyait maintenant comment on fait pour installer tout ça ? :P

Installation de Nginx et de PHP-FPM

L'installation que nous vous proposons a été testée et éprouvée sur une Debian.

apt-get install php5 php5-fpm nginx

Cette commande permet d'installer le « kernel » PHP5, le front Nginx et le moteur PHP5-FPM.

Ici, nous n'avons pas installé les extensions PHP nécessaires à Symfony (comme php5-intl, php5-pdo par exemple). Nous vous laissons le loisir de les installer via apt-get, aptitude ou synaptic.

Configurer Nginx

Nous allons maintenant mettre en place le front. Si vous lisez cet article, vous connaissez sûrement le Web Server Apache. Dans notre cas, nous nous passons complètement d'Apache pour utiliser Nginx. C'est donc ce dernier qui va écouter sur le port 80 qui correspond au port par défaut du protocol HTTP.

Rien de bien compliqué pour utiliser notre web server, nous allons créer un Virtual Host.

  1. Dans le cas où vous utilisiez Apache, éteignez-le.
    service apache2 stop
    Puis démarrez Nginx
    service nginx start
  2. On commence par créer un fichier pour le vhost
    touch /etc/nginx/sites-available/monVhost.conf
  3. On édite le fichier
    nano /etc/nginx/sites-available/monVhost.conf
  4. On copie ces quelques lignes en faisant attention de bien compléter les informations nécessaires. Ces informations sont valables pour un projet Symfony2 mais vous n'auriez aucun souci à modifier cette configuration pour faire fonctionner ce VHost avec un autre type de projet.
    server {
        server_name monVhost;
        root /path/to/project/web;
    
        location / {
            try_files $uri @rewriteapp;
        }
    
        location @rewriteapp {
            # Ici on réécrit toutes les URL de telle sorte qu'elles pointent vers 
            # le fichier app.php
            # Dans mon cas, mon installation était pour un environnement de 
            # développement, j'ai donc remplacer app.php par app_dev.php
            rewrite ^(.*)$ /app.php/$1 last;
        }
    
        location ~ ^/(app|app_dev|config)\.php(/|$) {
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param HTTPS off;
        }
    
        # N'oubliez de modifier ici aussi
        error_log /var/log/nginx/monVhost_error.log;
        access_log /var/log/nginx/monVhost_access.log;
    }
  5. On active le vhost créé pour que Nginx le prenne en compte, de la même manière qu'avec Apache.
    ln -s /etc/nginx/sites-available/monVhost.conf /etc/nginx/sites-enabled/monVhost.conf
  6. On redémarre Nginx et tout est bon pour la configuration de celui-ci :)
    service nginx restart

Configurer PHP5-FPM

Maintenant que notre serveur front est prêt, il ne nous reste plus qu'à configurer FPM.

De base, FPM est déjà configuré et prêt à fonctionner. Vous pouvez l’utiliser de deux manières.

  • En utilisant le port 9000 que FPM prend par défault
  • Ou en utilisant la socket (initialement dans /var/run/php5-fpm.sock)

Personnellement, je vous conseille d'utiliser la socket de la même manière que nous l'avons fait à la création du VHost. Aujourd'hui cela ne change pas énormément mais à l'avenir, si vous mettez en place sur le même serveur d'autres engines comme Hip-Hop VM, vous verez la nuance. Cela fera office d'un autre article.

Autre précaution

Vous allez devoir faire attention à quelques petits éléments pour éviter quelques erreurs :)

N'oubliez pas que le VHost que vous allez utiliser pour accéder à votre projet Symfony2 aura besoin d'être enregistré dans /etc/hosts.

nano /etc/hosts
# et ajouter cette ligne
127.0.0.1 monVhost

 

Commentaires

Il n'y a actuellement aucun commentaire. Soyez le premier !

  • Couverture de l'article Retour sur le Meet-up Python du 30 juin 2025
    Retour sur le Meet-up Python du 30 juin 2025

    Il y a 4 semaines

    Ce lundi 30 juin 2025 nous accueillions la branche lyonnaise de l'AFPy dans nos locaux pour un meetup autour du langage Python. Malgré les fortes températures, une trentaine de personnes ont répondu présentes pour ce moment de convivialité et d'échange.

  • Couverture de l'article Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA
    Figma Make : enfin une passerelle prometteuse entre design et code grâce à l'IA

    Il y a 2 mois

    Depuis quelques années, les outils d'IA pour générer des intégrations d'interfaces à partir de maquettes fleurissent. On en a testé plusieurs chez WanadevDigital : de Locofy à Uizard, en passant par Framer AI. Tous ont leurs qualités, mais jusqu’ici, il manquait un vrai pont stable entre les intentions du designer et la réalité du code front.

    L’arrivée de Figma Make change la donne. Et si je devais résumer son impact en une phrase : ça fonctionne, et ça fonctionne pour tout le monde, designers, développeurs et intégrateurs !

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive
    Maîtriser la traduction (i18n) dans un projet web - Partie 2 : Conseils pour une localisation gérable et évolutive

    Il y a 5 mois

    Dans la partie 1, nous nous sommes concentrés sur la mise en place d'une base solide pour la gestion des traductions dans un projet Vue. Maintenant que votre système de traduction est opérationnel, il est temps d'examiner de plus près comment structurer, gérer et faire évoluer vos fichiers de traduction de manière efficace.

    Cette partie couvrira les bonnes pratiques que nous utilisons chez Wanadev pour créer des clés de traduction maintenables, éviter les pièges courants et garantir que vos fichiers de traduction restent propres et évolutifs au fur et à mesure que votre projet grandit.

  • Couverture de l'article Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement
    Maîtriser la traduction (i18n) dans un projet web - Partie 1 : Configurer proprement

    Il y a 5 mois

    Mettre en place l'internationalisation (i18n) dans un projet web peut sembler simple. Cependant, de nombreux projets se retrouvent avec des configurations de traduction mal gérées, difficiles à maintenir ou à faire évoluer à mesure que l'application grandit. Une stratégie i18n robuste est essentielle pour offrir une expérience utilisateur fluide dans plusieurs langues.

    Je vous décris ici, les pratiques que nous avons établies chez Wanadev au fil des années d'expérience pour mettre en œuvre et gérer les traductions dans les projets Vue. Bien que les exemples soient spécifiques à Vue, la plupart de ces pratiques peuvent être appliquées à n'importe quel framework.

  • Couverture de l'article Bien choisir sa typographie : quelques bases pour un message clair
    Bien choisir sa typographie : quelques bases pour un message clair
    Méthodologie

    Il y a 10 mois

    On n'écrit pas "Je t'aime" comme "Je te hais" ! Cette petite phrase résume bien ma problématique : quand on doit délivrer un message, la compréhension de ce dernier ne se fait pas uniquement par la lecture simple du texte, mais aussi par sa mise en forme. Et de cette mise en forme dépend la bonne compréhension du message. Dans cet article, nous allons nous pencher sur l’histoire et les familles de typographies dans le but de sensibiliser sur l’importance des choix de typographies dans la communication. Nous verrons ensuite quelques astuces pour bien sélectionner sa typographie et mettre en forme son message.

  • Couverture de l'article Les solutions CPQ sont-elles accessibles à toutes les entreprises ?
    Les solutions CPQ sont-elles accessibles à toutes les entreprises ?
    Méthodologie

    Il y a 10 mois

    Le CPQ (Configure, Price, Quote) est un outil essentiel pour les entreprises cherchant à optimiser leurs processus de vente. Il permet aux équipes commerciales de configurer rapidement et facilement des produits ou services complexes en fonction des besoins spécifiques des clients, tout en garantissant la cohérence des prix. Grâce au CPQ, les vendeurs peuvent établir des devis précis et personnalisés en temps réel, tout en tenant compte des remises, des promotions ou des ajustements spécifiques. Aujourd'hui les CPQ tirent majoritairement parti de la 3D pour proposer une visualisation de produit plus réaliste et complète.