Linux – Instalação lighttpd 1.4.32

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.

TestandoLighttpdWeb

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!

Share Button

CC BY-NC-SA 4.0 Linux – Instalação lighttpd 1.4.32 by Cleiton Bueno is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.