Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
apache:ajout_domaine_script_bash [2011/11/15 21:34] – créée Anael MOBILIAapache:ajout_domaine_script_bash [2014/05/27 03:32] (Version actuelle) – modification externe 127.0.0.1
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
  
-<script bash>+# 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/*
  
-</script> 
  
 +##### 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</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]]