Como criar subdomínios em um virtualhost baseado em nome?

26

Eu tenho hospedagem baseada em nome, vamos chamá-lo de my.address.com . Meu amigo tem o endereço 'simples' address.com e me deu uma máquina virtual que eu posso acessar via SSH.

Ele também fez um pouco de mágica com as portas e agora, depois de instalar o Apache, eu consegui acessar /var/www a my.address.com .

Então, a pergunta é: como posso criar um subdomínio como test.my.address.com ?

Deve haver alguma mágica com Apache's Listen Directive , mas eu não consigo descobrir. Além disso, sei criar sites disponíveis no local com o Apache, mas não é o mesmo.

    
por scythargon 29.07.2012 / 13:46

1 resposta

32

Para criar subdomínios, você precisa ter certeza de várias coisas:

DNS

Para que os outros alcancem test.my.address.com , primeiro eles precisam resolver esse nome para o endereço IP da sua máquina virtual. Como isso pode ser feito?

O que seu amigo provavelmente já fez, foi criar um registro a address.com zone, que aponta my para o endereço IP da sua VM.

Até agora, tudo bem. Mas e quanto a test.my ? Pode não ter uma entrada ainda.

Seu amigo poderia simplesmente adicionar *.my à zona (e apontar para o mesmo endereço IP). Então todo pedido para something.my.address.com seria enviado para sua VM. Ótimo!

Hosts virtuais do Apache

Quando sua VM puder ser acessada, o Apache precisa saber como lidar com a solicitação. É aqui que usamos o recurso Hosts Virtuais do servidor HTTP Apache.

Eu geralmente corro no Debian, então vou explicar isso com um exemplo de configuração em /etc/apache2/sites-available . Vamos ter um arquivo chamado test.my.address.com e preenchê-lo com informações.

<VirtualHost *:80>
        ServerName test.my.address.com
        ServerAdmin [email protected]

        DocumentRoot /var/www/test.my.address.com/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/test.my.address.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/test.my.address.com.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/test.my.address.com.access.log combined
</VirtualHost>

A definição de chave dentro deste ficheiro é a ServerName directiva . Isso informa ao Apache sob qual nome este servidor deve estar disponível. Nomes adicionais podem ser dados com a diretiva ServerAlias .

Caso você esteja usando o Debian também, não esqueça de sudo a2ensite test.my.address.com depois de criar o arquivo e sudo invoke-rc.d apache2 restart .

    
por 29.07.2012 / 14:12