Ceci est une ancienne révision du document !



Warning: Declaration of syntax_plugin_styler_verse::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/anaeleufv/mon-serveur.anael.eu/lib/plugins/styler/syntax/verse.php on line 107

Warning: Declaration of syntax_plugin_styler_verse::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/anaeleufv/mon-serveur.anael.eu/lib/plugins/styler/syntax/verse.php on line 107

Warning: Declaration of syntax_plugin_styler_styler::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/anaeleufv/mon-serveur.anael.eu/lib/plugins/styler/syntax/styler.php on line 123

Warning: Declaration of syntax_plugin_styler_styler::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/anaeleufv/mon-serveur.anael.eu/lib/plugins/styler/syntax/styler.php on line 123

Warning: Declaration of syntax_plugin_clearfloat::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /home/anaeleufv/mon-serveur.anael.eu/lib/plugins/clearfloat/syntax.php on line 74

Warning: Declaration of syntax_plugin_clearfloat::render($mode, &$renderer, $data) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /home/anaeleufv/mon-serveur.anael.eu/lib/plugins/clearfloat/syntax.php on line 74

Ajout d'un domaine via script bash

Retour à la liste des tutoriels

Création d'un script bash permettant d'automatiser la création de sites pour Apache.
Prérequis


Contexte

Ce script bash fournit :

Création du script

Je préconise le stockage des scripts dans /root afin d'éviter qu'ils ne soient mis à plusieurs endroits sur votre serveur.

  • Créez un fichier
nano /root/add_site.sh
  • Copiez y le script contenu ci-dessous.
  • Rendez le fichier exécutable
 chmod +x /root/add_site.sh
Pour créer le domaine “anael.eu”, tapez
/root/add_site.sh anael.eu

Script bash

add_site.sh
#!/bin/bash
#	add_site.sh
# Script permettant l'ajout de domaines dans la configuration d'Apache2
# Auteur : Anael Mobilia
# Source : http://mon-serveur.anael.eu/doku.php/apache/ajout_domaine_script_bash
# Licence : CC Attribution-Noncommercial-Share Alike 3.0 Unported
#		http://creativecommons.org/licenses/by-nc-sa/3.0/
 
# Expression régulière validant les NDD - inspirée de http://simonslick.com/VEAF/
REGEXP_NDD="^[a-zA-Z0-9.-]{1,255}\.[a-zA-Z]{2,63}$"
 
# Expression régulière distinguant les domaines & sous domaines
REGEXP_DOMAINE="^[a-zA-Z0-9-]{1,255}\.[a-zA-Z]{2,63}$"
 
# Répertoire contenant les fichiers de configuration des domaines apache
APACHE_SITES="/etc/apache2/sites-available/"
 
# Répertoire racine pour le domaine (un dossier au nom du domaine y sera créé)
# [/var/www/]default/www
BASE_WWW='/var/www/'
 
# Répertoire contenant les pages web (relatif à BASE_WWW)
# /var/www/default[/www]
WWW='/www'
 
# Répertoire contenant les logs (relatif à BASE_WWW)
# /var/www/default[/logs]
LOGS='/logs'
 
# Mail de l'admin
MAIL_ADMIN='webmaster@an*el.eu'
 
# Utilisateur se connectant en FTP pour effectuer les modifications
USER_WEB='user-web'
 
################# Ne pas effectuer de modification après cette ligne #########################
##### VERIFICATIONS #####
# Vérification du passage d'un paramètre (le domaine à créer)
if [ ! $1 ]
then
	echo "Préciser le domaine à ajouter ($0 anael.eu) !"
        exit 10
fi
 
# Vérification du nom de domaine proposé
if [[ ! "$1" =~ $REGEXP_NDD ]]
then
	echo "Le nom de domaine $1 n'est pas valide !"
	exit 11
fi
 
# Vérification que le domaine n'existe pas déjà
if [ -f $APACHE_SITES$1 ]
then
	echo "Le domaine $1 est déjà configuré pour Apache"
	exit 12
fi
 
# Retour utilisateur
echo "Création de la configuration du domaine"
 
##### CREATION FICHIER DE CONF APACHE #####
# Création du fichier de configuration Apache du domaine
touch $APACHE_SITES$1
 
