Linux – lighttpd: can’t bind to port

Ao iniciar o webserver lighttpd fui surpreendido com a mensagem de erro abaixo:

“(network.c.358) can’t bind to port: :: 80 Address already in use”

Mensagem “chata” que surgiu ao subir o serviço, como possuía o Apache2 em execução a primeira tentativa foi mudar a porta de 80 para outra porta que já não estava em uso, no caso escolhi 81 e não obtive sucesso, analisando um pouco mais e verificando o arquivo de configuração, o problema era com o use-ipv6.

cleiton@vm1:/~ sudo vim /etc/lighttpd/lighttpd.conf
...
# include_shell "/usr/share/lighttpd/use-ipv6.pl"
...

Comente a linha referente ao uso do use-ipv6.pl, salve e saia do arquivo (:wq caso utilize vim ou vi como editor) e tente iniciar o serviço novamente e pronto!

cleiton@vm1:/~ sudo /etc/init.d/lighttpd restart

Verifique se iniciou corretamente com o comando lsof.

cleiton@vm1:/~ sudo lsof -i :81

No caso 81 é a porta que estou usando para ele e 80 para o Apache, algo deve ser exibido na saída no arquivo de log com algumas linhas com PID e informações do serviço rodando, caso não exibir nada provavelmente não iniciou o serviço.

Verifique se já não possui uma instancia em execução ou o processo atual ficou preso verificando /var/run e o diretório /var/lock com o nome do nosso webserver.
Recomendo neste caso dar uma olhada nos logs em /var/log/lighttpd/access e error.

Até a próxima!

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

Continue reading

Python – Resolver problema de acentuação

Bom, depois de um longo tempo sem postar, comentar, escrever nada sobre Python, vamos voltar a falar do dito cujo. Agora posso postar sobre o mesmo porque já adquiri uma boa bagagem do mesmo de vários scripts, programas criados e em produção.
Mas venho mostrar um problema que aleatóriamente me assombrou no começou e em boa parte dava para contornar mas quando “a água bateu na bunda” (meu pai diz isso), ae precisei resolver e não imaginava como era simples.
Você escreve uma aplicação que recebe dados de um usuario e grava em um banco de dados, no nosso caso nosso programa irá receber e imprimir na tela. Vamos la:
Beleza, você pode abrir um bloco de notas ou o IDLE(Python GUI) se for Windows e ir em File > New Window colocar o código acima e executar pressionado F5 ou Run > Run Module.

import sys

nome = raw_input("Digite seu nome: ")
email = raw_input("Digite seu e-mail: ")
cidade = raw_input("Digite sua cidade e estado (cidade/ESTADO): ")
telefone = raw_input("Informe seu telefone: ")
endereco = raw_input("Digite seu endereço: ")
bairro = raw_input("Digite seu bairro: ")
dist = raw_input("Digite o nome de sua Distribuição Linux favorita: ")

opcoes = [nome, email, cidade, telefone, endereco, bairro, dist]

for item in opcoes:
print "%s" % item

Continue reading

Arduino – Acender/Apagar mais de um Led [Parte 2]

Finalmente está ae o post continuação do Arduino Ethernet Shield – Acender/Apagar mais de um Led [Parte 1] que vimos como acender mais de um led, porém alguns leitores não ficaram satisfeito e com razão, pois na Parte 1 poderíamos acender vários Leds ou dispositivos remotamente porem um de cada vez e não simultaneamente, agora na Parte 2 veremos como acionar um, dois, três ou quantos dispositivos no nosso caso Leds tiverem configurados, a idéia, circuito é a mesma, o que mudou foi a lógica do código no Arduino com Ethernet Shield.

O esquemático:

É o mesmo do anterior como podemos ver.

O código:

É aqui que ocorre toda a mudança. A lógica toda esta na string “?led=100“, na Parte 1 esta lógica podeira ter 4 estados:

STRING DEFINIÇÃO SAIDA
?led=000 Todos os leds apagados (Led1=0, Led2=0, Led3=0)
?led=100 Apenas o led1 ligado (Led1=1, Led2=0, Led3=0)
?led=010 Apenas o led2 ligado (Led1=0, Led2=1, Led3=0)
?led=001 Apenas o led3 ligado (Led1=0, Led2=0, Led3=1)

Continue reading

Feliz 2013

Mas um ano se foi, e pra mim apesar de altos e baixo foi um excelente ano, experiências novas, amizades novas, tecnologias novas e só tenho que agradecer de onde estou e pra onde estou indo, em 2013 entro no meu ultimo ano de graduação de Eng. da Computação e estou muito ansioso e esperançoso quanto ao meu TCC, espero surpreender os professores hehe e meus seguidos do site.

Segue uma imagem que bolei que acho que envolve todas ou uma parte das tecnologias do meu dia-a-dia e tenho certeza que de vários leitores.

Feliz 2013

Continue reading

Arduino – Instalando e configurando um servidor web [Parte2]

Linux

Agora você irão ver como é complexa a instalação do Apache + PHP5 + MySQL Server no Linux, hehe. Brincadeiras a parte, não é porque sou usuário nato de Linux e uso isso todo santo dia mas, hoje qualquer aplicação web, banco de dados, compartilhamento de arquivos eu faria em Linux, com certeza irá ter bem menas dor de cabeça.
Bom então vamos preparar nosso laboratório web server Linux para nossos futuros trabalhos com Arduino. No caso estou usando uma Maquina Virtual com o Ubuntu 10.10 Maverick 64bits, tenha certeza que a internet esteja habilita na sua VM ou computador e vamos iniciar.
Antes de instalarmos os serviços vamos ver o que temos rodando nas portas do nosso Linux:

Linuxssconexoestcpall

Continue reading