multisite en interne sur un apache

multisite en interne sur un apache - Installation - Linux et OS Alternatifs

Marsh Posté le 30-04-2013 à 09:30:03    

Bonjour,
 
Je cherche à configurer un serveur apache en interne dans mon entreprise, afin de pouvoir héberger plusieurs sites mais je n'y arrive pas.
 
Voici ce que j'ai fait actuellement :  
 
 - un serveur apache sur un linux ( ubuntu je sais plus quelle version mais avec le noyau 3.0.0 )
 - un premier site de configuré pour gérer un dépot svn. Celui-ci est configuré non pas dans le fichier sites-available/default , mais dans le fichier mods-availables/dav_svn.conf ( je ne comprends pas déjà pourquoi on peut configurer plusieurs accès à plusieurs endroits différents ).
 
J'ai plusieurs dépots, mais cela ne change rien, je donne la config d'un dépot :

Code :
  1. <Location /svn-tools>
  2. DAV svn
  3. SVNPath /var/svn/svn-tools
  4. AuthType Basic
  5. AuthName "Subversion Repository tools"
  6. AuthUserFile /etc/apache2/dav_svn_tools.passwd
  7. </Location>


 
J'ai donc une authentification pour ce "site" , et l'accès de ce site se fait de la facon suivante : http://monserveur/svn-tools/
 
Ceci fonctionne bien, et je peux dupliquer autant de location que j'ai besoin de dépot avec leur propre fichier d'authentification si je le souhaite.
 
 - un second site cette fois ci configuré de facon standard ( dans /var/www/ ) .Celui-ci est donc configuré dans sites-available/default dans lequel on voit apparaitre des "virtualhost" et des "directory". Déjà, c'est différent des "location" de la méthode précédente, je ne comprends pas bien la différence.
 
voici la configuration par défaut ( je n'ai rien changé pour le moment au fichier de configuration default ).
 

Code :
  1. <VirtualHost *:80>
  2.         ServerAdmin webmaster@localhost
  3.         DocumentRoot /var/www
  4.         <Directory />
  5.                 Options FollowSymLinks
  6.                 AllowOverride None
  7.         </Directory>
  8.         <Directory /var/www/>
  9.                 Options Indexes FollowSymLinks MultiViews
  10.                 AllowOverride None
  11.                 Order allow,deny
  12.                 allow from all
  13.         </Directory>
  14.         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  15.         <Directory "/usr/lib/cgi-bin">
  16.                 AllowOverride None
  17.                 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  18.                 Order allow,deny
  19.                 Allow from all
  20.         </Directory>
  21.         ErrorLog ${APACHE_LOG_DIR}/error.log
  22.         # Possible values include: debug, info, notice, warn, error, crit,
  23.         # alert, emerg.
  24.         LogLevel warn
  25.         CustomLog ${APACHE_LOG_DIR}/access.log combined
  26.     Alias /doc/ "/usr/share/doc/"
  27.     <Directory "/usr/share/doc/">
  28.         Options Indexes MultiViews FollowSymLinks
  29.         AllowOverride None
  30.         Order deny,allow
  31.         Deny from all
  32.         Allow from 127.0.0.0/255.0.0.0 ::1/128
  33.     </Directory>
  34. </VirtualHost>


 
 
ce site se trouve donc par défaut dans /var/www et si j'accède à l'adresse http://monserveur/ je tombe sur mon site. Jusque là, normal.
 
Ce que je souhaite faire , c'est avoir non pas un site, mais autant que je souhaite ( on va commencer par 2 ).
 
Je souhaite accéder à ces sites de la facon suivante :  
 
http://monserveur/site1/
http://monserveur/site2/
 
si je crée 2 répertoires dans /var/www : /var/www/site1/ qui contient mon site1 et /var/www/site2/ qui contient mon site2 , cela fonctionne.
 
Sauf que je souhaite mettre une authentification sur site1 , et pas d'authentification sur site 2.
 
Si je rajoute les lignes suivantes dans mon directory /var/www
 

Code :
  1. AuthType Basic
  2.                 AuthName "Wiki "
  3.                 AuthUserFile /etc/apache2/wiki.passwd


 
l'authentification va agir sur tout /var/www/ donc sur mon site 1 et sur mon site 2.
 
Maintenant, je ne vois pas comment faire pour séparer la configuration en 2 sites distincts, afin de pouvoir agir indépendamment sur mes sites :
 
 - je veux pouvoir choisir le répertoire qui contient mon site : /var/www/site1 et /var/www/site2 mais ca pourrait être également /var/www pour le site1 et /mnt/disk/www pour le site2
 - je veux pouvoir gérer l'authentification indépendamment sur chaque site , donc en mettre une ou non et pas forcément avec les memes user/pass.
 - l'accès de mes sites devrait se faire de la facon suivante : http://monserveur/site1 et http://monserveur/site2 ( http://monserveur/ devrait ne pas fonctionner ou pointer vers un 3eme site encore différent ). Et non pas http://monsite1/ et http://monsite2. En effet, je n'ai pas de serveur dns en interne, et de toutes facons, ces sites sont égalements accessible de l'externe d'une facon différente, et je n'ai qu'une seule adresse dns externe pour accéder à mon apache , donc je ne peux pas les différencier par leur adresse dns également.
 
 
 
Dois-je pour cela créer plusieurs virtual host ? Ou à l'intérieur de mon virtual host, dois je déclarer plusieurs directory ? J'ai fait plusieurs essais, mais aucun ne fonctionne :(
 
Quelqu'un aurait-il une idée ?  
Merci d'avance :)
 
 

Reply

Marsh Posté le 30-04-2013 à 09:30:03   

Reply

Marsh Posté le 01-05-2013 à 11:15:00    

Si tu veux que l'auth ne s'applique qu'à site1, il te faut la définir dans un Directory "/var/www/site1".
Ou dans un Location /site1 :D
 
Sinon la gestion par virtualhost est beaucoup plus souple à l'usage. Ca prends un peu de temps pour piger, mais une fois que ce sera le cas ça permet de bien isoler les configs de tes différents sites, et d'éviter les effets de bords quand tu décides de changer le réglage de l'un d'eux ;)
 
Je te conseille de lire la doc de Apache, très bien faite et complète, afin de bien saisir les nuances entre Directory/Location et surtout la notion de virtualhost.


---------------
Ce n'est point ma façon de penser qui a fait mon malheur, c'est celle des autres.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed