1. UserDir vs. VirtualHost

    Durante a preparação de um ambiente de teste me deparei com duas opções, ativar o módulo UserDir do apache para acessar uma pasta do meu home usando um endereço como “http://localhost/\~usuario” ou setar um VirtualHost apontando para a pasta onde estava colocando o projeto.

    Usando UserDir:

    1
    2
    3
    cd /etc/apache2/mods-enabled
    sudo ln -s ../mods-available/userdir.conf userdir.conf
    sudo ln -s ../mods-available/userdir.load userdir.load
    

    Depois disso, reinicie o apache

    1
    sudo /etc/init.d/apache2 restart
    

    Por default, o userdir.conf aponta para a pasta “public_html” mas você pode alterar isso no userdir.conf (como eu já tinha uma pasta para os projetos, foi isso que eu fiz, para não precisar alterar as coisas)

    Uma observação, se for fazer uso de arquivos .htaccess, é interessante alterar a configuração do AllowOverride, se estiver com preguiça (como eu) permitir tudo pode resolver um erro 500. (que foi o erro que encontrei quando ativei o tema roots do wordpress nesse cenário).

    1
    AllowOverride All
    

    VirtualHost

    No caso de uso de VirtualHosts, é necessário criar um arquivo com o nome que você quiser dentro de /etc/apache2/sites-available/

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    <VirtualHost *>
         ServerName projetos.local
         DocumentRoot /home/daniloshiga/projetos
    
         <Directory /home/daniloshiga/projetos>
             DirectoryIndex index.php
             AllowOverride All
             Order allow,deny
             Allow from all
         </Directory>
    </VirtualHost>
    

    Com o arquivo criado, é necessário ativá-lo no apache (o que irá gerar uma cópia dele na pasta sites-enabled):

    1
    sudo a2ensite projetos.local
    

    E adicionar uma linha ao arquivo /etc/hosts para que ao acessar o endereço do virtual host, o linux saber que pra qual IP direcionar a requisição (no caso, localhost):

    127.0.0.1 projeto.local

    E finalmente, reiniciar o apache:

    1
    sudo /etc/init.d/apache2 restart
    

    é isso, no caso do VirtualHost também é possível criar um endereço específico para cada site em desenvolvimento, mas talvez seja algo que gere muito trabalho sem muitas vantagens, por enquanto estou utilizando a solução do UserDir.

    Fontes:

    How to Create Multiple Virtual Hosts in Ubuntu

    Por

    Em infra.

    tags: apache