Question d'architecture

Bonjour,

Je voudrais savoir comment faire pour mettre en place des sites web
hébergé
sur une machine, partageant le même code rails, avec une configuration
différente suivant le host ?

Genre un soft de Blog, ou on aurait une interface dÂ?administration
unique et
X Vhosts�. A chaque Vhost correspond un blog spécifique�

Sinon, est-il possible de faire tourner php et Rails sur le même serveur
Apache, et avoir des Vhosts spécifiques ?

Merci

Jean

Jean Szabo wrote:

Bonjour,

Salut,

Je voudrais savoir comment faire pour mettre en place des sites web
hébergé sur une machine, partageant le même code rails, avec une
configuration différente suivant le host ?

C’est assez simple en fait, il te faudra jouer avec des before filter
suivant les objets les paramètres des objets request. Si tu regardes sur
le svn de rails DHH a fait un petit plugin qui te donne une bonne idée
du comment récupérer les paramètres.

Le problème arrive quand tu vas vouloir gérer du cache par sous domaine.
La tu as deux politiques:

  • modifier dynamiquement le répertoire de cache de rails
  • utiliser les urls de rails pour rajouter le domaine dedant et
    remodifier les url sur ton site pour ne pas le faire apparaitre (ou pas
    d’ailleurs mais c’est moche).

Au niveau du serveur web, cas 1 c’est juste de l’url rewriting, cas 2
c’est de l’url rewrinting + du proxy donc apache en frontend (avec à la
limite lighy derrière).

Un conseil évite les Vhost ce n’est pas scalable, à 6000 vhost apache2
met déjà 2min30 pour démarrer donc si tu as un clusteur il faut
redémarrer les serveurs les uns après les autres. Sache également qu’il
te faudra restart ton serveur apache toutes les x heures ou à chaque
nouveau blog afin que la config de vhost soit prise en compte. A cela tu
rajoutes le script de mise à jour de vhost, bref pas indispensable et
lourd. A toi de voir ton besoin, si tu veux une config personnalisée
t’as pas le choix sinon tu n’en as pas besoin.

Sinon, est-il possible de faire tourner php et Rails sur le même serveur
Apache, et avoir des Vhosts spécifiques ?

Bien sûr apache n’a aucune connaissance de ce que tu fais tourner
derrière de toute facon (ruby, php ou autre).

Renaud

Salut,

Je voudrais savoir comment faire pour mettre en place des sites web
hébergé sur une machine, partageant le même code rails, avec une
configuration différente suivant le host ?

C’est assez simple en fait, il te faudra jouer avec des before filter
suivant les objets les paramètres des objets request. Si tu regardes sur
le svn de rails DHH a fait un petit plugin qui te donne une bonne idée
du comment récupérer les paramètres.

Tu parles de ce plugin ? :
http://wiki.rubyonrails.org/rails/pages/Url+for+domain

Mon besoin est assez simple : configurer des variables de Session en
fonction du nom de domaine, je pense que cela doit être assez simple, non
?
Si le nom de domaine n’est pas correctement configuré => redirection vers
le
site de présentation, sinon, on a une session correctement paramétrée.

Mon idées est de proposer aussi des nom de domaines spécifiques, en plus de
sous domaines. :

Blog1.monsoft.com
Blog2.monsoft.com
Et monBlogAMoi.com => monBlogAMoi.monsoft.com mais sans voir cette url.

rajoutes le script de mise à jour de vhost, bref pas indispensable et
lourd. A toi de voir ton besoin, si tu veux une config personnalisée
t’as pas le choix sinon tu n’en as pas besoin.

Ok, je vois le problème… Mais si j’ai 1000 nom de domaines différents, je
suis obligé de passé par la, non ?

Ou alors mon Apache écoute le port 80 et tout les noms de domaines pointe
sur le même répertoire… Cela doit être jouable.

Sinon, est-il possible de faire tourner php et Rails sur le même serveur
Apache, et avoir des Vhosts spécifiques ?

Bien sûr apache n’a aucune connaissance de ce que tu fais tourner
derrière de toute facon (ruby, php ou autre).

Ok, je vais configurer mon serveur web alors…

Jean

(bis, le premier mail a été envoyé par erreur avant la fin de la rédaction)

Un conseil évite les Vhost ce n’est pas scalable, à 6000 vhost apache2
met déjà 2min30 pour démarrer donc si tu as un clusteur il faut
redémarrer les serveurs les uns après les autres. Sache également qu’il
te faudra restart ton serveur apache toutes les x heures ou à chaque
nouveau blog afin que la config de vhost soit prise en compte. A cela tu
rajoutes le script de mise à jour de vhost, bref pas indispensable et
lourd. A toi de voir ton besoin, si tu veux une config personnalisée
t’as pas le choix sinon tu n’en as pas besoin.