# Vérification de la bonne création du fichier de configuration
if [ $? != 0 ]
then
	echo "Erreur à la création du fichier de configuration Apache ($APACHE_SITE$1). Etes-vous bien root ?"
	exit 13
fi
 
 
#Ajout du contenu du fichier de configuration apache
# Contenu par défaut du fichier de configuration Apache du domaine ainsi créé
# Il faut ajouter \n pour revenir à la ligne \t pour faire une tabulation
APACHE_DOMAINE_CONF="<VirtualHost *:80>
\r\n\tServerAdmin $MAIL_ADMIN
\r\n\tServerName $1"
 
# Si c'est un domaine (et non pas un sous domaine...)
if [[ "$1" =~ $REGEXP_DOMAINE ]]
then
        APACHE_DOMAINE_CONF=$APACHE_DOMAINE_CONF"\r\n\tServerAlias www.$1"
fi
 
APACHE_DOMAINE_CONF=$APACHE_DOMAINE_CONF"\r\n
\r\n\tDocumentRoot $BASE_WWW$1$WWW
\r\n\t<Directory $BASE_WWW$1$WWW/>
\r\n\t\tOptions -Indexes FollowSymLinks
\r\n\t\tAllowOverride AuthConfig Options
\r\n\t\tOrder allow,deny
\r\n\t\tallow from all
\r\n\t</Directory>
\r\n
\r\n\tErrorLog $BASE_WWW$1$LOGS/error.log
\r\n
\r\n\t# Possible values include: debug, info, notice, warn, error, crit,
\r\n\t# alert, emerg.
\r\n\tLogLevel warn
\r\n
\r\n\tCustomLog $BASE_WWW$1$LOGS/access.log combined
\r\n
\r\n\t<IfModule mod_php5.c>
\r\n\t\tphp_admin_value open_basedir $BASE_WWW$1$WWW/:/tmp/
\r\n\t</IfModule>
\r\n</VirtualHost>"
 
# Enregistrement de la configuration dans le fichier
echo -e $APACHE_DOMAINE_CONF > $APACHE_SITES$1
 
##### CREATION DES REPERTOIRES + DROITS #####
# Création des répertoires
# Retour utilisateur
echo "Création des répertoires sur le disque"
# Répertoire du domaine
mkdir $BASE_WWW$1
# Vérification de la bonne création du répertoire
if [ $? != 0 ]
then
        echo "Erreur à la création du répertoire ($BASE_WWW$1). Etes-vous bien root ?"
        exit 14
fi
 
# Répertoire des pages web
mkdir $BASE_WWW$1$WWW
# Vérification de la bonne création du répertoire
if [ $? != 0 ]
then
        echo "Erreur à la création du répertoire ($BASE_WWW$1$WWW). Etes-vous bien root ?"
        exit 15
fi
 
# Répertoire des logs
mkdir $BASE_WWW$1$LOGS
# Vérification de la bonne création du répertoire
if [ $? != 0 ]
then
        echo "Erreur à la création du répertoire ($BASE_WWW$1$LOGS). Etes-vous bien root ?"
        exit 16
fi
 
# Retour utilisateur
echo "Définition des droits sur les répertoires"
# Droits sur les répertoires
chown www-data:www-data $BASE_WWW$1
chmod 750 -R $BASE_WWW$1
chown -R $USER_WEB:www-data $BASE_WWW$1/*
 
 
##### ACTIVATION APACHE #####
# Retour utilisateur
echo "Activation du domaine dans la configuration d'Apache"
# Activation du domaine Apache
a2ensite $1
#Vérification de la bonne exécution
if [ $? != 0 ]
then
        echo "Erreur à l'activation du site $1. Vérifiez la configuration des domaines délivrés par Apache."
	echo "Une erreur peut planter Apache au prochain reload !"
        exit 17
fi
 
# Retour utilisateur
echo "Rechargement de la configuration d'Apache"
# Relance d'apache
/etc/init.d/apache2 reload
#Vérification de la bonne exécution
if [ $? != 0 ]
then
        echo "Erreur au rechargement d'Apache !"
        echo "Vos sites ne sont plus accessibles !"
        exit 18
fi


Liens