3 feb 2010

Creación automática de sitios Webs, con Apache2 y Vsftp

Este post va dedicado, en contra del trabajo rutinario y/e aburrido. Estos últimos meses, he observado que existe gente que no le molesta hacer las cosas de forma repetitiva dia a dia, en particular es algo que me desespera ya que no solo se vuelve una tortura sino que también nos hace perder nuestro valioso tiempo.
Y que cosa mas aburrida que la creación de sitios en Apache y su correspondiente acceso via FTP. Desconozco la existencia de alguna herramienta que nos permita hacer esto de forma automatizada, por lo que decidí hacer la mia.

Como pre requisito es necesaria la instalación de los paquetes apache2, libapache2-mod-php5, vsftpd,db4. La configuación de los mismo no esta al alcance de este post.


#!/bin/bash
#+-----------------------------------------+
#| Developer by Alejandro Andino.  |
#+-----------------------------------------+

echo -n "Ingrese el nombre del sitio web, sin dominio,www ó http : "

read user_site

echo -n "Ingrese el nombre del dominio: "

read domain

password=`cat /dev/urandom | tr -dc A-Z-a-z-0-9-_ | head -c10`

ftp="/etc/vsftpd"

user_ftp=`echo "ftp_"$user_site`

apache="/etc/apache2"

sites=$apache"/sites-available"

sudo chmod o+rxw $ftp/users_db

echo $user_ftp >> $ftp/users_db

echo $password >> $ftp/users_db

if [ $? -ne 0 ]; then
echo "Problemas de acceso a  $ftp/users_db !!!"
exit
fi

sudo chmod o-wx $ftp/users_db

parametros="s/\(local_root=\/var\/www\)\/.*/\1\/$user_site/g"

if [ -f $ftp/virtual-users.db ]; then
sudo rm $ftp/virtual-users.db
sudo db4.4_load -T -t hash -f $ftp/users_db /etc/vsftpd/virtual-users.db
else
sudo db4.4_load -T -t hash -f $ftp/users_db /etc/vsftpd/virtual-users.db
fi

if [ -f $ftp/users/virtual1 ]; then
sudo cp -f $ftp/users/virtual1 $ftp/users/$user_ftp
sudo chmod o+rw $ftp/users/$user_ftp
cat $ftp/users/virtual1 | sed -e ${parametros} > $ftp/users/$user_ftp
sudo chmod o-r $ftp/users/$user_ftp
else
echo "No existe el template de acceso ftp !!!"
exit
fi

#cat $ftp/users/$user_ftp

if [ ! -f $ftp/users/$user_ftp ]; then
echo "ERROR al crear usuario FTP !!!"
exit
fi

################################################"

sudo mkdir -p /var/www/$user_site

sudo chown -R www-data:www-data /var/www/$user_site

if [ -f $sites/default00 ]; then
sudo cp $sites/default00 $sites/$user_site
sudo chmod o+rw $sites/default00
sed -e "s/^.*NameVirtualHost.*//g" $sites/default00 | \
sed -e 's/ServerAdmin.*/ServerAdmin aandino\@localhost/g' | \
sed -e "s/DocumentRoot.*/DocumentRoot \/var\/www\/`echo ${user_site}`\//g" | \
sed -e "s/ServerName.*/ServerName www\.`echo ${user_site}`\.`echo ${domain}`/g" | \
sed -e "s/ServerAlias.*/ServerAlias \*`echo ${user_site}`\.`echo ${domain}`/g" | \
sed -e "s///g" > $sites/$user_site
sudo chmod o-rw $sites/$user_site
else
echo "Verifique su instalacion de Apache2 !!!"
exit
fi

sudo a2ensite $user_site

if [ $? ]; then
sudo /etc/init.d/apache2 reload
else
echo " Un Error ha ocurrido al cargar el Site !!!"
exit
fi

sudo chmod o-rxw $ftp/users_db

echo "Operacion terminada con exito !!!"
echo ""
echo "###################################"
echo ""
echo "Usuario FTP: "$user_ftp
echo ""
echo "Password FTP: "$password

Este scripts nos dara como salida la creación del sitio web que le especifique os y su correspondiente acceso via FTP.