• Home
  •  » 
  • Développement web
  •  » 
  • Vhost Apache ~ Script pour créer automatiquement un nouveau site sous Apache

Vhost Apache ~ Script pour créer automatiquement un nouveau site sous Apache

Mis à jour le , par Jacky Thierry, dans la catégorie #Développement web

Vhost apache script

A propos de l'auteur

Jacky THIERRY

CTO, Project Manager, Startup owner

Travaillant depuis plus de 15 ans dans le digital, j'ai dirigé de nombreux projets pour des grosses companies mondiales, des agences web, et des associations locales. Je suis spécialisé dans le développement agile avec des équipes outsourcées.

  • Jacky Thierry linkedin
  • Jacky Thierry twitter
  • Jacky Thierry instagram
  • Jacky Thierry RSS feed
Jacky Thierry

Créer un nouveau site sous Apache est vraiment simple, mais lorsque l’ont doit le faire régulièrement, il est plus facile d’avoir un script qui s’occupe de tout pour nous.
C’est pourquoi je vous propose celui ci, qui fonctionne pour des vhost apache en http et https.

Prérequis

Script vhost Apache

Pour cela, il suffit de copier ce script dans le dossier /bin

/usr/bin/vhostAdd

#!/bin/bash
siteUrl=(`echo $1 | tr '//' ' '`)
siteUrl=${siteUrl[1]}
siteProtocole=(`echo $1 | tr ':' ' '`)
siteProtocole=${siteProtocole[0]}
siteNom=(`echo ${siteUrl} | tr '.' ' '`)
siteNom=${siteNom[1]}
mkdir /var/www/${siteNom} 2> /dev/null
echo "<?php phpinfo(); ?>" > /var/www/${siteNom}/index.php
if [ "${siteProtocole}" = "https" ]; then
echo "<VirtualHost *:443>" > /etc/apache2/sites-available/${siteNom}
else
echo "<VirtualHost *:80>" > /etc/apache2/sites-available/${siteNom}
fi
echo "ServerName ${siteUrl}" >> /etc/apache2/sites-available/${siteNom}
echo "DocumentRoot /var/www/${siteNom}" >> /etc/apache2/sites-available/${siteNom}
echo "CustomLog /var/log/apache2/${siteNom}/access.log combined" >> /etc/apache2/sites-available/${siteNom}
echo "ErrorLog /var/log/apache2/${siteNom}/error.log" >> /etc/apache2/sites-available/${siteNom}
echo "LogLevel warn" >> /etc/apache2/sites-available/${siteNom}
if [ "${siteProtocole}" = "https" ]; then
echo "SSLEngine On" >> /etc/apache2/sites-available/${siteNom}
echo "SSLCertificateFile /etc/ssl/${siteNom}.crt" >> /etc/apache2/sites-available/${siteNom}
echo "SSLCertificateKeyFile /etc/ssl/${siteNom}.key" >> /etc/apache2/sites-available/${siteNom}
#echo "SSLCertificateChainFile /etc/ssl/${siteNom}.auth" >> /etc/apache2/sites-available/${siteNom}
fi
echo "<Directory />" >> /etc/apache2/sites-available/${siteNom}
echo "Order Allow,Deny" >> /etc/apache2/sites-available/${siteNom}
echo "Allow from all" >> /etc/apache2/sites-available/${siteNom}
echo "Options +Indexes -ExecCGI +FollowSymLinks" >> /etc/apache2/sites-available/${siteNom}
echo "AllowOverride All" >> /etc/apache2/sites-available/${siteNom}
echo "</Directory>" >> /etc/apache2/sites-available/${siteNom}
echo "</VirtualHost>" >> /etc/apache2/sites-available/${siteNom}
a2enmod ssl > /dev/null
a2ensite ${siteNom} > /dev/null
/etc/init.d/apache2 reload > /dev/null

Rendez le exécutable
chmod +x /usr/bin/vhostAdd
Puis lancez le en précisant l’utl complète du site à ajouter
vhostAdd http://www.monsite.fr ou vhostAdd https://www.monsite.fr

Pour des sites SSL, il faut que les certificats soient présents dans /etc/ssl/ sous les noms site.crt et site.key