VirtualHost

De Wiki Projeto Root
Ir para navegação Ir para pesquisar

Sobre

Olá! Visitante, reunimos aqui, informações sobre a configuração de VirtualHost para webserver com o apache, esta configuração permite que apenas um único servidor web, armazene e disponibilize múltiplos sites para serem acessados, está é uma técnica bastante utilizada em Redes de Computadores e na administração de redes corporativas, uma vez que podemos disponibilizar através do mesmo servidor vários sistemas web,sites e intranet.

Modelo de VirtualHost

Requisitos

Instalação do LAMP em: (https://wiki.projetoroot.com.br/index.php?title=LAMP)

Vídeos

https://youtu.be/9LMSTJBbOq8

https://youtu.be/dC54uP9ZADs

Configurações

Ubuntu Server/Debian

criar Vhosts (joao) com o conteúdo do default

 cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/joao.conf

Modificar a home do joao

 nano /etc/apache2/sites-available/joao.conf
 ServerAlias joao.local

Habilitar o joao - a2ensite

 a2ensite joao.conf

Criar HTML de exemplo

<html>
 <a href=http://IP_Do_Server/html /a> Clique aqui para entrar em html
 <p>
 <a href=http://joao.local /a> Clique aqui para entrar em Joao
 <p>
 <a href=http://maria.local /a> Clique aqui para entrar em Maria
 <p>
 <a href=https://google.com.br /a> Clique aqui para pesquisar
 </html>

Desabilitar joao a2dissite

 a2dissite joao

Autenticação

 nano /etc/apache2/sites-available/default
 <Directory "/var/www/joao/html">
    Options FollowSymlinks Indexes
    AllowOverride AuthConfig 
    Order allow,deny
    Allow from all
 </Directory>


Criar .htaccess

 nano /var/www/joao/html/.htaccess
 AuthName "Insira seu Usuario e Senha:"
 AuthType Basic
 Require valid-user
 AuthUserFile /etc/apache2/joao/acesso

Criar Arquivo de autenticação

 touch /etc/apache2/joao/acesso

Alterar a permissão do arquivo

 chown apache:apache(www-data:www-data) /etc/apache2/joao/acesso
 

Criar usuário para autenticação

 htpasswd -c /etc/apache2/joao/acesso usuario


Alteração das portas padrões

  • Editar o arquivo de conf (VirtualHost) que deseja alterar a porta e deixar como o exemplo:
 Listen XX
 
 <VirtualHost *:XX>
  • XX representa a porta que deseja (exemplo: 81,82,8080,etc..)


CentOS

  • Criando estrutura de Vhosts
 mkdir -p /var/www/dominio/html /var/www/dominio/log
  • Criando página de exemplo
 nano /var/www/dominio/html/index.html
  <html>
   <head>
     <title>Página do Joao!</title>
   </head>
   <body>
   <h1>Successo! O site joao.local está funcionando com vhost!</h1>
    </body>
 </html>
  • Criando local para armazenar as configs de vhosts
 mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
  • Ajustando conf do http para carregar vhost
 nano /etc/httpd/conf/httpd.conf
 IncludeOptional sites-enabled/*.conf
  • Criando conf de vhost para dominio
 nano /etc/httpd/sites-available/joao.conf
 <VirtualHost *:80>
     ServerName joao.local
     ServerAlias joao.local
     DocumentRoot /var/www/joao/html
     ErrorLog /var/www/joao/log/error.log
     CustomLog /var/www/joao/log/requests.log combined
 </VirtualHost>


  • Criando link simbólicos para ativar o vhost
 ln -s /etc/httpd/sites-available/joao.conf /etc/httpd/sites-enabled/joao.conf
  • Para remover vhost
 rm -rf /etc/httpd/sites-enabled/joao.conf

SELinux

  • Definir uma política universal para o Apache
 setsebool -P httpd_unified 1
  • Verificar Contexto do SELinux na pasta
 ls -dZ /var/www/joao/log/

Saída: unconfined_u:object_r:httpd_log_t:s0 /var/www/joao/log/

  • Ajustar contexto para armazenar os logs
 semanage fcontext -a -t httpd_log_t "/var/www/joao/log(/.*)?"
 restorecon -R -v /var/www/joao/log
  • Verificar Contexto do SELinux na pasta
 ls -dZ /var/www/joao/log/

Saída: unconfined_u:object_r:httpd_log_t:s0 /var/www/joao/log/

  • Reiniciando o serviço httpd
 systemctl restart httpd
  • Verificar se o apache (httpd) criou arquivos de log
 ls -lZ /var/www/joao/log/
 -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0  584 out  1 16:55 error.log
 -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 1742 out  1 16:56 requests.log

Alterar Portas

  • Liberar no Fw
 firewall-cmd --zone=public --permanent --add-port 81/tcp
 firewall-cmd --reload
  • Editar Configuração do Apache (HTTPD)
 nano /etc/httpd/conf/httpd.conf
 Listen IP:PORTA


  • SELinux

Listar Portas liberadas

 semanage port -l

Liberar porta 81 (exemplo)

 semanage port -a -t http_port_t -p tcp 81

Redirect

  • Em alguns casos precisamos fazer o redirecionamento, então para estes casos podemos utilizar o exemplo abaixo.
 <VirtualHost *:80>
 ServerName admin.seusite.com
 RedirectPermanent / http://seusite.com/wp-admin
 </VirtualHost>