Como mapear um diretório local para um URL de host local usando o Apache?

1

Eu só quero colocar um site PHP simples em um diretório personalizado na minha máquina (digamos / home / znorg / foobar) e acessá-lo através do apache2 no Ubuntu por meio de algo como link

Desculpe se esta é uma pergunta repetida ou muito trivial, mas não consigo encontrar uma resposta direta sobre como fazer isso em qualquer lugar.

    
por Znorg 04.03.2017 / 23:22

2 respostas

1

Outra abordagem é: Mapeia URLs para locais do sistema de arquivos por meio da configuração do Apache. Para este efeito, você deve usar a diretiva Alias . A sintaxe é:

Alias [URL-path] file-path|directory-path

Por favor, note que mod_alias é necessário, mas vem com o Apache2 por padrão. Você pode verificar se está instalado através de:

sudo apache2ctl -M | grep alias

O alias pode ser usado para diretórios e arquivos. Também pode ser usado em ambos os níveis:

  • Nível de servidor (em /etc/apache2/apache2.conf ou em /etc/apache2/conf-avaliable/myAlias.conf ) - o alias estará disponível para cada Virtualhost ativo;
  • Nível de VHost (em /etc/apache2/sites-avaliable/someVH.conf ; entre <VirtualHost > tags) - o alias estará disponível apenas para o VirtualHost atual.
  

Observe que você pode precisar especificar mais <Directory> seções   que cobrem o destino dos aliases. O aliasing ocorre antes    <Directory> seções são verificadas, portanto, apenas o destino dos aliases   são afetados.

     

Em particular, se você estiver criando um Alias para um diretório fora do   seu DocumentRoot , talvez seja necessário permitir explicitamente o acesso ao   diretório de destino.

Aqui está uma lista de alguns prós e contras das duas abordagens: Alias e SymLinks. Também verifique isso comentário.


Exemplo 1: Alias no nível VHost

Vamos supor que você queira criar um Alias no nível do VirtualHost e o arquivo de configuração do VH seja /etc/apache2/sites-available/000-default.conf . Neste caso, o arquivo de configuração deve se parecer com isso:

<VirtualHost *:80>

    # other VirtualHost directives

    Alias /foobar /home/znorg/foobar
    <Directory /home/znorg/foobar>
        Require all granted
    </Directory>

</VirtualHost>

Não se esqueça de reiniciar (ou recarregar) o servidor:

sudo systemctl restart apache2.service


Exemplo 2: Alias no nível do servidor

Vamos supor que você queira criar um Alias no nível do servidor e não queira tocar em apache2.conf . Nesse caso, você precisa criar e ativar um arquivo de configuração adicional. No nosso exemplo, isso é foobarAlias.conf , que deve ser colocado no diretório /etc/apache2/conf-available/ .

Você pode criar este arquivo usando (use ctrl + o para salvar e ctrl + x para sair):

sudo nano /etc/apache2/conf-available/foobarAlias.conf

E seu conteúdo deve ser algo assim:

Alias /foobar /home/znorg/foobar
<Directory /home/znorg/foobar>
    Require all granted
</Directory>

Não se esqueça de ativar a nova configuração e reiniciar (ou recarregar) o servidor:

sudo a2enconf foobarAlias && sudo systemctl restart apache2.service
    
por pa4080 05.03.2017 / 12:49
1

Com base no comentário de @ George acima, isso é o que funcionou para mim:

1) Crie um link simbólico em /var/www/html para o diretório desejado:

sudo ln -s /home/znorg/foobar /var/www/html/foobar

2) Copie o arquivo de configuração do modelo:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/foobar.conf

3) Então, no foobar.conf, procure por uma linha como:

DocumentRoot /var/www/html

E substitua /var/www/html por /home/znorg/foobar

4) Ative a nova configuração:

sudo a2ensite foobar

5) Recarregue o servidor:

service apache2 reload

Espero que isso seja útil para outra pessoa.

    
por Znorg 05.03.2017 / 01:03