Continando com os tutoriais para instalação e uso do LightTPD, vou mostrar agora como utilizar os módulos para User Directories e Virtual Hosts.
Para quem está acostumado com o Apache, o mod_userdir não se diferencia muito, simplesmente criando um Document Root na $HOME de cada usuário que pode ser acessado por http://hostname/~username. Já os Virtual Hosts tem uma sintaxe completamente diferente e, pelo meu ponto de vista (embora eu não tenha estudado os vhosts do Apache muito a fundo), bem mais flexível.
Habilitando o mod_userdir.
A instalação padrão do LightTPD no Debian (# aptitude install lighttpd) já vem com os principais módulos, incluindo o mod_userdir, e também cria um arquivo de configuração para este em /etc/lighttpd/conf-avaiable/. Assim, só o que precisamos é criar um link simbólico para /etc/lighttpd/conf-enabled/:
# cd /etc/lighttpd/conf-enabled/
# ln -s ../conf-available/10-userdir.conf .
Pronto! Após isso basta reiniciar o LightTPD (/etc/init.d/lighttpd restart) e acessar os diretórios de usuários com http://hostname/~username.
Usando condições para criar Virtual Hosts
Para criar Virtual Hosts no LightTPD podemos usar diversas maneiras. A primeira seria sequer utilizando um módulo adicional, mas apenas uma condição no lighttpd.conf, quando se deseja simplesmente criar um Virtual Host para um domínio específico acessando um Document Root alternativo, o que, inclusive, é o mais comum:
$HTTP["host"] == "news.example.org" {
server.document-root = "/var/www/servers/news2.example.org/pages/"
}
Aqui temos uma grande vantagem do LightTPD, que é a possibilidade de utilizarmos facilmente variáveis na configuração. A variável $HTTP[”host”] obtém o domínio atual que está sendo acessado no servidor e compara com a constante a seguir, se esta comparação for verdadeira, as definições dentro do bloco {} serão usadas. Os operadores de comparação que podem ser utilizados são:
==
igualdade de strings
!=
diferença de strings (NOT)
=~
expressão regular estilo perl (LIKE)
!~
diferença de expressão regular estilo perl (NOT LIKE)
No exemplo acima, quando o domínio acessado for news.example.org o Document Root usado será /var/www/servers/news2.example.org/pages/. Este seria o modo mais básico de utilizarmos diversos Document Roots, uma espécie de fake vhost.
Utitizando mod_simple_vhost
Outra maneira é utilizando o mod_simple_vhost, recomendado quando se quer agrupar os Document Roots sub um diretório específico. Para habilitar o módulo Simple VHosts, primeiramente cria um link simbólico para o arquivo de configuração, assim como fizemos com o mod_userdir:
# cd /etc/lighttpd/conf-enabled/
# ln -s ../conf-available/10-simple-vhost.conf .
Depois disso edite o arquivo *.conf.
O mod_simple_vhost utiliza três parâmetros:
- simple-vhost.server-root: O diretório “pai” onde serão colocados os Document Root. Em nosso exemplo usaremos /var/www.
- simple-vhost.document-root: O subdiretório que conterá os arquivos HTML, sendo o Document Root de cada VHost. Em nosso exemplo usaremos html/.
- simple-vhost.default-host: O Virtual Host padrão, utilizado quando não é enviado nenhum domínio (ao acessar o endereço IP do servidor, por exemplo.
## The document root of a virtual host isdocument-root =
## simple-vhost.server-root + $HTTP["host"] + simple-vhost.document-root
simple-vhost.server-root = "/var/www"
simple-vhost.document-root = "/html/"
## the default host if no host is sent
simple-vhost.default-host = "localhost"
O mod_simple_vhost procurará pelos doc_root usando o formato simple-vhost.server-root + domínio + simple-vhost.document-root. Assim, se o domínio acessado no servidor for example.org o Document Root utilizado será /var/www/example.org/html.
Utilizar o módulo Simple Virtual Hosts ou apenas condições vai depender de sua necessidade. Em geral, se for necessário apenas adicionarou um dois Document Roots alternativos utilizar condições pode ser mais simples, além de ser um módulo a menos para carregar no servidor (menos recursosnecessários), já no caso de um servidor que hospede diversos web sites de um mesmo proprietário, o módulo Simple Virtual Hosts poderá ser a melhor solução.
Porém, pode ser necessário, em alguns casos, utilizar-se diversos Virtual Hosts com Document Roots utilizando padrões diferentes, como VHosts específicos para usuários ou domínios, por exemplo. Para estes casos, podemos utilizar o módulo Enhanced Virtual-Hosting.
Utilizando mod_evhost
Diferente dos módulos anteriores, a instalação do Debian não cria um arquivo de configuração para o mod_evhost. Assim temos duas opções: Descomentar a linha que carrega o mod_evhost na seção server.modules() do arquivo /etc/lighttpd/lighttpd.conf e adicionar as configurações desejadas no final deste arquivo, ou criar um arquivo de configuração adicional.
Eu prefiro criar o arquivo adicional com luink simbólico, visto que fica mais fácil habilitar/desabilitara configuração rapidamente:
# touch /etc/lighttpd/conf-available/11-evhost.conf
# cd /etc/lighttpd/conf-enabled/
# ln -s ../conf-available/11-evhost.conf
Note que criei o arquivo com o nome 11-evhost.conf. O número (11) a esquerda do nome do arquivo é um modo de definir a ordem que os arquivos de configuração serão incluídos. Após cria-lo edite o arquivo com suas configurações desejadas, lembrando de colocar a seguinte linha para carregar o módulo EVhost:
server.modules += ("mod_evhost")
O mod_evhost contrói o Document Root baseado em um padrão contendo os caracteres curingas a seguir:
%% => Caractere '%'
%0 => Nome do domínio, com sufixo (.com, .org, ...)
%1 => Sufixo do dompinio (.com, .org, ...)
%2 => Nome do domínio sem sufixo
%3 => Primeiro subdomínio
%4 => Segundo subdomínio
Assim, utilizamos estes caracteres para configurar o Document Root, baseado no domínio acessado, adicionando o padrão ao parâmetro evhost.path-pattern.
evhost.path-pattern = "/var/www/%0/html/"
O exemplo acima, terá o mesmo efeito do nosso exemplo anterior utilizando o mod_simple_vhost.
Tanto o mod_simple_vhost como o mod_evhost podem ser utilizados em conjunto com condições, assim podemos criar um Virtual Host para cada usuário, acessando o diretório public_html dentro de sua $HOME como Document Root, por exemplo, ou seja, criando um vhost para cada userdir existente:
## load evhost module
server.modules += ("mod_evhost")
## enable per user public_html dir to be accessed by
## http://username.example.org
$HTTP["host"] =~ "\.example\.org" {
evhost.path-pattern = "/home/%3/public_html/"
}
Assim, quando alguém acessar http://samuraidio.example.org, o Document Root usado será /home/samuraidio/public_html.
Fonte: http://trac.lighttpd.net/trac/wiki/Docs
Se você gostou deste artigo, inscreva-se em meu RSS feed!
Últimos Comentários