Ce bref tutorial a deux objectifs :
Tout est parti du besoin que j'ai eu de devoir tester des outils de “création de site” au sein de l'intranet de mon travail.
Il me fallait donc un serveur Apache2 et la possibilité de tester plusieurs sites, un par outil (Divers CMS, Divers Wiki… ). Le tout en local.
Or, un coup de Google m'a montré beaucoup des liens dans la langue de Shakespeare, mais bien peu dans celle de Molière et en tous les cas rien qui m'ait beaucoup avancé.
Je vais donc, avec ce tutoriel, essayer de vous (me) faire gagner du temps.
“hère we Go…”
apt-get install apache2 mysql-server libapache2-mod-php5 php5-mysql
Et voilà.
Dans Apache2, les sites disponibles (on parle de virtualhosts, ou vhost) sont déclarés à l'aide de fichier dans le répertoire : /etc/apache2/sites-avalaible/
Partons du principe que vous souhaitez mettre en ligne 2 sites que nous nommerons site-1 et site-2 (pourquoi faire compliqué ? )
Apache vous livre lors de son installation dans ce même répertoire un fichier “default” qui va nous servir de base pour nos 2 sites
On va donc en faire une copie :
cp /etc/apache2/sites-avalaible/default /etc/apache2/sites-avalaible/site-1
cp /etc/apache2/sites-avalaible/default /etc/apache2/sites-avalaible/site-2
cp /etc/apache2/sites-avalaible/default /etc/apache2/sites-avalaible/site-1.conf
cp /etc/apache2/sites-avalaible/default /etc/apache2/sites-avalaible/site-2.conf
Dans votre éditeur de texte favori (pas un traitement texte attention !) ouvrez le fichier site-1 (ou site-1.conf sous Jessie
Faisons un rapide tour d'horizon des sections qui nous intéressent:
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None 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 # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>
<VirtualHost *:80>
et </VirtualHost>
: Signalent le début et la fin de la section du vhost, en écoute pour toutes les interfaces/adresses IP (*) sur le port 80.ServerAdmin webmaster@localhost
: adresse mail où envoyer les messages d'erreur. Devra donc être remplacée par la vôtreServerName www.blablabla.xxx
: Nom utilisé par le vhost, remplacez-le par le nom de votre site (ici site-1)ServerAlias site-1.xxx*.site-1.xxx
: ServerAlias définie les autres sous domaines pour lesquels le vhost répondra.DocumentRoot /var/www/htdocs
: Répertoire de stockage du site (sa racine). Vous devrez donc modifier cette directive pour qu'elle pointe sur votre racine (ex: /home/www/site-1
)DirectoryIndex index.php
: En l'absence de page spécifique demandée par l'internaute, c'est cette page que sera affichée, c'est donc en quelque sorte votre page d'accueil. A modifier donc si votre page d'accueil porte un nom différent (default.html
, accueil.php
, etc.)Comme vous le constatez vous même, il en reste d'autre que je n'ai pas détaillées, mais qui sont importantes notamment pour la sécurité. Je vous invite donc à consulter cette page pour savoir plus : http://doc.ubuntu-fr.org/apache2
Voyons voir a quoi pourrait ressembler notre fichier une fois adapté à nos besoins:
<VirtualHost *:80> ServerAdmin MonMail@gmail.com ServerName www.site-1.fr ServerAlias site-1.fr ServerAlias *.site-1.fr DocumentRoot /home/www/site-1 DirectoryIndex index.php <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/www/site-1> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /home/www/apache_log/error_site-1.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /home/www/apache_log/access_site-1.log combined </VirtualHost>
<VirtualHost *:80> ServerAdmin MonMail@gmail.com ServerName www.site-1.fr ServerAlias site-1.fr ServerAlias *.site-1.fr DocumentRoot /home/www/site-1 DirectoryIndex index.php <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /home/www/site-1> Options Indexes FollowSymLinks MultiViews AllowOverride None Require all granted </Directory> ErrorLog /home/www/apache_log/error_site-1.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /home/www/apache_log/access_site-1.log combined </VirtualHost>
Renouveler les opérations pour créer un fichier de vhost pour site-2
Une fois les fichiers de vhost créés, il reste à les activer pour qu'Apache2 les prenne en compte.
Ce mécanisme permet d'avoir tout les fichiers de vhosts que l'on veut et de n'activer que ceux nécessaires.
Deux méthodes possible:
/etc/apache2/sites-enable
pointant vers/etc/apache2/sites-avalaible/site-1
ln -s /etc/apache2/sites-avalaible/site-1 /etc/apache2/sites-enable
a2ensite site-1
…et comme ils ne font pas les choses a moitié, ils ont aussi prévu la désactivation
a2dissite site-1
Éditez votre fichier /etc/hosts
et modifiez le comme suit pour que votre machine fasse le rapport entre vos vhost et le localhost.
127.0.0.1 localhost 127.0.0.1 site-1 127.0.0.1 site-2
Voir : invoke-rc.d
service apache2 restart
Ouvrez votre navigateur et testez en tapant dans la barre d'adresse:
Vous devriez voir apparaître les pages d'accueil des site-1 et site-2.
Dans le cas d'une utilisation du serveur à des fins de test ou d'un développement en local, il peut-être pratique de pouvoir modifier tous les fichiers de son site sans s'empêtrer avec les problèmes de droits Root/User.
Pour cela on crée un lien symbolique depuis le répertoire du serveur vers le répertoire de son dossier personnel.
Par exemple on place les fichiers de site-1 dans : /home/utilisateur/dev/site-1, puis on crée un lien symbolique comme ceci :
ln -s /home/utilisateur/dev/site-1 /var/www/site-1
Pour approfondir les hôtes virtuels sur un serveur apache :
Mettre en place une redirection avec apache :