Pesquisa de site

Criando hosts virtuais Apache com opções de ativação/desativação de Vhosts no RHEL/CentOS 7.0


Hospedagem Virtual permite que o Apache Weberver sirva diferentes conteúdos com base no endereço IP, nome do host ou número da porta usada. Este guia usará uma abordagem semelhante ao Debian para habilitar e gerenciar Hosts Virtuais no Red Hat Enterprise Linux/CentOS 7.0 criando dois diretórios no caminho /etc/httpd/, que irá manter todas as configurações de arquivos do site ativadas e desativadas – sites disponíveis e sites-enabled, e dois tipos de scripts para atuar como comandos, um que ativa e outro que desativa o virtual especificado hosts – a2ensite e a2dissite. Esta abordagem tem algumas vantagens porque você precisa mexer no arquivo de configuração httpd e cada host virtual tem seu próprio arquivo de configuração que pode ser encontrado em um único local – hosts habilitados são apenas links simbólicos – o que torna o processo de habilitar, desabilitar, criar ou excluí-los é muito gerenciável.

Requisitos

  1. Instalação básica do LAMP no RHEL/CentOS 7.0

Crie e gerencie hosts virtuais Apache no RHEL/CentOS 7

1. Para começar, comece digitando o caminho /etc/httpd/, crie diretórios disponíveis para sites e habilitados para sites e edite o Apache httpd.conf para aplicar a nova localização de sites habilitados.

cd /etc/httpd/
mkdir sites-available sites-enabled
nano conf/httpd.conf

2. No arquivo httpd.conf adicione a seguinte linha de diretiva na parte inferior do arquivo, o que fará com que o Apache leia e analise todos os arquivos localizados em /etc/ httpd/sites-enabled/ terminou na extensão .conf.

IncludeOptional sites-enabled/*.conf

3. Na próxima etapa, crie um novo Host Virtual no local sites disponíveis usando um nome descritivo – neste caso usei rheltest.lan.conf – e use o arquivo a seguir como modelo.

nano /etc/httpd/sites-available/rheltest.lan.conf

Use esta configuração como guia.

<VirtualHost *:80>
        ServerName rheltest.lan
        DocumentRoot "/var/www/rheltest.lan"
                <Directory "/var/www/rheltest.lan">
                Options Indexes FollowSymLinks MultiViews
         # AllowOverride controls what directives may be placed in .htaccess files.      
                        AllowOverride All
        # Controls who can get stuff from this server file
                        Order allow,deny
                        Allow from all
           </Directory>
        <IfModule mpm_peruser_module>
                ServerEnvironment apache apache
        </IfModule>
        ErrorLog  /var/log/httpd/rheltest.lan-error.log
        CustomLog /var/log/httpd/rheltest.lan-access.log combined
</VirtualHost>

4. Se você alterou a localização de DocumentRoot em seu host virtual do padrão /var/www/html para outro caminho, certifique-se de criar também este caminho .

mkdir -p /var/www/rheltest.lan

NOTA: Certifique-se também de que o host ServerName seja um registro DNS válido ou seja adicionado ao arquivo de hosts da sua máquina local, de onde você planeja visitar o site.

5. Agora é hora de criar scripts bash a2ensite e a2dissite em um caminho de sistema executável – neste caso é /usr/local /bin/ – mas
você pode usar qualquer caminho executável gerado pela variável de sistema ` PATH.

Criar script a2ensite

Crie um arquivo a seguir com o editor de sua escolha.

nano /usr/local/bin/a2ensite

Adicione o seguinte script a ele.

#!/bin/bash
if test -d /etc/httpd/sites-available && test -d /etc/httpd/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/httpd/sites-available
mkdir /etc/httpd/sites-enabled
fi

avail=/etc/httpd/sites-available/$1.conf
enabled=/etc/httpd/sites-enabled/
site=`ls /etc/httpd/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: a2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else

echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi
if test -e $enabled/$1.conf; then

echo "Success!! Now restart Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi

Crie um script a2dissite

Crie um arquivo a seguir com o editor de sua escolha.

nano /usr/local/bin/a2dissite

Adicione todo o script a seguir ao arquivo.

#!/bin/bash
avail=/etc/httpd/sites-enabled/$1.conf
enabled=/etc/httpd/sites-enabled
site=`ls /etc/httpd/sites-enabled/`

if [ "$#" != "1" ]; then
                echo "Use script: a2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Apache: sudo systemctl restart httpd"
exit 0
fi
fi

6. Após a criação de ambos os arquivos de script, verifique se eles são executáveis e comece a usá-los para ativar ou desativar hosts virtuais anexando o nome do vhost como parâmetro de comando.

chmod +x /usr/local/bin/a2*
a2ensite vhost_name
a2disite vhost_name

7. Para testá-lo, habilite o host virtual criado anteriormente, reinicie o serviço Apache e direcione o navegador para o novo host virtual – neste caso http://rheltest.lan.

a2ensite rheltest.lan
systemctl restart httpd

É isso! Agora você pode usar os scripts bash a2eniste e a2dissite como comandos do sistema para gerenciar o arquivo Apache Vhosts no RHEL/CentOS 7.0.