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

Apache Discussion :

Hôtes virtuels pour l'hébergement de masse


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut Hôtes virtuels pour l'hébergement de masse
    Bonjour,

    Je suis à la recherche d'une solution générique d'hébergement de masse, donc j'aimerai éviter de rajouter un VirtualHost à chaque site créé et ainsi garder un fichier vhost propre et de ne pas avoir à recharger à chaque changement apache.

    Une tel configuration est-elle possible ?

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Oui : dans le monde Apache, cela s'appelle le mass virtual hosting (avé l'accent).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Bonjour,

    je suis un peu dans le même cas que vous. Je ne suis pas expert, mais il me semble qu'il soit possible de faire un include * (enfin quelque chose comme ça) dans le vhost de base pour charger d'autres vhost créer dynamiquement.

    Ça permet de préserver le vhost de base.

    Bon c'est pas d'une grande aide, mais j'espère que ca vous mettre sur des pistes.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par nicko_73 Voir le message
    il me semble qu'il soit possible de faire un include * (enfin quelque chose comme ça) dans le vhost de base pour charger d'autres vhost créer dynamiquement.
    Non, pas dynamiquement. Cela fera en sorte qu'Apache ira lire tous les fichiers se trouvant dans un certain répertoire au démarrage mais pas une fois qu'il a démarré. Pour la vraie conf dynamique à chaud sans redémarrage, c'est mass virtual hosting ou autre conf "souple" par .htaccess ou code PHP "flexible" prenant en compte le hostname du site ou autre.

  5. #5
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Merci,

    Je vais tenter d'expliquer ce que j'aimerai faire.

    Premièrement, voilà la structure de mon site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    /var/www/ #répertoire de base du site
    /var/www/host/ # tous les sites créés seront stocké ici
    /var/www/host/site1/ # un site créé nommé site1
    Ensuite, les domaines :
    www.domaine.tld pointe sur /var/www/
    www.domaine2.tld pointe sur /var/www/host/
    site1.domaine2.tld pointe sur /var/www/host/site1/

    Maintenant, je vous présente ce que j'ai fait.

    - Mon fichier apache2.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    ServerRoot "/etc/apache2"
    LockFile /var/lock/apache2/accept.lock
    PidFile ${APACHE_PID_FILE}
    Timeout 300
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 15
    <IfModule mpm_prefork_module>
        StartServers          5
        MinSpareServers       5
        MaxSpareServers      10
        MaxClients          150
        MaxRequestsPerChild   0
    </IfModule>
    <IfModule mpm_worker_module>
        StartServers          2
        MinSpareThreads      25
        MaxSpareThreads      75 
        ThreadLimit          64
        ThreadsPerChild      25
        MaxClients          150
        MaxRequestsPerChild   0
    </IfModule>
    <IfModule mpm_event_module>
        StartServers          2
        MaxClients          150
        MinSpareThreads      25
        MaxSpareThreads      75 
        ThreadLimit          64
        ThreadsPerChild      25
        MaxRequestsPerChild   0
    </IfModule>
    User ${APACHE_RUN_USER}
    Group ${APACHE_RUN_GROUP}
    AccessFileName .htaccess
    <Files ~ "^\.ht">
        Order allow,deny
        deny from all
    </Files>
    <Directory />
      Order Deny,Allow
      Deny from all
      Options None
      AllowOverride All
    </Directory>
    DefaultType text/plain
    HostnameLookups Off
    ErrorLog /var/log/apache2/error.log
    LogLevel warn
    Include /etc/apache2/mods-enabled/*.load
    Include /etc/apache2/mods-enabled/*.conf
    Include /etc/apache2/httpd.conf
    Include /etc/apache2/ports.conf
    LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
    LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %O" common
    LogFormat "%{Referer}i -> %U" referer
    LogFormat "%{User-agent}i" agent
    CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined
    Include /etc/apache2/conf.d/
    Include /etc/apache2/sites-enabled/
    Include /etc/phpmyadmin/apache.conf
    AddType application/x-httpd-php5 .php5
    Ensuite, j'ai supprimé les fichiers default et 000-default de /etc/apache2/sites-available/ et /etc/apache2/sites-enabled/

    J'ai créé un fichier domaine dans /etc/apache2/sites-available/

    Puis j'ai fait a2ensite domaine

    Voilà le contenu du fichier domaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    NameVirtualHost 127.0.0.1:*
     
    <VirtualHost 127.0.0.1:*>
    ServerName domaine.tld
    ServerAlias domaine.tld *.domaine.tld
    DocumentRoot /var/www       
       <Directory /var/www>
          Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
               Order allow,deny
                 allow from all
     
       </Directory>
    </VirtualHost>
     
    <VirtualHost 127.0.0.1:*>
    ServerName domaine2.tld
    ServerAlias domaine2.tld *.domaine2.tld
    DocumentRoot /var/www/host
    RewriteEngine on  
    RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domaine2.tld
    RewriteCond %{DOCUMENT_ROOT}/%2 -d
    RewriteRule (.*) /%2/$1 [L]
    php_admin_value open_basedir /var/www/host       
       <Directory /var/www/host>
          Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
               Order allow,deny
               allow from all
       </Directory>
    </VirtualHost>
    Vu que pour le moment je travaille en local pour m'entrainer avant d'acquérir un serveur privé virtuel chez OVH, j'ai éditer le fichier /etc/hosts afin d'accepter les domaines www.domaine2.tld site1.domaine2.tld et www.domaine.tld sur l'ip 127.0.0.1 .

    Bref pour le moment ca marche à peu prés.
    C'est à dire que :
    - http://www.domaine.tld pointe bien sur /var/www/
    - http://www.domaine2.tld pointe bien sur /var/www/host/
    - Mais http://site1.domaine2.tld est redirigé vers http://www.domaine2.tld/site1/ ,or j'aimerais que l'URL reste intacte (1er problème).

    Pour des raisons de sécurité, j'aimerai que les scripts exécutés depuis les sites créés ne puisse accéder aux fichiers des autres sites ou du mien.
    On m'a conseillé open_basedir mais je n'ai pas trouvé comment le configurer dynamiquement. (2eme problème).
    On m'a également conseillé SuPHP, je n'ai pas encore eu le temps de voir ce côté là.

    _Mac_ , je suis déjà allé voir sur le site que tu m'as fourni sans avoir réussi quoi que ce soit.
    Parce que pour moi la solution qui répondait à mon problème était d'éditer le fichier domaine de la façon suivante, mais là apache ne veut plus démarrer [fail] !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    UseCanonicalName Off
     
    LogFormat "%V %h %l %u %t \"%r\" %s %b" vcommon
     
    <Directory /var/www>
    Options FollowSymLinks
    AllowOverride All
    </Directory>
     
    <Directory /var/www/host>
    Options FollowSymLinks
    AllowOverride None
    </Directory>
     
    <VirtualHost 127.0.0.1>
    ServerName domaine.tld
     
    CustomLog logs/access_log.domaine vcommon
     
    VirtualDocumentRoot /var/www
    VirtualScriptAlias /var/www
    </VirtualHost>
     
    <VirtualHost 127.0.0.1>
    ServerName domaine2.tld
     
    CustomLog logs/access_log.domaine2 vcommon
     
    VirtualDocumentRoot /var/www/host/%2
    </VirtualHost>

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Petite remarque préliminaire : utiliser une arborescence comme la décrit, je ne trouve pas que ce soit une bonne pratique, bien au contraire. Dis-toi par exemple qu'on peut accéder au site de site1.domaine2.tld avec l'URL http://www.domaine.tld/host/site1/ (à condition de le savoir, bien sûr)... Bref, les sites ne sont pas étanches entre eux, ce qui n'est pas une bonne idée.

    Par ailleurs, une telle structure empêche d'utiliser le mass virtual hosting (VirtualDocumentRoot), ce que je trouve dommage car dans ton cas, c'est tout indiqué. Une structure de répertoire plus classique est la suivante :

    /var/domaine.tld/www pour www.domaine.tld
    /var/domaine2.tld/www pour www.domaine2.tld
    /var/domaine2.tld/site1 pour site1.domaine2.tld
    ...

    L'intérêt c'est que pour *.domaine.tld (respectivement *.domaine2.tld), tu fais un simple VirtualDocumentRoot /var/domaine.tld/%1 (respectivement VirtualDocumentRoot /var/domaine2.tld/%1), voire encore plus générique avec un seul VH qui fait tout et VirtualDocumentRoot /var/%2+/%1.


    Pour le premier problème, tes règles me semblent correctes, je ne comprends pas le comportement observé. Ce que tu peux faire, c'est activer les logs de mod_rewrite (RewriteLog et RewriteLogLevel) pour comprendre pourquoi Apache fait une redirection externe.


    Pour le second problème, aucune idée, je ne connais pas ces modules.


    Citation Envoyé par kanaziwok Voir le message
    Parce que pour moi la solution qui répondait à mon problème était d'éditer le fichier domaine de la façon suivante, mais là apache ne veut plus démarrer [fail] !
    Pour ce problème spécifique, il faut aller consulter les logs d'erreur d'Apache (error_log) pour connaître la raison. Comme ça, je ne la vois pas.

  7. #7
    Membre confirmé Avatar de kanaziwok
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 105
    Par défaut
    Ok merci _Mac_ ,

    Mais avec une tel structure, est-il toujours possible pour des fichiers présent dans /var/domaine.tld/www/ d'accéder à /var/domaine2.tld/site1/ par exemple, car certains script de mon projet modifie des fichiers dans les dossiers des sites créés.

    Si non, il faudra que je revienne à ma configuration précédente.

    En tout cas j'ai modifié mon fichier /etc/apache2/sites-available/domaine de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    NameVirtualHost 127.0.0.1
     
    UseCanonicalName Off
     
     
    <Directory /var/domaine.tld>
    Options FollowSymLinks
    AllowOverride All
    </Directory>
     
    <Directory /var/domaine2.tld>
    Options FollowSymLinks
    AllowOverride All
    </Directory>
     
    <VirtualHost 127.0.0.1>
    ServerName *.domaine.tld
    VirtualDocumentRoot /var/domaine.tld/%1
    </VirtualHost>
     
    <VirtualHost 127.0.0.1>
    ServerName *.domaine2.tld
    VirtualDocumentRoot /var/domaine2.tld/%1
    </VirtualHost>
    Mais là, si je tape http://www.domaine.tld ou http://www.domaine2.tld j'ai le message suivant dans error.log :
    [Sun Mar 14 18:21:09 2010] [error] [client 127.0.0.1] client denied by server configuration: /var/domaine.tld
    Et bien sur une erreur 403 dans le navigateur.

    J'ai créé la structure que tu m'a conseillé.

    Il y a un truc que je ne comprend pas non plus, si je tape site1.domaine2.tld, le navigateur me redirige automatiquement vers www.domaine2.tld/site1/ alors qu'il n'y a plus de règle de redirection ...
    EDIT: Ce dernier problème a été résolu en supprimant les cookies et le cache de Firefox.

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Oui, c'est possible, car PHP a accès au file system : il peut s'affranchir des URL si les droits système sont suffisants.

    Pour ton problème de 403, il faut ajouter
    dans tes <Directory>.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/08/2011, 18h32
  2. Réponses: 1
    Dernier message: 10/05/2010, 22h51
  3. Réponses: 1
    Dernier message: 23/01/2006, 07h25
  4. [Tomcat]Ajout d'un hôte virtuel sous tomcat
    Par ouss dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 26/12/2005, 18h03
  5. hote virtuel pour autre site web
    Par vedder dans le forum Apache
    Réponses: 8
    Dernier message: 27/07/2004, 14h25

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