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