De quoi parle-t-on ?

Si on parle juste de changer un contenu (cache interne + base de données)
en fonction du vhost mais en gardant exactement les mêmes fichiers
(classes, dispatcher, code), Apache aura juste besoin d’un joli vhost en
*.tondomaine.tld et c’est du code rails qui fera la bascule
Il suffit de mettre la liste des vhost possibles quelque part et quand
on
veut en créer un il suffira de créer une entrée là dedans, éventuellement
de créer une base sur ton SGBD.

  • Temps de démarrage Apache du aux vhost : 0
  • Script à faire pour ajouter un vhost : une entrée dans un fichier +
    fichier SQL à exécuter pour créer des tables dans une base

Quand bien même on veut servir un répertoire physique spécifique par vhost
(pour gérer le cache), il n’y a heureusement pas besoin de spécifier 6000
entrées de vhost dans Apache. Il y a un module spécifique à ce genre de
cas, qui fait une translation dynamique (et configurable) entre le nom
de
domaine complet et le répertoire à lire (mod_dynamic_vhost de mémoire).
Le résultat c’est qu’il y a là aussi une seule directive à mettre et
qu’Apache ne mettra pas plus longtemps s’il gère un vhost ou 60000000 (vu
que lui ne sait pas combien il en gère et qu’on peut les rajouter sans
recharger la conf)

  • Temps de démarrage Apache du aux vhost : comme pour une config avec 1
    vhost
  • Script à faire pour ajouter un vhost : créer un répertoire + fichier SQL
    à exécuter pour créer des tables dans une base

Dans les deux cas aucune lenteur au démarage ni aucun rechargement de
configuration n’est nécessaire. La création est automatique et dynamique.
Le seul truc “complexe” c’est éventuellement d’aller initialiser une base
pour chacun de tes utilisateurs, mais ça tu auras à le faire que tu
utilises de vhost ou pas.

Il n’y a aucun problème pour faire tourner des vhost par milliers sur
Apache, que ce soit au niveau de l’administration à faire ou des
performances.


Eric D.

Un conseil évite les Vhost ce n’est pas scalable, à 6000 vhost apache2
met déjà 2min30 pour démarrer donc si tu as un clusteur il faut
redémarrer les serveurs les uns après les autres. Sache également qu’il
te faudra restart ton serveur apache toutes les x heures ou à chaque
nouveau blog afin que la config de vhost soit prise en compte. A cela tu
rajoutes le script de mise à jour de vhost, bref pas indispensable et
lourd. A toi de voir ton besoin, si tu veux une config personnalisée
t’as pas le choix sinon tu n’en as pas besoin.

De quoi parle-t-on ?

Si on parle juste de changer un contenu (cache interne + base de données)
en fonction du vhost mais en gardant exactement les mêmes fichiers
(classes, dispatcher, code), Apache aura juste besoin d’un joli vhost en
*.tondomaine.tld et c’est du code rails qui fera la bascule
Il suffit de mettre la liste des vhost possibles quelque part et quand
on
veut en créer un il suffira de créer une entrée là dedans, éventuellement
de créer une base sur ton SGBD.

  • Temps de démarrage Apache du aux vhost : 0
  • Script à faire pour ajouter un vhost : une entrée dans un fichier +
    fichier SQL à exécuter pour créer des tables dans une base

Quand bien même on veut servir un répertoire physique spécifique par vhost
(pour gérer le cache), il n’y a heureusement pas besoin de spécifier 6000
entrées de vhost dans Apache. Il y a un module spécifique à ce genre de
cas, qui fait une translation dynamique (et configurable) entre le nom
de
domaine complet et le répertoire à lire (mod_dynamic_vhost de mémoire).
Le résultat c’est qu’il y a là aussi une seule directive à mettre et
qu’Apache ne mettra pas plus longtemps s’il gère un vhost ou 60000000 (vu
que lui ne sait pas combien il en gère et qu’on peut les rajouter sans
recharger la conf)

  • Temps de démarrage Apache du aux vhost : comme pour une config avec 1
    vhost
  • Script à faire pour ajouter un vhost : créer un répertoire + fichier SQL
    à exécuter pour créer des tables dans une base

Dans les deux cas aucune lenteur au démarage ni aucun rechargement de
configuration n’est nécessaire. La création est automatique et dynamique.
Le seul truc “complexe” c’est éventuellement d’aller initialiser une base
pour chacun de tes utilisateurs, mais ça tu auras à le faire que tu
utilises de vhost ou pas.

Il n’y a aucun problème pour faire tourner des vhost par milliers sur
Apache, que ce soit a

http://lists.rubyonrails.fr/mailman/listinfo/railsfrance


Eric D.