Apache VirtualHosts Config
Publicado por João Artur (última atualização em 22/02/2017)
[ Hits: 1.895 ]
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.
<?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); } ?>
Monitoramento simples de servidores
PHP Script para testar ping de varios enderecoes em arquivo TXT
Script PHP para autenticacao web dos usuarios do proprio linux
Monitoramento simples de servidores
IA local no bolso, novo visual no Raspberry Pi OS e mais destaques do software livre
Kernel turbinado, compatibilidade em alta e debate sobre sustentabilidade: o dia no mundo Linux
Kernel turbinado e GNOME 49 dominam o giro do dia no mundo Linux
Novidades Linux: Kernel 6.17, distros em ebulição e segurança em foco
Kernel ganha novos linters Rust e distros avançam com recursos de IA
Adicionando o repositório backports no Debian 13 Trixie
Como definir um IP estático no Linux Debian
SAMBA parou de compartilhar [RESOLVIDO] (3)
Orientação para instalar o Warsaw - módulo de proteção do Banco do Bra... (8)
systemd-resol... precisa ser reiniciado periodicamente (5)
Alguém que utilize o Warsaw do BB no Ubuntu 24.04 [RESOLVIDO] (6)
Fedora não reconhece James Donkey 102 Wireless Gaming Mouse (2)