La gestions des Vhost, plusieurs sites webs sur le même serveur web ?

Lorsque vous avez un domaine et/ou plusieurs sous domaines, ou plusieurs domaines, il vous est possible d'associer à chaque domaine un emplacement défini, afin de ne pas utiliser de port à la suite d'une ip ou d'un domaine par exemple.

Chaque domaine doit pointer vers l'ip de votre serveur, et ensuite un vhost devra être associé à chaque domaine afin de déterminer son emplacement, et son utilisation par le serveur web.

Configuration des champs DNS :

La procédure n'est pas foncièrement différente d'un registar à l'autre c'est simplement l'interface de configuration qui diffère.

Il suffit de créer un champ de type A vers l'Ipv4 du serveur pour chaque domaine/sous-domaine, sans ajouter un quelconque port ou une url, sous peine d'erreur, puisque c'est le host (présent sur le serveur) qui va régler cela.

Je vous mets ici à disposition un exemple de configuration (réalisé avec CloudFlare) :

champs_DNS

Ensuite il faut configurer votre serveur web en conséquence, je vais donc détailler la procédure pour apache2 puis pour nains respectivement,

Apache2 :

Dans un premier temps il vous faut éditer le fichier vhost par défaut d'apache2 afin qu'il ressemble à celui ci-dessous, nano /etc/apache2/sites-available/default, et modifiez les lignes ServerName, DocumentRoot & le second __, de manière à le faire corroborer avec le domaine associé, dans l'exemple ci-dessous le domaine est "chikoumi.com", et son emplacement sur le seveur est "/home/www".

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  ServerName chikoumi.com
  DocumentRoot /home/www

  <Directory />
        Options FollowSymLinks
        AllowOverride None
  </Directory>
  <Directory /home/www/>
        Options -Indexes FollowSymLinks MultiViews
        AllowOverride ALL
        Order allow,deny
        allow from all
  </Directory>

  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Vous devez créer autant de fichier similaire que vous avez de dommaine/sous-domaine associé à votre adresse Ipv4.

Une fois le fichier créer il faut l'activer dans apache2 avec la commande a2ensite défauttdefault est le nom du fichier crée auparavant, vous devez entrer cette commande pour chaque vhost crées. Ensuite il  faut actualiser apache2 via service apache2 reload. Si vous souhaitez désactiver le site à l'avenir entrez simplement a2dissite defaultet encore re-actualiser apache2.

Nginx :

La procédure sous Nginx est assez similaire à celle de Apache2 c'est simplement la typologie de votre vhost qui sera différente, en effet les utilisations sont similaires, mais la syntaxe est plus ou moins différentes en certains points.

Dans un premier temps, il faut se rendre dans le dossier de Nginx qui contient tout vos vhost, pour ma part il s'agit de sites-enabled : cd /etc/nginx/sites-enabled/, si vous faites un ls vous verrez sûrement le fichier par défaut, que vous pouvez ou non garder ou même renommer afin de le faire correspondre avec votre premier domaine. Je vous propose un vhost que j'ai utilisé afin de mieux comprendre son utilisation :

server {
    listen       80;
    server_name  chikoumi.com;
    root         /home/www;

    # Static
     location / {
        index  index.html index.htm index.php;
        try_files $uri $uri/ @extensionless-php;
                 }   
    location @extensionless-php {
        rewrite ^(.*)$ $1.php last;
    }

    location ~ \.php$ {
        try_files $uri =404;

        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index  index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    }

    # Security
     location ~ /\.ht {
        deny  all;
            }

    location = /favicon.ico {
        access_log   off;
        return   204;
            }

    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|xml)$ {
        expires     30d;
        #access_log off;
        #set        $memcached_key $uri;
        #memcached_pass     127.0.0.1:11211;
            }
}

Les lignes qui nous intéressent fortement sont les lignes server_name et root situées au début de notre vhost, elles permettent de définir quel(s) domaine(s) est attaché(s) à quel emplacement.

A chaque fois que vous voulez ajouter un site-web, Il vous faut créer un fichier vhost pour chaque sites et vous modifierez l'exemple si dessus en conséquence. Il est à noter que deux domaines/sous-domaines peuvent pointer vers le même emplacement il suffit de mettre server_name aa.fr bb.fr; par exemple.

Il vous faut maintenant redémarrer nginx : service nginx restart, et le tour est joué lorsque vous accéder à votre domaine il renvoit vers le dossier indiqué, ainsi chaque domaine/sous-domaine seront attachés à leur emplacement.

Poster un Commentaire

Me notifier des
avatar
300
wpDiscuz