IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Une installation pour plusieurs sites ?


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 36
    Points
    36
    Par défaut Une installation pour plusieurs sites ?
    Bonjour à tous,

    Je me demande quelle est la meilleure solution pour mon serveur web.

    J'ai plusieurs sites sous Symfony2 et plutôt que d'avoir pour chaque site un "moteur" Symfony complet j'aurais aimé savoir si cela est possible d'avoir un moteur ("installation") de SF2 que est utilisé pour chacun des sites ?

    Car pour le moment j'ai : Site 1 qui contient l'ensemble des fichiers de Symfony, Site 2 qui contient également l'ensemble des fichiers de Symfony, Site 3 etc...

    Merci d'avance à tous.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Plusieurs solutions:

    - sous linux; il y a les symlinks. tu peux ainsi pointer vendor ou tu veux. Donc, tu peux avoir un seul endroit pour les librairies (dont Symfony2) pour tous les sites.

    - une autre très simple est l'utilisation de l'arborescence suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    app/
    app2/
    app3/
    src/
    vendor/
    web/
    web2/
    web3/
    Un petit si la réponse convient. Merci.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par RapotOR Voir le message
    Plusieurs solutions:

    - sous linux; il y a les symlinks. tu peux ainsi pointer vendor ou tu veux. Donc, tu peux avoir un seul endroit pour les librairies (dont Symfony2) pour tous les sites.

    - une autre très simple est l'utilisation de l'arborescence suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    app/
    app2/
    app3/
    src/
    vendor/
    web/
    web2/
    web3/
    Je suppose que la technique des liens symboliques sous unix est la plus propre ?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 591
    Points
    188 591
    Par défaut
    Citation Envoyé par kolbek Voir le message
    Je suppose que la technique des liens symboliques sous unix est la plus propre ?
    Pas forcément, vu que tu dois créer une foultitude de liens (c'est long à créer pour chaque application). Le plus simple est de profiter de l'autoloader et de mettre tout ce qui est partagé dans un dossier commun, puis de configurer le tout pour que Sf2 retrouve ses jeunes (changer les chemins dans la configuration de l'autoloader).

    Ainsi, tu aurais un dossier de dépendances partagées par toutes les applications sur le serveur, puis un triplet app/src/web pour chaque application qui a besoin de Sf2. Un peu comme certaines installations de PEAR, où tout est mis en global.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 36
    Points
    36
    Par défaut
    Je ne comprend pas bien... pourquoi dis-tu une foultitude de liens...

    imaginons que j'ai ceci :

    www/vendor/

    www/site1/app/
    www/site1/src/
    www/site1/vendor (lien symbolique)/
    www/site1/web/

    www/site2/app/
    www/site2/src/
    www/site2/vendor (lien symbolique)/
    www/site2/web/

    au final pour chaque nouveau site j'ai un lien symbolique vers vendor à faire, etc c'est tout ? non ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Si tu es sous linux, alors utilise cette solution. Je trouve ca plus propre.

    Mais entre nous... les deux méthodes fonctionnent! Apres; ca reste une question de point de vue.
    Un petit si la réponse convient. Merci.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 94
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par RapotOR Voir le message
    Si tu es sous linux, alors utilise cette solution. Je trouve ca plus propre.

    Mais entre nous... les deux méthodes fonctionnent! Apres; ca reste une question de point de vue.
    Je suis sous Mac, donc Unix quoi...

    Les deux méthodes fonctionnent je suis d'accord, mais le lien symbolique me semple plus simple. Sachant que j'aurais 2 à 3 nouveaux sites par ans, ca va pas non plus me prendre des heures à faire un ln -s vers le dossier vendor...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Sauf que au fur et à mesure de tes sites, je suppose que tu vas mettre à jour Symfony2... et donc, les anciens sites ne fonctionneront peut etre plus.
    Un petit si la réponse convient. Merci.

  9. #9
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Je me permets de rebondir sur ce topic, car je suis en face à un problème pour une installation multi-application de symfony.

    Pour résumer mon travail, je me suis inspiré de ce topic et de cette page : http://symfony.com/doc/current/cookb...oject_git.html sur le site de symfony pour créer mon arborescence .

    Pour résumer voila les étapes :

    - installation de symfony
    -création d'un dossier app1 (copie du dossier app) qui contiendra mon application (avec les kernel et autoload configurés correctement)
    -création d'un fichier app1_dev.php (copy de app_dev.php mais avec les lien vers le dossier précédemment définis


    et ensuite j'ai appliqué les recommandations de cette page : http://symfony.com/doc/current/cookb...oject_git.html (pour le .gitignore notamment j'ai demandé à ignorer le bootstrap.php.cache).

    Toute ces manip m'ont permises de créer mon dépot GIT.


    Maintenant je veux me servir de ce dépôt pour installer des environnements de dev sur des postes d'autres développeurs et c'est la que le problème se pose :

    Je fais GIT clone sur le poste du dev . Pas de soucis, il télécharge bien les sources.

    Ensuite j’exécute php bin/vendors install pour télécharger les sources de symfony et des bundles, sauf qu'à la fin il me met 2 warning :

    could not open input file : c:\wamp\test_clone\app/console.

    Ceci est normal car mon appli est dans app1.

    Ma question est que doit on faire pour que le bin/vendors soit multi installation (je ne veux pas avoir à le modifier lorsque j'installe une nouvelle application) ?

    Olivier

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    seul le dossier vendor est à partager, ensuite il faut juste bien régler l'autoloader

  11. #11
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    seul le dossier vendor est à partager, ensuite il faut juste bien régler l'autoloader
    Ok. ca veut dire que pour chaque projet je vais devoir personnaliser un fichier bin/vendors avec les chemin de mon appli ? (fichier qui vont faire la meme chose : installer les bundle et effacer le cache (sur différentes applications). J'ai bien compris (car ca me parait pas super propre)

    Et une autre question sur cette page : http://symfony.com/doc/current/cookb...oject_git.html pourquoi disent ils de mettre le fichier boostrap.php.cache dans le .gitignore ? je viens de faire la modif de mon bin/vendors pour qu'il pointe vers mon dossier app1 et maintenant il me dit qu'il arrive pas a ouvrir ce fameux fichier bootstrap (normal je l'ai exclu du dépot)

    ya pas une manière plus propre de faire mes choses ?

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    y'a rien a modifier, les fichiers deps comprendront uniquement les lib propre à l'appi, en tout cas faut pas faire de app1, app2 ... appn

  13. #13
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Ah ok donc tout ce qui est raconté en début de topic faut pas faire comme c'est décrit. Toi tu la fais comment ton arborescence ?(ca me parait plus aussi clair maintenant).

    nota : précision qui a peut être son importance : je développe sous windows.

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Déjà j’utilises composer, pour les bundles principaux, ensuite j'ai changé les chemin dans l'autoload

  15. #15
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Humm ok, j'ai lu la doc de composer et je vois pas trop en quoi ça solutionnerait mon problème. C'est sûrement un truc très bête mais je pige pas comment ça peut fonctionner.

    Je vais poser le problème différemment, en tenant compte de tes remarques parce que j'ai l'impression que ce que je présente n'est pas clair.

    Imaginons que j'ai 2 applications différentes qui fonctionnent sous symfony. Les 2 application sont en fait des bundles situé dans le dossier src/Acme/aplication1Bundle et src/Acme/aplication2Bundle. La première sera appelée grâce à l'url http://application1.monsite.com et la seconde par l'url http://application2.monsite.com

    Si j'ai bien compris, pas besoin de dupliquer les dossier web et app, il faut que ma configuration apache renvoie vers le même front controler : app.php du dossier web et ensuite grâce au routing, on vient appeler les controler pour afficher les pages.

    Jusque la ok sauf qu'au niveau du routing dans le dossier app; je ne viens pas définir une route pour un sous domaine, mais une route tout cours. C'est a dire que pour ces deux applications si j'ai une interface d'admin appelable grâce aux urls : http://application1.monsite.com/admin et http://application1.monsite.com/admin dans mon routing je n'ai aucun moyen de différencier si je veux appeler l'une ou l'autre des url. Je peux juste définir la route /admin qui renverra vers un unique controler.

    Et idem si mes 2 applications n'utilisent toutes les deux forcement les même bundles, je n'ai qu'un seul autoloader, du coup je vais définir dedans, plus de bundles que nécessaire.

    C'est pour cela que j'avais dans l'idée de dupliquer les dossier app et de dupliquer les front controler pour chaque application

    Donc au final je ne vois pas comment faire pour que me s2 applications cohabitent. Mais après tout c'est peut-être parce que symfoony2 ne le permet pas comme ça sauf que ton commentaire semble dire le contraire.

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si c'est juste avec des sous domaine, met un prefix sur tes route et parse le sous domain

    http://www.craftitonline.com/2011/08...-the-url-path/

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Ca va pas s'appliquer pour ton cas, utilise direct le ExperiumDomainedRoutingBundle

  18. #18
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Effectivement ca résout la partie qui va me permettre de renvoyer vers l'une ou l'autre des appli suivant le sous domaine, mais après je peux pas personnaliser les autoloaders, le securiyt.yml.... a suivant que j'utilise l'une ou l'autre des appli.

    Je crois que je vais laisser de côté je vais dev l'appli et on verra par la suite quand je maîtriserai un peu plus le framework.

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pourquoi vouloir mutualiser si les applis sont différente ?

  20. #20
    Membre averti

    Inscrit en
    Juin 2008
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 307
    Points : 364
    Points
    364
    Par défaut
    Euh .. pour mutualiser justement. Le multisite, c'est justement des appli différentes.
    Je pense que la lecture de ce topic m'a prêté à confusion. Pour moi tu foutais tes applis dans src (quelles soient lié ou non...) tu créais un front controler pour chaque appli (pour justement pouvoir différencier l'autoload les fichiers de config andco) tout en gardant une gestion commune des vendors via le deps. Pour n'avoir qu'un seul dossier vendor a mettre a jour et qu'une fois terminé, tous les caches des différentes applis soient éffacés.

    voila pourquoi

Discussions similaires

  1. Une seule connexion pour plusieurs sites
    Par poussinvert dans le forum Langage
    Réponses: 0
    Dernier message: 01/05/2013, 22h30
  2. [Joomla!] Une seule bdd pour plusieurs sites
    Par Imp rusg dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 23/02/2009, 09h16
  3. Installation de ZF pour plusieurs sites
    Par Janitrix dans le forum Zend Framework
    Réponses: 6
    Dernier message: 05/02/2008, 17h39
  4. Réponses: 2
    Dernier message: 22/11/2005, 14h06
  5. [FLASH MX] Une scrollbar pour plusieurs champs texte
    Par ffmlgraphics dans le forum Flash
    Réponses: 1
    Dernier message: 08/08/2005, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo