Apache VirtualHosts Config

Publicado por João Artur (última atualização em 22/02/2017)

[ Hits: 1.661 ]

Download apache-vh.php




Muitas pessoas tem dificuldade de configurar virtualhosts (mais de um site no mesmo servidor) em seu Apache. Desenvolvi esse script com a finalidade de facilitar todo esse processo.

Foi testado apenas no Ubuntu 16.04, e só funcionará em sistemas baseados em Debian e Ubuntu.

  



Esconder código-fonte

<?php
   error_reporting(0);

   $sistema = PHP_OS;
   $id      = posix_getuid();

   function configurar($nomedoservidor,$dominio,$ssl) {
      if (file_exists("/etc/apache2") == true) {
         if (file_exists("/etc/apache2/sites-available/".$nomedoservidor.".conf")) {
            $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Erro:
  --> Existe outro servidor com o mesmo nome
";
            print($conteudo);
         } else {
            $status   = "";
            $etchosts = file_get_contents("/etc/hosts");
            $host     = "127.0.0.1   ".$dominio;
            $config   = "<VirtualHost *:80>
   ServerAdmin webmaster@localhost
    ServerName ".$nomedoservidor."
    ServerAlias ".$dominio."
   DocumentRoot /var/www/".$nomedoservidor."/public_html

   ErrorLog /var/www/".$nomedoservidor."/error.log
   CustomLog /var/www/".$nomedoservidor."/access.log combined
</VirtualHost>
";

            if (file_put_contents("/etc/apache2/sites-available/".$nomedoservidor.".conf", $config)) {
               $status .= "  --> Arquivo \e[1m/etc/apache2/sites-available/".$nomedoservidor.".conf\e[0m criado\n";
            } else {
               $status .= "  --> Erro ao criar o arquivo \e[1m/etc/apache2/sites-available/".$nomedoservidor.".conf\e[0m\n";
            }

            if (file_put_contents("/etc/apache2/sites-enabled/".$nomedoservidor.".conf", $config)) {
               $status .= "  --> Arquivo \e[1m/etc/apache2/sites-enabled/".$nomedoservidor.".conf\e[0m criado\n";
            } else {
               $status .= "  --> Erro ao criar o arquivo \e[1m/etc/apache2/sites-enabled/".$nomedoservidor.".conf\e[0m\n";
            }

            if (mkdir("/var/www/".$nomedoservidor)) {
               $status .= "  --> Pasta \e[1m/var/www/".$nomedoservidor."\e[0m criada\n";
            } else {
               $status .= "  --> Erro ao criar a pasta \e[1m/var/www/".$nomedoservidor."\e[0m\n";
            }

            if (mkdir("/var/www/".$nomedoservidor."/public_html")) {
               $status .= "  --> Pasta \e[1m/var/www/".$nomedoservidor."/public_html\e[0m criada\n";
            } else {
               $status .= "  --> Erro ao criar a pasta \e[1m/var/www/".$nomedoservidor."/public_html\e[0m\n";
            }

            if (file_put_contents("/etc/hosts", $etchosts."\n".$host)) {
               $status .= "  --> Arquivo \e[1m/etc/hosts\e[0m atualizado\n";
            } else {
               $status .= "  --> Erro ao atualizar o arquivo \e[1m/etc/hosts\e[0m\n";
            }

            shell_exec("service apache2 restart");
            $status .= "  --> Servidor \e[1mApache\e[0m reiniciado\n";

            $index = "<center>O domínio ".$dominio." foi ativado<br><br>Apache VirtualHosts Config by João Artur (K3N1)</center>";
            if (file_put_contents("/var/www/".$nomedoservidor."/public_html/index.html", $index)) {
               $status .= "  --> Arquivo \e[1mindex.html\e[0m criado\n";
            } else {
               $status .= "  --> Erro ao criar o arquivo \e[1mindex.html\e[0m\n";
            }

            $status .= "  --> Configuração de certificado SSL em breve\n";

            $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Status:
".$status."
";
            print($conteudo);
         }
      } else {
         $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Erro:
  --> Diretório \e[1m/etc/apache2\e[0m não encontrado
";
         print($conteudo);
      }
   }
   if ($sistema == "Linux" && $id == 0) {
      system("clear");
      $argc = $argc - 1;
      switch ($argc) {
         case '3':
            $nomedoservidor = strtolower(str_replace(array(",",".",";","-"," "), "", $argv[1]));
            $dominio = (strpos($argv[2],'.')) ? strtolower(str_replace(array("http://","https://"), "", $argv[2])) : "no";
            $ssl = strtoupper($argv[3]);
            $ssl = ($ssl == "S" || $ssl == "N") ? $ssl : "no";
            if ($dominio == "no") {
               $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Erro:
  --> Domínio inválido
";
               print($conteudo);
            } else {
               if ($ssl == "no") {
                  $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Erro:
  --> Para a configuração do SSL é aceito apenas S/N
";
                  print($conteudo);
               } else {
                  if ($ssl != "no" && $dominio != "no") {
                     configurar($nomedoservidor,$dominio,$ssl);
                  } else {
                     $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Erro:
  --> Erro inesperado.
";
                     print($conteudo);
                  }
               }
            }
            break;
         default:
            $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Uso:
  --> php ".$argv[0]." NomeDoServidor Domínio SSL
Exemplo:
  --> php ".$argv[0]." kenihacking kenihacking.com s

NomeDoServidor: nome do servidor
Domínio: domínio do site
SSL: auto-configurar certificado SSL (S/N)
";
            print($conteudo);
            break;
      }
   } else {
      $erros = "";
      if ($sistema != "Linux") {
         $erros .= "  --> Sistema operacional deve ser Linux\n";
      }
      if ($id != 0) {
         $erros .= "  --> Script deve ser executado como Root";
      }
      $conteudo = "\e[31m\e[1m   _                 _         __   ___     _             _ _  _        _      
  /_\  _ __  __ _ __| |_  ___  \ \ / (_)_ _| |_ _  _ __ _| | || |___ __| |_ ___
 / _ \| '_ \/ _` / _| ' \/ -_)  \ V /| | '_|  _| || / _` | | __ / _ (_-<  _(_-<
/_/ \_\ .__/\__,_\__|_||_\___|   \_/ |_|_|  \__|\_,_\__,_|_|_||_\___/__/\__/__/
      |_|                                                                      
           ___           __ _      
          / __|___ _ _  / _(_)__ _ 
         | (__/ _ \ ' \|  _| / _` |
          \___\___/_||_|_| |_\__, |
                             |___/       By João Artur (K3N1)
\e[0m

Erro:
".$erros."
";
      print($conteudo);
   }
?>

Scripts recomendados

Verifica porta aberta por faixa de ip's

Exibir IP do cliente

PHPsysInfo 2.1

Firewall Admin 0.2b

Monitoramento simples de servidores


  

Comentários
[1] Comentário enviado por karvox em 22/02/2017 - 13:07h

Excelente!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts