04.07  
Inicio arrow Artigos arrow Instalando Lighttpd com PHP, MySQL, Virtual hosting, WebDAV, Autenticação e Userdir
Principal
Inicio
Noticias
Artigos
Regras da Lista
Assinar a Lista
Histórico da Lista
PC-BSD: Artigos
PC-BSD: Notícias
Galeria de Imagens
Contador Usuários FUG
FUGs Estaduais
Downloads
Enquetes
FAQ
Resumo do Site
Links
Pesquisar
Contato
Sobre a FUG-BR
RSS / Twitter
-
DOC-BR (FUG BR)
Introdução
Projeto DOC-BR
Handbook
FAQ Oficial
-
+ Noticias
Alertas de Seguranca
Alertas em Ports
BSD em Geral
DaemonNews (Ingles)
MyFreeBSD
Todas Categorias
-
Login
Nome de Usuário

Senha

Lembrar login
Esqueceu sua senha?
Sem conta? Crie uma
Histórico da Lista
  • [FUG-BR] Samba 3.3.3 + FreeBSD 7.2 + Windonws
  • Re: [FUG-BR] Líder em Alta disponibilidade
  • [FUG-BR] postfixadmin com problema
  • Re: [FUG-BR] postfixadmin com problema
  • [FUG-BR] Squid autenticando no AD.
  • [FUG-BR] RES: Squid autenticando no AD.
  • Re: [FUG-BR] RES: Squid autenticando no AD.
  • Re: [FUG-BR] RES: Squid autenticando no AD.

  • Alertas em Ports
  • nfsen -- remote command execution
  • nagios -- Command Injection Vulnerability
  • phpmyadmin -- XSS vulnerability



  • Instalando Lighttpd com PHP, MySQL, Virtual hosting, WebDAV, Autenticação e Userdir PDF Imprimir E-mail
    Por Daniel Bristot de Oliveira   
    20/06/2006
    ImageO lighttpd é um servidor web leve, rápido, seguro e flexível que tem seu desenvolvimento voltado para ambientes de alta performance.

    Uma de suas qualidades é o baixo consumo de memória; além disso, benchmarks mostram que ele possui um rendimento superior a vários outros servidores.


    Por quê utilizá-lo?

    • Ele é compatível com sistemas Unix como os BSD, Linux, SGI IRIX, além de sistemas Windows com o CygWin.
    • Consome poucos recursos.
    • Ótimo desempenho frente a outros servidores.
    • Interface de configuração limpa e clara, facilitando administração.
    • Suporte a PHP e MySQL.
    • É livre, seguro e estável.

    Características

    Algumas características:

    • Virtual Host
    • Listagem virtual de diretórios
    • Re-escrita de URL, redirecionamento HTTP
    • Suporte a arquivos grandes
    • Compressão de arquivos de saída com chace transparente (redução gzip, bzip2)
    • Autenticação (basic, digest)
    • backends: plain , htpasswd, htdigest, ldap
    • Downloads rápidos e seguros
    • Server Side Includes
    • Identificação de usuários
    • FastCGI, CGI, SSI

    PHP-Support:

    • Desempenho igual ou superior ao apache + mod_php4
    • Suporte a múltiplos processos do PHP via interface FastCGI e CGI
    • suporte a "Code Caches" como Turckmm, APC e eaccelarator
    • FastCGI com Balanceamento de carga (Um servidor web distribuindo cagar para vários servidores PHP)

    Instalando

    O lighttpd pode ser instalado via ports: a localização do lighttpd no ports é /usr/ports/www/lighttpd. Entre o no diretório e execute o comando make install

    # cd /usr/ports/www/lighttpd
    # make install

    Após isto irá aparecer a seguinte tela no terminal.

    Tela de configuração do ports lighttpd

    Nela é possível escolher algumas opções de compilação para o lighttpd. Neste caso desabilitarei todas as opções.

    OBS: O MySQL deste menu não se refere a ligação do MySQL com o PHP.

    Após isto a instalação deverá terminar sem mais perguntas.


    Configuração do Sistema Operacional

    O arquivo de inicialização do lighttpd fica em /usr/local/etc/rc.d/lighttpd.sh; para ativar a inicialização do lighttpd como sistema operacional basta adicionar lighttpd_enable="YES" ao /etc/rc.conf.

    Provavelmente na primeira inicialização irão acontecer alguns erros, já que na instalação o diretório base onde ficarão as páginas e os arquivos de log não foram criados. Para eliminar esses problemas, crie os seguintes diretórios e arquivos:

    # mkdir /usr/local/www/data/
    # touch /var/log/lighttpd.access.log
    # touch /var/log/lighttpd.error.log
    # chown www /var/log/lighttpd.access.log
    # chown www /var/log/lighttpd.error.log

    Agora o lighttpd irá iniciar normalmente.

    Para testar crie um arquivo como o nome index.html em /usr/local/www/data/ e acesse via browser a sua máquina; se a página aparecer, obviamente, tudo ocorreu bem.


    Configuração Básica do Lighttpd

    O arquivo de configuração do lighttpd fica em /usr/local/etc/lighttpd.conf, e somente o usuário root pode editá-lo.

    O arquivo de configuração no início parece ser um pouco complicado, porém com o tempo ele se torna simples e fácil de trabalhar. As linhas que iniciam com o caractere "#" são conseideradas comentários.

    As atribuições de valores a diretivas são feitas da seguinte forma:

    Para uma diretiva mono valorada: diretiva = "valor" Ex:

    server.document-root = "/usr/local/www/data/"

    Para diretivas multi valoradas: diretiva = ("valor 1", "valor 2")

    OBS: são aceitas quebras de linha entre valores, como no exemplo abaixo.

    Ex:

    index-file.names = ( "index.php", "index.html",
    "index.htm", "default.htm" )

    Vamos observar algumas das diretivas mais importantes do lighttpd.conf:

    Diretiva server.modules:
    Esta diretiva define os módulos que estão ativos durante a execução do lighttpd. Esta diretiva contém uma série de linhas comentadas; para habilitar algum módulo basta descomentar a linha referente ao mesmo. Lembre-se de habilitar apenas os módulos que você irá utilizar.

    Diretiva server.document-root.
    Define o caminho para o diretório inicial, que por padrão é /usr/local/www/data/. Altere-o como quiser. Uma boa dica é /var/www/HOSTNAME, onde HOSTNAME é o nome do seu domínio.

    Diretiva server.errorlog
    Define o arquivo de log de erros.

    Diretiva accesslog.filename
    Define o arquivo de log de acesso.

    Diretiva index-file.names
    Define o nome dos arquivos de index que o servidor deve procurar. A ordem em que eles estão dispostos influencia na escolha.

    Diretiva server.username
    Define o UID que o servidor irá executar.

    Diretiva server.groupname
    Define o GID que o servidor irá executar.


    Integrando com o PHP e MySQL

    A integração do PHP e MySQL é feita através do FastCGI, apenas uma coisa que deve-se ter em mente, é que o MySQL não está ligado ao servidor Web mas sim ao PHP. Primeiramente iremos instalar o PHP, Partimos do pre-suposto que você já tem o MySQL instalado, caso não tenha, siga o exemplo de instalação do MySQL a partir do meu tutorial do Postfix.


    Instalando o PHP

    O PHP será instalado via ports, para isto entre no diretório /usr/ports/lang/phpX, onde X é a versão do php, atualmente 4 ou 5, e execute o seguinte comando.

    # make config

    Aparecerá a seguinte tela.

    php_cgi.jpg

    Habilite as mesmas opções e instale o PHP com o seguinte comando.
    # make install

    O PHP está instalado. agora vamos integrar com o MySQL

    Um módulo do php irá fazer a ligação entre o MySQL e o PHP, ele está disponível no ports. Para instalar execute os seguintes comandos.

    # cd /usr/ports/databases/phpX-mysql # (onde X é a versão do PHP)
    # make install

    Configurando o lighttpd com o PHP

    Na diretiva server.modules, descomente a linha referente ao "mod_fastcgi". e adicione as linhas abaixo em algum lugar no arquivo de configuração.

    fastcgi.server             = ( ".php" =>
    ( "localhost" =>
    (
    "socket" => "/tmp/php-fastcgi.socket",
    "bin-path" => "/usr/local/bin/php",
    "min-procs" => 3,
    "max-procs" => 5,
    "idle-timeout" => 20,
    "max-load-per-proc" => 10,
    )
    )
    )

    Onde:

    socket é onde ficará os sockets de comunicação entre o lighttpd e o PHP.
    bin-path é onde está localizado o executável do PHP.
    min-procs Número mínimo de processos do PHP que ficarão esperando trabalho.
    max-procs Número máximo de processos do PHP que ficarão esperando trabalho.
    idle-timeout Tempo que um processo do PHP ficará vivo sem trabalho, após este tempo ele morre
    max-load-per-proc média de carga máxima em um processo antes de um novo processo ser lançado.

    As opções referentes ao número de processos tem uma grande influência no desempenho do servidor, faça testes e ache os melhores valores par a seu sistema. Se sob muita carga seu servidor acusar erro "500 internal server error" aumente o número de processos do PHP.

    Para testar se tudo está certo, crie um arquivo chamo info.php, no document-root de se servidor, com o seguinte conteúdo

    <?php
    phpinfo();
    ?>

    Caso abrir a página de informações do PHP tudo deu certo.


    Configurando Userdir

    Habilite o módulo mod_userdir descomentando a sua linha na diretiva server.modules, e insira as seguintes linhas no arquivo de configuração.

    userdir.path = "public_html"
    userdir.basepath = "/home/"

    O caminho do diretório do usuário é formado por: "userdir.basepath"/"Usuário"/"userdir.path". Para o usuário daniel, o caminho de seu diretório seria /home/danie/public_html.


    Virtual Host

    Virtual host é um meio de um servidor web ser capaz de servir páginas para diversos domínios.

    O lighttpd ofereçe três modulos para habilitar esta característica. mod_evhost, mod_mysql_vhost e mod_simple_vhost. Neste artigo trataremos a utilização do modulo mod_simple_vhost.

    Este é o método mais simples para a criação de hosts virtuais, ele exige a configuração de apenas três diretivas. simple-vhost.server-root

    Caminho para o diretório raiz de cada host virtual.

    simple-vhost.default-host

    O host virtual padrão

    simple-vhost.document-root

    Diretório que contém a página inicial sobre o diretório do host virtual

    O caminho para o diretório raiz do servidor virtual é formado por:

    simple-vhost.server-root + Hostname + document-root

    Exemplo:

    simple-vhost.server-root = "/var/www/"
    simple-vhost.default-host = "www.examplo.org"
    simple-vhost.document-root = "pages"

    O caminho para o index do host vitual dominio.net seria:

    /var/www/dominio.net/pages/

    Para a ativação de um domínio virtual, basta o diretório formado pelas diretivas existir.

    Caso o caminho do dominio solicitado não exister, o endereço definido em simple-vhost.default-host será exibido, neste caso www.examplo.org.


    Uso de condicionais

    Em alguns casos o caminho pode não ser o obtido apartir das configurações do módulo simple-vhost. Esta situação pode ser resolvilda com a utilização de condicionais, como no caso abaixo, quando solicitado o dominio dbristot.info o conteúdo do deiretório /var/www/userdir/daniel será exibido.

    $HTTP["host"] == "dbristot.info" {
    server.document-root = "/var/www/userdir/daniel"
    }

    Isto é útil para fazer alias de hosts virtuais. Como por exemplo, para que dominio.net e www.dominio.net obtenham o mesmo caminho.

    $HTTP["host"] == "www.dominio.net" {
    server.document-root = "/var/www/dominio.net/pages/"
    }

    WebDAV

    O webDAV é um método para troca de arquivos via protocolo HTTP1.1

    Para habilitar o módulo do WebDAV basta adicionar mod_webdav na lista de móbulos.

    Existem duas diretívas de configuração para o WebDAV.

    webdav.activate

    Habilita ou desabilita o WebDAV para um diretório.
    Padrão: disable (desabilitado)

    webdav.is-readonly

    Acesso somente leitura
    Padrão: writable (gravável)

    Exemplo: Para habilitar o WebDAV como somete-leitura para os diretórios que tenham o nome 'dav'.

    $HTTP["url"] =~ "^/dav($|/)" {
    webdav.activate = "enable"
    webdav.is-readonly = "enable"
    }

    Autenticação

    O módulo mod_auth é responsável pela autenticação no Lighttpd.

    O lighttpd suporta os dois métodos de autenticação definidos na RFC 2617:

    basic

    O mérodo basic transfere o nome de usuário e senha em texto puro pela rede, apenas os codifica em base64.

    digest

    O método digest envia apenas uma valor md5; assim tornando-o mais seguro que o basic.

    Dependendo do método o lighttpd oferece diferentes meios para armazenamento de senhas.

    Para o método basic:

    plain
    Armazena as senhas em formato texto puro
    htpasswd
    Armazena as senhas em formato md5, porém nescessita do htpasswd, disponivel no Apache
    htdigest
    Armazena as senhas em formato md5, nescessita apenas de um script.
    ldap
    Utiliza base de dados Ldap

    Para o métodoor digest:

    plain
    htdigest

    Aquí utilizaremos o método digest com htdigest para armazenamento de senhas.


    Gerando base de dados de usuário

    Será necessário o script abaixo para a criação do arquivo de senha.

    #!/bin/sh
    user=$1
    realm=$2
    pass=$3

    hash=`echo -n "$user:$realm:$pass" | md5 | cut -b -32`

    echo "$user:$realm:$hash"

    Salve o script com o nome htdigest.sh. Para utiliza-lo entre com os parametros Usuário Descrição Senha e desvie a saída para o arquivo de senha, como abaixo:

    # ./htdigest.sh usuario Local senha >> /usr/local/etc/htdigest

    Verificando...
    # cat /usr/local/etc/htdigest
    daniel:Download:3a99e549592d6163659b6b0e5d0a8b0f
    usuario:Local:6b063763659086818e455206bcc95e7e

    Configurando o lighttpd para autenticação

    Descomente a linha referente ao módulo "mod_auth".

    Diretívas de configuração: auth.debug

    Define o mode debug. 0 para desativo, 1 para log de usuário, e 2 para debug. default=0

    auth.backend

    Define o método de altenticação.

    auth.backend.<MÉTODO DE ALTENTICAÇÃO>.userfile

    Define o caminho para o arquivo de senhas. Altere o <MÉTODO DE ALTENTICAÇÃO> pelo método utilizado, por exemplo htdigest.

    Para a autenticação ter efeito precisamos de

    auth.require               = ( <lado esquedo da url> =>
    (
    "method" => "digest"/"basic",
    "realm" => <realm>,
    "require" => "usuário=<username>|valid-user"
    )
    )
    Por exemplo:
    auth.debug = 0
    auth.backend = "htdigest"
    auth.backend.htdigest.userfile = "/usr/local/etc/htdigest"

    auth.require = ( "/dav" =>
    (
    "method" => "digest",
    "realm" => "Pasta da Web",
    "require" => "valid-user"
    ),
    )

    Atenção com o abrir e feixar de chaves, as veses isto causa erros estranhos.


    Comentários
    Excelente contribuicao Daniel
    Por xffa em 20/06/2006 17:35:58
    Muito bom, este e um servidor que merece mesmo ser conhecido, pois muitas vezes substitui, com vantagems, outros web servers.
    Excelente
    Por Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo em 20/06/2006 20:05:09
    Achei esta como alternativa do Apache, MUITO interessante. Andei fazendo alguns testes com Guilherme Rosário, e achamos muito simples, leve, e totalmente customizável, realmente, vale a pena dá uma olhada. O artigo então, está espetacular. 
     
    Valeu :)
    Obrigado
    Por Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo em 20/06/2006 20:49:20
    Muito Obrigado pelos comentários. Isto motiva a criar mais artigos.
    Por Este endereço de e-mail está sendo protegido de spam, você precisa de Javascript habilitado para vê-lo em 24/06/2006 14:12:59
    Parabéns pelo artigo, está muito bem escrito!  
    Abraço!
    Servidor de Imagens
    Por Paulo Acosta em 13/07/2006 17:49:23
    Já usou alguma vez o tHTTPd !? qual acha mais leve para servir apenas imagens !?


    Comente!*
    Nome:
    E-mail
    Homepage
    Título:
    Comentário:

    Código:* Code

    Última Atualização ( 25/08/2006 )
     
    < Anterior   Próximo >
    FUG-BR - Espalhando BSD
    Dicas Rápidas:

    Após sincronizar o Ports, para atualizar seu INDEX de aplicações se você tiver portupgrade instalado, digite:

    portsdb -Uu 

    Se não tiver portupgrade:

    cd /usr/ports/
    make fetchindex

     






    Wallpapers
    Sua Opiniao
    Online:
    Nós temos 20 visitantes online


    Devil Store - Sua loja BSD
    FreeBSD Brasil LTDA

    FUG-BR: Desde 1999, espalhando BSD pelo Brasil.