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/
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.