Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
apache:ajout_domaine_script_bash [2011/11/15 21:54]
Anael MOBILIA
apache:ajout_domaine_script_bash [2014/05/27 03:32] (Version actuelle)
Ligne 1: Ligne 1:
-<style float-right>​{{tag>​XXX}}</​style>​ +<style float-right>​{{tag>​configuration apache domaine script bash}}</​style>​ 
-<style float-left>​{{:​icones:​page_web.png?​nolink}}</​style>​ +<style float-left>​{{:​icones:​networksettings.png?​nolink}}</​style>​ 
-====== ​Titre_page ​======+====== ​Ajout d'un domaine via script bash ======
 //​[[:​|Retour à la liste des tutoriels]]//​ //​[[:​|Retour à la liste des tutoriels]]//​
 ~~CLEARFLOAT~~ ~~CLEARFLOAT~~
-<note tip>Présentation rapide.</​note>​+<note tip>Création d'un script bash permettant d'​automatiser la création de sites pour Apache.</​note>​ 
 +<note warning>​**Ce script exécute des commandes de manière automatisée. 
 +\\ 
 +L'​auteur décline toute responsabilité quand aux dégâts que ce script pourrait créer sur votre serveur. 
 +\\ 
 +Ce script à été testé avec soin, mais des dysfonctionnements peuvent subsister. 
 +\\ 
 +N'​utilisez ce script qu'à vos risques et périls.**</​note>​
 <​note>​**Prérequis** <​note>​**Prérequis**
-  * Aucun prérequis pour ce tutoriel.+  * [[apache:​installation_configuration|Avoir installé Apache.]] 
 +  * FIXME Avoir installé nano.
 </​note>​ </​note>​
 \\ \\
-===== grand1 ​===== +===== Contexte ​===== 
-lorem ipsum+Ce script bash fournit : 
 +  * La création d'un [[apache:​ajout_domaine|document de configuration de site pour Apache similaire à celui vu dans le tutoriel détaillé]]. 
 +  * L'​activation du nouveau domaine dans Apache. 
 +  * La gestion des www (www.anael.eu et anael.eu seront utilisables) 
 +  * La création des répertoires dans /var/www qui seront utilisés par le nouveau domaine 
 +  * La configuration des droits sur ces répertoires. 
 + 
 +===== 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 
 +<code bash>​nano /​root/​add_site.sh</​code>​ 
 + 
 +  * Copiez y le script contenu ci-dessous. 
 +  * Rendez le fichier exécutable 
 +<code bash> chmod +x /​root/​add_site.sh</​code> ​  
 + 
 +<​note>​Pour créer le domaine "​anael.eu",​ tapez 
 +<code bash>/​root/​add_site.sh anael.eu</​code></​note>​ 
 + 
 +===== Script bash ===== 
 +<file 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/​ 
 +# Version : 2012_08_20_1  
 + 
 +# 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 $USER_WEB:​www-data $BASE_WWW$1 
 +chmod 750 -R $BASE_WWW$1 
 +chown -R $USER_WEB:​www-data $BASE_WWW$1/​*
  
-<code bash> 
  
-</​code>​ +##### ACTIVATION APACHE ##### 
-root@sd-21614:​~nano add_site.sh +Retour utilisateur 
-root@sd-21614:​~chmod +x add_site.sh +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 $1Vé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</​file>​
  
 \\ \\
 ===== Liens ===== ===== Liens =====
-  * [[.:|Retour à la liste des tutoriels ​XXX]]+  * [[.:|Retour à la liste des tutoriels ​Apache]]
   * [[:|Retour à la liste des tutoriels]]   * [[:|Retour à la liste des tutoriels]]