Installation complète d'un serveur web sous Debian


précédentsommaire

VII. Script

VII-A. Installation d'un nouvel hébergement

Ce script permet de créer les paramètres nécessaires pour créer un nouveau site. Il configure :

  • Apache (virtualhost)
  • Bind
  • Vsftpd
  • Postfix (création du compte mail webmaster)
  • Copie des fichiers de base dans le répertoire home

Ce script a besoin, pour être exécuté, de 3 paramètres et d'un répertoire :

  • nom de l'utilisateur shell créé
  • mot de passe de cet utilisateur
  • le nom de domaine correspondant

Avant d'utiliser le script pour la première fois, il faut commencer par créer l'arborescence de base qui devra exister dans le nouvel hébergement créé. Dans le même répertoire que votre script, créer l'arborescence suivante :

 
Sélectionnez

fic_originaux/
fic_originaux/logs/
fic_originaux/public_html/
fic_originaux/public_html/index.html

Vous pouvez évidemment mettre ce que vous voulez dans le dossier fic_originaux/public_html/. Pour ma part, je mets un fichier index.html contenant un message de bienvenue, et un fichier info.php qui contient la commande phpinfo(). Cela permet de vérifier que le php est activé et fonctionne correctement.

Ce script est livré en l'état, sans aucune assurance. Il peut être adapté, mais en aucun cas redistribué, sous quelque forme que ce soit. Il n'est certainement pas optimisé, mais il fonctionne avec le reste du tutoriel !

Pour exécuter le script, il faut lui donner les droits d'exécution (X), et le lancer sous cette forme :

 
Sélectionnez

./new_site.sh user mdp domaine
new_site.sh
Sélectionnez

# ------------------------------------------------------------------------------------------------------------------------
#                                               Script de création d'hébergement
#
#	Auteur: 	Lange Olivier
#	Date:		2006/2007
#	Description:
#			Script permettant d'ajouter un nouvel hébergement dans le serveur. Il crée tous les fichiers
#			nécessaires, et effectue les configurations de base.
#	Paramètre:	1° Nom de l'utilisateur Shell
#			2° Mot de passe de l'utilisateur
#			3° Nom de domaine
#-------------------------------------------------------------------------------------------------------------------------


#!/bin/sh

# Récupère le nom d'utilisateur créé
new_user=$1

# Récupère le nom de domaine
nom_domaine=$3

# Récupère le mot de passe souhaité
password=$2

# Définit le mot de passe root de mysql
mdp_mysql_root = XXXXXXXXXXXX

# Récupère la date de création pour générer le fichier Bind
date_creation=`date +%Y%m%d`01

# Récupère l'IP du serveur
mon_ip=`grep $HOSTNAME /etc/hosts |cut -f1`

# Définit le répertoire de base de l'utilisateur
rep=/home/$new_user

# Test si le répertoire existe, et donc l'utilisateur
if [ -d $rep ]; then
	echo "L'utilisateur est déja géré par ce serveur"
else
	if [ -e /etc/apache2/sites-enabled/$nom_domaine ]; then
		echo "Le nom de domaine est déja géré par ce serveur"
	else
	
		# Génère les fichiers de base du nouveau site
		/usr/sbin/useradd -p $password $new_user
		cp -R fic_originaux $rep
		chown -R www-data:www-data $rep
		chmod -R 755 $rep

# ------------------------------------------------------------------------------------------------------------------------
#                                               Configuration d'apache
#-------------------------------------------------------------------------------------------------------------------------

		# Crée le fichier de configuration du répertoire virtuel
		echo "
<VirtualHost *>

        ServerAdmin postmaster@$nom_domaine
        ServerName www.$nom_domaine
        ServerAlias $nom_domaine *.$nom_domaine

        DocumentRoot /home/$new_user/public_html/

        <Directory /home/$new_user/public_html/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
        </Directory>

        ErrorLog /home/$new_user/logs/error.log
        LogLevel warn
        CustomLog /home/$new_user/logs/access.log combined

        ServerSignature Off

</VirtualHost>


" >> /etc/apache2/sites-available/$nom_domaine
		ln -s /etc/apache2/sites-available/$nom_domaine /etc/apache2/sites-enabled/$nom_domaine
	
# ------------------------------------------------------------------------------------------------------------------------
#                                               Configuration de BIND
#-------------------------------------------------------------------------------------------------------------------------

		# Crée le fichier de déclaration de zone BIND
		echo "
\$ttl 86400
$nom_domaine.   IN      SOA     $HOSTNAME. webmaster.$nom_domaine. (
                        $date_creation
                        21600
                        3600
                        604800
                        86400 )
                IN      NS      $HOSTNAME.
                IN      NS      ns.kimsufi.com.
                IN      MX      10 mail.$nom_domaine.
                IN      A       $mon_ip
www             IN      A       $mon_ip
mail            IN      A       $mon_ip
smtp            IN      A       $mon_ip
pop             IN      A       $mon_ip
pop3            IN      A       $mon_ip
imap            IN      A       $mon_ip
sql             IN      A       $mon_ip
mysql           IN      A       $mon_ip
" > /etc/bind/db.$nom_domaine

		# Crée la zone BIND
		echo "zone \"$nom_domaine\" {
        type master;
        file \"/etc/bind/db.$nom_domaine\";
};
" >> /etc/bind/zones.conf


# ------------------------------------------------------------------------------------------------------------------------
#                                               Configuration du ftp principal
#-------------------------------------------------------------------------------------------------------------------------

		# On ajoute l'utilisateur et son mdp
		echo "$new_user
$password" > /etc/vsftpd/login.txt
		
		# On met à jour la base berkeley
		db3_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

		# On ajoute les paramètres pour notre nouveau site
		echo "anon_world_readable_only=NO
local_root=$rep
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES" > /etc/vsftpd/vsftpd_user_conf/$new_user

# ------------------------------------------------------------------------------------------------------------------------
#                                              Installation du compte mail par défaut
#-------------------------------------------------------------------------------------------------------------------------

mysql -u root -e "INSERT INTO domain (domain, actif) VALUES ('$nom_domaine', '1');" -p$mdp_mysql_root postfix
mysql -u root -e "INSERT INTO mailbox (email,password,quota,actif,imap,pop3) VALUES ('webmaster@$nom_domaine',ENCRYPT('$password'),0,1,1,1);" -p$mdp_mysql_root postfix


# ------------------------------------------------------------------------------------------------------------------------
#						Redémarre les services
#-------------------------------------------------------------------------------------------------------------------------
		/etc/init.d/bind9 restart
		/etc/init.d/apache2 restart
		/etc/init.d/vsftpd restart
		/etc/init.d/postfix restart
		
		echo "L'utilisateur $new_user a bien été enregistré sur le serveur"
		echo "Le serveur a été redémarré"
	fi
fi

précédentsommaire

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2007 Onet. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.