paolo@bimodesign.com | +34 608 61 64 10

Unclassifiable

        

Shell Script, how to create a virtual host

This is a shell script to configure a virtual host, modifying the
- /etc/hosts
- /etc/apache2/sites-available/OwnHostName
- rootdir/phpinfo.php
including to make several checks and restarting apache.
Note: the prompt are in Spanish

#!/bin/bash
 
### Checking for user
if [ "$(whoami)" != 'root' ]; then
        echo "No tienes permisos para ejecutar $0 como usuario no root. Use sudo !!!"
        exit 1;
fi
 
### Configure email and vhost dir
email='eduardo@moviplans.com'	# email address of administrator
vhroot='/etc/apache2/sites-available' 	# no trailing slash
iserror='no'
hosterror=''
direrror=''
 
# Take inputs host name and root directory
echo -e "Por favor ingrese el nombre del host. Ejm: demo.localhost, demo"
read  hostname
echo -e "Por favor ingrese el directorio raíz. Ejm: /home/usuario/public_html/demo o /var/www/demo"
read rootdir
 
### Check inputs
if [ "$hostname" = "" ]
then
    iserror="yes"
    hosterror="Por favor, indique el nombre de dominio."
fi
 
if [ "$rootdir" = "" ]
then
    iserror="yes"
    direrror="Por favor, indique el directorio raíz del servidor."
fi
 
### Displaying errors
if [ "$iserror" = "yes" ]
then
    echo "Por favor, corrija los siguientes errores:"
    if [ "$hosterror" != "" ]
    then
        echo "$hosterror"
    fi
 
    if [ "$direrror" != "" ]
    then
        echo "$direrror"
    fi
    exit;
fi
 
### check whether hostname already exists
if [ -e $vhroot"/"$hostname ]; then
    iserror="yes"
    hosterror="Hostname ya existe. Por favor seleccione otro hostname."
fi
 
 
### check if directory exists or not
if ! [ -d $rootdir ]; then
    iserror="yes"
    direrror="El directorio no existe.";
fi
 
### Displaying errors
if [ "$iserror" = "yes" ]
then
    echo "Por favor, corrija los siguientes errores:"
    if [ "$hosterror" != "" ]
    then
        echo "$hosterror"
    fi
 
    if [ "$direrror" != "" ]
    then
        echo "$direrror"
    fi
    exit;
fi
 
if ! touch $vhroot/$hostname
then
        echo "ERROR: "$vhroot"/"$hostname" no se pudo crear."
else
        echo "El virtual host se ha creado en: "$vhroot"/"$hostname
fi
 
if ! echo "
ServerAdmin $email
ServerName $hostname
ServerAlias $hostname www.$hostname
DocumentRoot $rootdir

        AllowOverride All


        AllowOverride All

ErrorLog /var/log/apache2/$hostname
 LogLevel error
CustomLog /var/log/apache2/$hostname custom
" > $vhroot/$hostname
then
        echo "ERROR: El virtual host no se ha podido agregar."
else
        echo "El nuevo virtual host se ha agregado en el archivo de Apache vhosts"
fi
 
### Add hostname in /etc/hosts
if ! echo "127.0.0.1       $hostname" >> /etc/hosts
then
    echo "ERROR: No se ha podido agregar en el archivo /etc/hosts"
else
    echo "Agregado en el archivo /etc/hosts"
fi
 
### enable website
a2ensite $hostname
 
### restart Apache
/etc/init.d/apache2 reload
 
### give permission to root dir
chmod 755 $rootdir
 
if ! touch $rootdir/phpinfo.php
then
    echo "ERROR: "$rootdir"/phpinfo.php no se pudo crear."
else
    echo ""$rootdir"/phpinfo.php creado."
fi
if ! echo "<?php
echo phpinfo();
?<" > $rootdir/phpinfo.php
then
    echo "ERROR: No se ha podido escribir en el archivo "$rootdir"/phpinfo.php. Por favor verifique los permisos."
else
    echo "Se agregaron los datos en "$rootdir"/phpinfo.php."
fi
 
# show the finished message
echo "Completado! El nuevo virtual host se ha creado correctamente.
Para verificar que funciona correctamente ingresa a: http://"$hostname"/phpinfo.php
El documento raíz es: "$vhroot"/"$hostname