Manipulação de Domínios no Apache

Prezados Colegas,
Primeiramente saudações pinguianas a todas.
Como possuo um servidor Web Apache e pretendo hospedar vários domínios, resolvi criar um script para facilitar o gerenciamento.
Esse script segue os padrões das configurações do Apache2 para Debian 8, porém deve servir para outras distribuições que sejam Debian Like, fazendo alguns ajustes.
Você pode altera-lo conforme sua necessidade.
Aqui tem um vídeo que demonstra o script funcionando:
Baixe o script clicando aqui, mas se preferir, segue o código:
#!/bin/bash
Principal() {
echo '####################################################'
echo '######## SISTEMA DE MANIPULAÇÃO DE DOMÍNIOS ########'
echo '## ##'
echo '## Esse sistema foi escrito por Henrique Fagundes ##'
echo '## todos os direitos são reservardos. ##'
echo '## ##'
echo '############## www.aprendendolinux.com #############'
echo '####################################################'
echo
echo "O que deseja fazer?"
echo
echo "1. Adicionar um novo domínio"
echo "2. Adicionar um sub-domínio"
echo "3. Remover um domínio"
echo "4. Remover um sub-domínio"
echo "5. Listar domínios"
echo "6. Sair"
echo
echo -n "Qual a opção desejada? "
read opcao
case $opcao in
1) Adicionar_Dominio ;;
2) Adicionar_Subdominio ;;
3) Remover_Dominio ;;
4) Remover_Subdominio ;;
5) Listar_Dominios ;;
6) exit ;;
*) echo ' ' ; echo 'Opção desconhecida, saindo do programa' ; exit ;;
esac
}
Adicionar_Dominio() {
clear
echo '####################################################'
echo '# Aqui você vai inserir o PREFIXO do domínio que #'
echo '# deseja ADICIONAR. Por exemplo: se seu dominio #'
echo '# for "linux.com.br", o PREFIXO é "linux". #'
echo '####################################################'
echo
echo -n "Então, qual o PREFIXO do domínio que deseja ADICIONAR? "
read prefixo
clear
echo '####################################################'
echo '# Agora você deve inserir o SUFIXO do domínio que #'
echo '# deseja ADICIONAR. Por exemplo: se seu domínio #'
echo '# for "linux.com.br", o SUFIXO é "com.br". #'
echo '####################################################'
echo
echo -n "Então, qual o SUFIXO do domínio que deseja ADICIONAR? "
read sufixo
useradd $prefixo -m -d /var/www/$prefixo.$sufixo -k /etc/skel -s /bin/bash
clear
echo '####################################################'
echo '# Muito bem, agora precisamos definir a senha para #'
echo '# o seu domínio. Primeiro você vai inserir a senha #'
echo '# e depois confirma-la, ok? Quando digitar, nada #'
echo '# vai aparecer na tela. Não se preocupe. É normal. #'
echo '####################################################'
echo
passwd $prefixo
Quotas() {
clear
echo '####################################################'
echo '# Aqui você vai definir a QUOTA para o domínio #'
echo '# QUOTA é o espaço total que o domínio vai poder #'
echo '# ocupar no servidor. #'
echo '####################################################'
echo
echo "Quantos GB de espaço o domínio $prefixo.$sufixo vai ter?"
echo
echo "Opção 1 = 1GB de espaço em disco"
echo "Opção 2 = 2GB de espaço em disco"
echo "Opção 3 = 5GB de espaço em disco"
echo "Opção 4 = 10GB de espaço em disco"
echo
echo -n "Qual a opção desejada? "
read quota
case $quota in
1) 1GB ;;
2) 2GB ;;
3) 5GB ;;
4) 10GB ;;
*) echo ; echo 'Opção desconhecida, tente novamente' ; sleep 3 ; Quotas ;;
esac
}
1GB() {
setquota -u $prefixo 1048576 1048576 0 0 -a
}
2GB() {
setquota -u $prefixo 2097152 2097152 0 0 -a
}
5GB() {
setquota -u $prefixo 5242880 5242880 0 0 -a
}
10GB() {
setquota -u $prefixo 10485760 10485760 0 0 -a
}
Quotas
mkdir /var/log/apache2/$prefixo.$sufixo
chmod -R 775 /var/www/$prefixo.$sufixo
chown -R www-data:$prefixo /var/www/$prefixo.$sufixo
mkdir /etc/apache2/sites-available/$prefixo.$sufixo
ln -s /etc/apache2/sites-available/$prefixo.$sufixo /etc/apache2/sites-enabled/
mkdir /var/www/$prefixo.$sufixo/www
chmod -R 775 /var/www/$prefixo.$sufixo/www
chown -R www-data:$prefixo /var/www/$prefixo.$sufixo/www
echo "<VirtualHost *:80>" > /etc/apache2/sites-available/$prefixo.$sufixo/www.conf
echo "ServerName www.$prefixo.$sufixo" >> /etc/apache2/sites-available/$prefixo.$sufixo/www.conf
echo "DocumentRoot /var/www/$prefixo.$sufixo/www" >> /etc/apache2/sites-available/$prefixo.$sufixo/www.conf
echo "ErrorLog /var/log/apache2/$prefixo.$sufixo/www-error.log" >> /etc/apache2/sites-available/$prefixo.$sufixo/www.conf
echo "CustomLog /var/log/apache2/$prefixo.$sufixo/www-access.log combined" >> /etc/apache2/sites-available/$prefixo.$sufixo/www.conf
echo "</VirtualHost>" >> /etc/apache2/sites-available/$prefixo.$sufixo/www.conf
mkdir /var/www/$prefixo.$sufixo/redirecionamento
echo "<html><head><script language="JavaScript">document.location.href='http://www.$prefixo.$sufixo/'</script></head>" > /var/www/$prefixo.$sufixo/redirecionamento/index.html
chmod -R 775 /var/www/$prefixo.$sufixo/redirecionamento
chown -R www-data:$prefixo /var/www/$prefixo.$sufixo/redirecionamento
echo "<VirtualHost *:80>" > /etc/apache2/sites-available/$prefixo.$sufixo/redirecionamento.conf
echo "ServerName $prefixo.$sufixo" >> /etc/apache2/sites-available/$prefixo.$sufixo/redirecionamento.conf
echo "DocumentRoot /var/www/$prefixo.$sufixo/redirecionamento" >> /etc/apache2/sites-available/$prefixo.$sufixo/redirecionamento.conf
echo "ErrorLog /var/log/apache2/$prefixo.$sufixo/redirecionamento-error.log" >> /etc/apache2/sites-available/$prefixo.$sufixo/redirecionamento.conf
echo "CustomLog /var/log/apache2/$prefixo.$sufixo/redirecionamento-access.log combined" >> /etc/apache2/sites-available/$prefixo.$sufixo/redirecionamento.conf
echo "</VirtualHost>" >> /etc/apache2/sites-available/$prefixo.$sufixo/redirecionamento.conf
/etc/init.d/apache2 restart 2>&1 > /dev/null 2>&1
clear
echo "Domínio $prefixo.$sufixo adicionado com sucesso"
sleep 3
clear
Principal
}
Adicionar_Subdominio() {
clear
echo '####################################################'
echo '# Aqui você vai inserir o PREFIXO do domínio no #'
echo '# qual deseja ADICIONAR um SUB-DOMÍNIO. Por #'
echo '# exemplo: Se seu dominio for "linux.com.br", o #'
echo '# PREFIXO é "linux". #'
echo '####################################################'
echo
echo -n "Então, qual o PREFIXO do domínio no qual você pretende adicionar o SUB-DOMÍNIO? "
read prefixo
clear
echo '####################################################'
echo '# Agora você deve inserir o SUFIXO do domínio no #'
echo '# qual deseja ADICIONAR um SUB-DOMÍNIO. Por #'
echo '# exemplo: se seu domínio "linux.com.br", o SUFIXO #'
echo '# é "com.br". #'
echo '####################################################'
echo
echo -n "Então, qual o SUFIXO do domínio no qual você pretende adicionar o SUB-DOMÍNIO? "
read sufixo
clear
echo '####################################################'
echo '# Agora você deve inserir o PREFIXO DO SUBDOMÍNIO. #'
echo '# Por exemplo, se você deseja criar o sub-domínio #'
echo '# debian.linux.com.br, insira o PREFIXO "debian". #'
echo '####################################################'
echo
echo -n "Então, qual o PREFIXO do SUB-DOMÍNIO que deseja criar? "
read subdominio
VERIFICA=$(ls -l /etc/apache2/sites-available/ | grep ^d | cut -b42-80 | grep $prefixo.$sufixo)
if [ "$VERIFICA" = "$prefixo.$sufixo" ]
then
mkdir /var/www/$prefixo.$sufixo/$subdominio
chmod -R 775 /var/www/$prefixo.$sufixo/$subdominio
chown -R www-data:$prefixo /var/www/$prefixo.$sufixo/$subdominio
echo "<VirtualHost *:80>" > /etc/apache2/sites-available/$prefixo.$sufixo/$subdominio.conf
echo "ServerName $subdominio.$prefixo.$sufixo" >> /etc/apache2/sites-available/$prefixo.$sufixo/$subdominio.conf
echo "DocumentRoot /var/www/$prefixo.$sufixo/$subdominio" >> /etc/apache2/sites-available/$prefixo.$sufixo/$subdominio.conf
echo "ErrorLog /var/log/apache2/$prefixo.$sufixo/$subdominio-error.log" >> /etc/apache2/sites-available/$prefixo.$sufixo/$subdominio.conf
echo "CustomLog /var/log/apache2/$prefixo.$sufixo/$subdominio-access.log combined" >> /etc/apache2/sites-available/$prefixo.$sufixo/$subdominio.conf
echo "</VirtualHost>" >> /etc/apache2/sites-available/$prefixo.$sufixo/$subdominio.conf
/etc/init.d/apache2 restart 2>&1 > /dev/null 2>&1
clear
echo "Você criou com sucesso o sub-domínio $subdominio.$prefixo.$sufixo"
sleep 3
clear
Principal
else
clear
echo
echo "Não foi possível criar o sub-domínio desejado porque o domínio $prefixo.$sufixo não existe."
echo "Tente novamente, dessa vez com mais atenção!"
sleep 5
clear
Principal
fi
}
Remover_Dominio() {
clear
echo '####################################################'
echo '# Aqui você vai inserir o PREFIXO do domínio que #'
echo '# deseja REMOVER. Por exemplo: se seu dominio for #'
echo '# "linux.com.br", o PREFIXO é "linux". #'
echo '####################################################'
echo
echo -n "Então, qual o PREFIXO do domínio que deseja remover? "
read prefixo
clear
echo '####################################################'
echo '# Agora você deve inserir o SUFIXO do domínio que #'
echo '# deseja REMOVER. Por exemplo: se seu domínio for #'
echo '# "linux.com.br", o SUFIXO é "com.br". #'
echo '####################################################'
echo
echo -n "Então, qual o SUFIXO do domínio que deseja remover? "
read sufixo
VERIFICA=$(ls -l /etc/apache2/sites-available/ | grep ^d | cut -b42-80 | grep $prefixo.$sufixo)
if [ "$VERIFICA" = "$prefixo.$sufixo" ]
then
echo
echo "Removendo o domínio $prefixo.$sufixo, por favor aguarde..."
sleep 3
setquota -u $prefixo 0 0 0 0 -a
deluser $prefixo 2>&1 > /dev/null 2>&1
rm -rf /var/www/$prefixo.$sufixo
rm -rf /var/log/apache2/$prefixo.$sufixo
rm -rf /etc/apache2/sites-enabled/$prefixo.$sufixo
rm -rf /etc/apache2/sites-available/$prefixo.$sufixo
/etc/init.d/apache2 restart 2>&1 > /dev/null 2>&1
clear
echo "Domínio $prefixo.$sufixo removido com sucesso!"
sleep 3
clear
Principal
else
clear
echo
echo "O domínio que você tentou remover foi "$prefixo.$sufixo" e esse domínio não foi encontrado."
echo "Tente novamente, digitando corretamente o prefixo e o sufixo do domínio."
sleep 5
clear
Principal
fi
}
Remover_Subdominio() {
clear
echo '####################################################'
echo '# Aqui você vai inserir o NOME COMPLETO do domínio #'
echo '# no qual deseja REMOVER um SUB-DOMÍNIO. Por #'
echo '# exemplo: "linux.com.br". #'
echo '####################################################'
echo
echo -n "Então, qual o NOME COMPLETO do DOMÍNIO no qual deseja remover o SUB-DOMÍNIO? "
read dominio
clear
echo '####################################################'
echo '# Agora você deve inserir o PREFIXO DO SUBDOMÍNIO #'
echo '# que deseja remover. Por exemplo, se você deseja #'
echo '# remover o sub-domínio debian.linux.com.br, #'
echo '# insira o PREFIXO "debian". #'
echo '####################################################'
echo
echo -n "Então, qual o PREFIXO do SUB-DOMÍNIO que deseja remover? "
read subdominio
VERIFICA=$(ls -l /etc/apache2/sites-available/$dominio/ | grep $subdominio.conf | cut -b41-80)
if [ "$VERIFICA" = "$subdominio.conf" ]
then
echo
echo "Removendo o sub-domínio $subdominio.$dominio, por favor aguarde..."
sleep 3
rm -rf /var/www/$dominio/$subdominio
rm -rf /etc/apache2/sites-enabled/$dominio/$subdominio.conf
rm -rf /etc/apache2/sites-available/$dominio/$subdominio.conf
rm -rf /var/log/apache2/$dominio/$subdominio-*
/etc/init.d/apache2 restart 2>&1 > /dev/null 2>&1
clear
echo "O sub-domínio $subdominio.$dominio foi removido com sucesso!"
sleep 3
clear
Principal
else
clear
echo
echo "O Sub-domínio que você tentou remover foi "$subdominio.$dominio" e esse sub-domínio não foi encontrado."
echo "Tente novamente, digitando corretamente o domínio completo e o prefixo do sub-domínio."
sleep 5
clear
Principal
fi
}
Listar_Dominios(){
clear
echo '####################################################'
echo '# Esse é o resultado do comando abaixo: #'
echo '# $ sudo ls /etc/apache2/sites-available/ #'
echo '# Essa lista contém todos os domínios hospedados #'
echo '# nesse servidor. #'
echo '####################################################'
echo
ls -l /etc/apache2/sites-available/ | grep ^d | cut -b41-200
echo
Voltar(){
echo -n "Digite "1" para voltar e "2" para sair: "
read listar
case $listar in
1) opcao_1 ;;
2) opcao_2 ;;
esac
}
opcao_1() {
clear
Principal
}
opcao_2() {
exit
}
Voltar
}
clear
Principal
Isso é tudo galera, espero ter colaborado!
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!

Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l

Favorecido: Luiz Henrique Marques Fagundes





