Rhalalal !!! Apache, c’est sympa, c’est vrai
, mais des fois, un truc simple s’avère être une aventure pour qui n’est pas “APACHEien” de naissance.
Alors voilà, peut-être êtes vous dans le cas où vous possédez un nom de domaine (ex : foobar.net) et vous aimeriez bien faire tourner plusieurs sites Web en fonction de leur nommage. Par exemple, avoir un site sur http://galerie.foobar.net, puis un site sur http://www.foobar.net et par exemple un site qui réponde à l’URL http://blog.foobar.net.
Demande au final classique mais qui se termine souvent par un écumage du net pour trouver un exemple, un tutoriel, voir un forum pour piger la meilleurs façon de faire
bref c’est parfois un peu “capilotracté” !
1– La Conf Apache :
Ici, au final pas grand chose à faire, une config de base apache sans définition de virtual host ou de DocumentRoot, juste le paramétrage du port d’écoute (Directive Listen parfois dans un fichier ports.conf), du format des LOGs ainsi que des process Apache …
- Cas d’une configuration “apache2.conf” sur UBUNTU 8.04
ServerRoot “/etc/apache2″
LockFile /var/lock/apache2/accept.lock
PidFile ${APACHE_PID_FILE}
Timeout 600
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 600
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 20
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 4
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}
AccessFileName .htaccess
<Files ~ “^\.ht”>
Order allow,deny
Deny from all
</Files>
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 “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”" combined
LogFormat “%v %h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”" comonvhost
LogFormat “%h %l %u %t \”%r\” %>s %b” common
LogFormat “%{Referer}i -> %U” referer
LogFormat “%{User-agent}i” agent
CustomLog /var/log/apache2/access.log comonvhost
ServerTokens Full
ServerSignature On
Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/
Une fois ceci effectué, Apache peut démarrer avec une configuration de base sans aucun site de configuré. C’est la mise en place de la configuration des “vhosts” (ou virtual hosts) qui va permettre de réaliser ce que l’on cherche.
2– La Conf des “vhosts” :
Chaque “vhost” doit commencer par la directive Apache <VirtualHost MON_VIRTUAL_HOST:MON_PORT>. Avec, par exemple : MON_VIRTUAL_HOST = galerie.foobar.net et MON_PORT = 80. Ensuite, le “vhost” est constitué d’une configuration standard avec son ServerName, son DocumentRoot , ses Alias, etc …
ATTENTION : Il est cependant obligatoire d’avoir une directive “NameVirtualHost” afin d’indiquée à Apache le “vhost par défaut”. La configuration de cette directive doit être mise en place une seule fois pour le group le “vhost“.
Sa mise en place est se fait en nommant le “vhost par défaut” :
<NameVirtualHost MON_VIRTUAL_HOST_DEFAUT:MON_PORT>
- Cas d’une configuration du “vhost par défaut” apache2 sur UBUNTU 8.04
NameVirtualHost www.foobar.net:80
<VirtualHost www.foobar.net:80>
DocumentRoot /var/www/localhost/htdocs/wordpress/
ServerName HomePage_foobar
ServerAdmin webmaster@foobar.net
ScriptAlias /cgi-bin/ “/var/www/localhost/cgi-bin/”
Alias /Divers “/var/www/localhost/htdocs/Divers/”
Alias /phpinfo “/var/www/localhost/htdocs/phpinfo.php”
AccessFileName .htaccess
<Directory “/var/www/localhost/htdocs/wordpress”>
Order Deny,Allow
Allow from all
AllowOverride All
<Limit PUT GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
</Directory>
<Directory “/var/www/localhost/htdocs/Divers”>
Order Deny,Allow
Allow from all
AllowOverride All
<Limit PUT GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
</Directory>
</VirtualHost>
Pour un vhost classique, on à la même chose, sans la directive NameVirtualHost :
- Cas d’une configuration du “vhost classiqe” apache2 sur UBUNTU 8.04
<VirtualHost galerie.foobar.net:80>
DocumentRoot /var/www/galerie.foobar.net/htdocs/piwigo
ServerName Galerie_foobar
ServerAdmin webmaster@foobar.net
Alias /tools “/var/www/galerie.foobar.net/htdocs/piwigo/tools/”
Alias /piwigo “/var/www/galerie.foobar.net/htdocs/piwigo”
AccessFileName .htaccess
<Directory “/var/www/galerie.foobar.net/htdocs/piwigo”>
AllowOverride None
order allow,deny
allow from all
DirectoryIndex index.php index.html
<IfModule mod_php4.c>
php_value include_path .:/etc/sitebar
</IfModule>
</Directory>
<Directory “/var/www/galerie.foobar.net/htdocs/piwigo/tools”>
AllowOverride None
order allow,deny
allow from all
DirectoryIndex index.php index.html
<IfModule mod_php4.c>
php_value include_path .:/etc/sitebar
</IfModule>
</Directory>
</VirtualHost>
Voilà, vous savez tout, ou presque. Ce moyen vous permettra de mettre autant de “vhost“ que souhaités sur votre domaine DNS.
Let’s Going On !