Post Atualizado: 11/02/2013
Quando se fala em servidor web, o que vem na cabeça da maioria é Apache, é claro! Eu durante bom tempo agi assim, e outra é prático, no linux via terminal você instala em poucos minutos, mas e quando o requisito é desempenho e custo de hardware?
Agora estou desenvolvendo uma aplicação médio porte para um ARM11 com 512 de memória RAM e ae? Por experiências próprias e cobaias já vi que o apache2 em foco, ele adora consumir hardware.
Eu sei e já usei as diversas otimizações em cima do Apache2 e funcionam, la na empresa ta excelente e você limita e trava várias configurações, mas navegando e testando um que me chamou atenção foi o lighttpd.
Muito bom, avaliando seu desempenho com um numero médio/alta de requisições, ele se comporta muito bem com o hardware, mas vamos ao que interessa, vamos instalar.
No caso estou usando o Ubuntu 12.04 LTS 64bits para o artigo.
A versão do repositório do Ubuntu é 1.4.28 já no site do lighttpd esta na 1.4.32 até ae não me importei tanto, até ver a data que 1.4.28 é de 08/2010 já a 1.4.32 é 11/2012 eu diria que para testes e intuito de aprendizado instale pelo repositório, já para produção recomendo instalar fazendo download do site e compilando o fonte, vamos fazer os dois.
Primeiro baixe o arquivo compactado da versão 1.4.32 sendo a ultima versão estavel até o momento que estou escrevendo este post 11/02/2013.
Via Código-fonte:
root@vm1:# cd /usr/src root@vm1:/usr/src# wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.32.tar.gz
Vamos descompactar:
root@vm1:/usr/src# tar -xvzf lighttpd-1.4.32.tar.gz
Agora vamos acessar o diretório que foi criado e dar uma olhada no que temos lá:
root@vm1:/usr/src# cd lighttpd-1.4.32 root@vm1:/usr/src/lighttpd-1.4.32# ls
Não vou por todos arquivos pois maioria é referências e links para compilar e instalar, mas sempre que foi instalar desta maneira atente nos arquivos README e INSTALL, no README normalmente vai ser várias informações da versão, correções e o que me chamou a atenção foi alguns recursos novos em cima de DDOS e correção para enjaular o lighttpd que já tinha ouvido várias reclamações, já o INSTALL seria um guia do que você deve fazer para instalar, e foi o que segui.
Também tem um install-sh mas nem olhei este hehe.
O que o arquivo INSTALL diz pra fazer é:
(*) Descompactar
(*) Acessar o diretorio
(*) digitar ./configure
(*) digitar make
(*) digitar make install
(*) digitar exit
Os dois primeiros já foram vamos para os demais:
root@vm1:/usr/src/lighttpd-1.4.32# ./configure
Porém instalando na vm de um parceiro que era Ubuntu 12 LTS, mas que ele tinha acabado de levantar a vm, algumas exceções surgiram no configure, para resolver tivemos que instalar umas dependências:
root@vm1:/usr/src/lighttpd-1.4.32# apt-get update & apt-get install build-essential
Apenas esta para compilação não resolveu, ae verificando o wiki do lighttpd é fornecida a seguinte listagem de libraries:
root@vm1:/usr/src/lighttpd-1.4.32# apt-get install libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libfam-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev pkg-config uuid-dev libsqlite3-dev libxml2-dev libkrb5-dev
Ae sim, configure sem nenhum erro. Continuando …
root@vm1:/usr/src/lighttpd-1.4.32# make
Aqui ocorreu tudo bem, tanto na minha vm quanto na nova do meu parceiro. Continuando …
root@vm1:/usr/src/lighttpd-1.4.32# make install
Se você chegou até aqui e nada mais deu errado, o pior já passou hehe. Vamos copiar o script de inicialização e arquivo de configuração, executando os comandos abaixo:
root@vm1:/usr/src/lighttpd-1.4.32# sed -e 's/FOO/lighttpd/g' doc/initscripts/rc.lighttpd > /etc/init.d/lighttpd root@vm1:/usr/src/lighttpd-1.4.32# chmod a+rx /etc/init.d/lighttpd root@vm1:/usr/src/lighttpd-1.4.32# cp -p doc/initscripts/sysconfig.lighttpd /etc/sysconfig/lighttpd root@vm1:/usr/src/lighttpd-1.4.32# mkdir -p /etc/lighttpd root@vm1:/usr/src/lighttpd-1.4.32# cp -R doc/config/conf.d/ doc/config/*.conf doc/config/vhosts.d/ /etc/lighttpd/ root@vm1:/usr/src/lighttpd-1.4.32# update-rc.d lighttpd defaults
Você quase tem o lighttpd rodando, acalme-se falta pouco.
E é nesta parte que perdi algumas horinhas, já que é uma versão recente e com pouco material na internet sobre instalação e configuração.
O lighttpd já esta instalado e se digitar
root@vm1:/usr/src/lighttpd-1.4.32# lighttpd -vv lighttpd/1.4.32 - a light and fast webserver Build-Date: Jan28 2013 21:12:19
Porem se for iniciar com /etc/init.d/lighttpd start, você irá se deparar com várias exceções na tela. Eu perdi um tempinho mais escrevi um script novo segue abaixo.
root@vm1:/usr/src/lighttpd-1.4.32# vi /etc/init.d/lighttpd ############################################################# # Script adaptador para funcionar no Ubuntu/Debian # # # # Autor: Cleiton Bueno # # Data: 11/02/2013 # # # # Script testado no Ubuntu 12.04 LTS # # Debian 6 # ############################################################# #!/bin/bash LIGHTTPD_BIN=/usr/local/bin/lighttpd test -x $LIGHTTPD_BIN || exit 5 LIGHTTPD_CONFIG=/etc/lighttpd/lighttpd.conf test -r $LIGHTTPD_CONF || exit 6 case "$1" in start) echo -n "Iniciando lighttpd" $LIGHTTPD_BIN -f $LIGHTTPD_CONFIG echo "n" ;; stop) echo -n "Parando lighttpd" killall -s TERM $LIGHTTPD_BIN echo "n" ;; restart) $0 stop $0 start ;; status) echo -n "Verificando servicos lighttpd:" echo -n "Veja se algum servico e listado abaixo" ps -A | grep lighttpd echo "n" ;; *) echo "Use: $0 {start|stop|restart|status}" exit 1 ;; esac
Agora vamos adicionar o conteúdo abaixo ao lighttpd.conf, esse foi o config padrão que estou usando e foi testado no meu parceiro.
root@vm1:/usr/src/lighttpd-1.4.32# cp -p /etc/lighttpd/lighttpd.conf lighttpd.conf.default root@vm1:/usr/src/lighttpd-1.4.32# vim /etc/lighttpd/lighttpd.conf ######################################## # Conf basico para lighttpd # ######################################## var.log_root = "/var/log/lighttpd" var.server_root = "/srv/www" var.state_dir = "/var/run" var.home_dir = "/var/lib/lighttpd" var.conf_dir = "/etc/lighttpd" var.vhosts_dir = server_root + "/vhosts" var.cache_dir = "/var/cache/lighttpd" var.socket_dir = home_dir + "/sockets" include "modules.conf" server.port = 80 server.username = "www-data" server.groupname = "www-data" server.pid-file = state_dir + "/lighttpd.pid" server.errorlog = log_root + "/error.log" include "conf.d/access_log.conf" include "conf.d/debug.conf" server.network-backed = "linux-sendfile" server.stat-cache-engine = "simple" index-file.names += ( "index.xhtml", "index.html", "index.htm", "default.htm", "index.php" ) url.access-deny = ( "~", ".inc" ) $HTTP["url"] =~ ".pdf$" { server.range-requests = "disable" } static-file.exclude-extensions = ( ".fcgi", ".scgi" ) include "conf.d/mime.conf" include "conf.d/dirlisting.conf" server.follow-symlink = "enable" server.upload-dirs = ( "/var/tmp" ) server.document-root = server_root + "htdocs"
O que você pode alterar para melhor atender é a opção var.server_root e server.document-root, no meu caso deixeu como /var/local/ e server_root + “www”, server.port outra opção importante saber pois é a porta que o lighttpd irá trabalhar, no caso deixei 81, já que tenho o apache2 rodando na 80 no mais pode deixar assim que não irá ter problemas.
Agora para testarmos nosso servidor web, acesse /var/local/www/ esse é o que usei, e usando o seu editor de texto via terminal favorito vamos criar um arquivo index.html, como abaixo:
root@vm1:/var/local/www# vim index.html
<html> <body> <center><h1>SERVIDOR LIGHTTPD 1.4.32 FUNCIONANDO!</h1></center> </body> </html>
Caso esteja usando vim ou vi como eu, para salvar e sair pressione ESC e digite :wq
Caso utilizar a porta 80 não tem mais nenhuma observação, proposital usei a porta 81, como tenho o apache2 rodando também então para acessar devo colocar o IP donde esta rodando o lighttpd no meu caso é 192.168.0.120, e em seguida :81 e a pagina é acessada.
Via Repositório:
Agora o jeito mais full power complexo monstrão hehe.
Se você não liga de instalar a versão do repositório que já é velhinha, abra o terminal e digite:
root@vm1:# apt-get update && apt-get install lighttpd
Automaticamente e sem trabalho algum é criado um script em /etc/init.d/lighttpd (caso estiver usando Debian, Ubuntu ou derivados), e o arquivo de configuração /etc/lighttpd/lighttpd.conf já com uma configuração funcional default.
Como podemos notar é muito mais prático e simples instalar via repositório porem não é a versão mais atual e com correção de problemas.
Você pode editar o /etc/lighttpd/lighttpd.conf e mudar o caminho do diretório e a porta como no passo anterior, restart o serviço, crie o arquivo index.html no diretorio que definiu e acesse via web, e irá obter o mesmo resultado.
Espero ter ajudado e até a próxima!
Linux – Instalação lighttpd 1.4.32 by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.