Pesquisa personalizada

terça-feira, 6 de janeiro de 2009

Como instalar um Servidor Web na sua casa

Introdução
Primeiramente, a pergunta que não quer calar para alguns: O que é um Servidor Web?!?
Bom, para não copiar a Wikipedia (ou em inglês), um Servidor Web é um programa que roda no seu computador e que permite que outros computadores acessem páginas da internet que estão no seu computador. Em outras palavras, toda e qualquer página que você acesse está hospedada em um Servidor Web.
Então primeiramente, escolhemos um Servidor Web. Existem vários, e os sistemas operacionais costumam já trazer servidores embutidos (IIS para o Windows, Apache para o Linux). Para uma lista de servidores, veja esta página. Nesse guia, vou explicar como configurar o Apache 2 no Windows Se você está usando Windows e estiver se sentindo corajoso, pode tentar instalar o IIS (procure IIS na ajuda do Windows XP Pro). Não é tão difícil de fazê-lo rodar, mas é bem complicado de instalar o PHP nele, e não achei ele tão bom, mas para um servidor simples, é uma opção.
Instalando o Apache
Ok, então, primeiro, fazemos download do Apache. Nesta página, um site mais próximo de você será selecionado automaticamente. No tópico contendo a versão mais nova, entre em Other files para ir para a lista de arquivos que você pode baixar. Se você está usando Windows e não está familiarizado com coisas como compilar e "linkar" programas, você vai querer os Binaries, que são os arquivos já compilados e com o instalador. Procure a pasta Win32, e, dentro dela o arquivo apache_2.0.XX-win32-x86-no_ssl.msi, que é o arquivo de instalação (troque o XX pelo número da versão mais nova). No momento que eu escrevo este post, pegando o site da Uol, o arquivo é apache_2.0.55-win32-x86-no_ssl.msi.

Você pode se perguntar, porque o no_ssl no nome do arquivo? SSL é a tecnologia base das páginas que se acessa com o https no começo (como sites de bancos, por exemplo). Essas páginas são criptografadas antes de serem mandadas para o usuário, e as informações que o usuário manda também são criptografadas. As distribuições compiladas com ssl não são liberadas por que em vários países uso de "criptografia forte" é proibida, pois é considerada como possível artefato militar, e também porque isso dificulta muito a vida da censura e das agências de informação (sim, a criptografia é realmente forte). No fim do post há um link para se instalar o módulo de criptografia sem ter que compilar uma distribuição (dificuldade média-alta).
Voltando dessa digressão, você já deve ter acabado de baixar o arquivo. Duplo-clique e cá estamos no nosso instalador bem conhecido dos usuários Windows. Depois de alguns Next sem muita emoção, você chega a uma aba perguntando coisas. Ela pergunta: Network Domain, Server Name, Administrator's Email Address e qual porta instalar. Se você não é um controlador de domínio (ou nem sabe o que raios é isso) coloque localhost nos dois primeiros campos. Se você sabe o que isso quer dizer e pode fazer as alterações na sua rede para colocar um domínio apontando para o seu computador, coloque nesses dois campos os endereços. Se você colocou localhost, mais pra frente vamos mudar essas configurações para que outros possam acessar o seu servidor.

No campo do endereço de e-mail do administrador você não precisa colocar um e-mail de verdade. Este endereço será mostrado a todos quando for exibida alguma página de erro, e isso quer dizer que você vai, cedo ou tarde receber muito spam no endereço mostrado aqui. Use o campo como achar mais conveniente.
As duas opções abaixo são um pouco mais úteis nesse momento, elas determinam para nós, principalmente como seu servidor será iniciado: a primeira (que diz Port 80) faz com que seu servidor seja iniciado junto com o Windows, além de fazê-lo atender a conexões nesta porta. A segunda (Port 8080) faz com que você tenha que iniciar seu servidor manualmente quando quiser. Eu recomendo a primeira, a não ser que seu computador seja uma lesma sem memória RAM. Neste caso eu recomendo que você atualize seu computador e escolha a primeira opção também.
Na próxima etapa, o programa faz aquela velha pergunta: Instalação Típica ou Avançada. Se você não pretende compilar novos módulos para seu Apache, escolha a Típica, se prentede, escolha Custom e selecione todos os itens da lista. Aqui você também pode não instalar a documentação do Apache, mas eu não recomendo isso, pois ela é bem pequena e prática.
O próximo Next te leva a uma tela que pergunta em qual diretório instalar o Apache e o Next desta tela começa a instalação. Uma vez pronta, voilà! Seu servidor está instalado. Entre no browser mais próximo e digite http://localhost/. Uma página feliz, em português, deve aparecer dizendo que tudo funcionou! Você já pode sair colocando páginas no diretório htdocs da instalação do seu Apache, que elas já vão aparecer no browser quando você digitar o endereço.
Ótimo, se não fosse por um probleminha: do jeito que está, só o seu computador pode ver o seu site. Isso acontece por duas coisas:
As pessoas costumam não saber o endereço das outras na internet (o famoso IP)
Muitos provedores bloqueiam as portas relacionadas com servidores web (a porta 80 e a 8080)
Para corrigir o primeiro problema, vamos criar um endereço DNS para nós em um serviço gratuito (próxima seção). Para corrigir o segundo, vamos fazer o Apache "escutar" outras portas (última seção).
DNS para um IP dinâmico
Qual o endereço do nosso servidor? Se você se lembra, nós colocamos na instalação do Apache localhost. Você deve estar pensando: "Eu sabia que devia ter colocado outra coisa!". Calma, antes de começar a pensar coisas más a meu respeito, leia minha explicação.
Todo computador na internet tem um endereço de IP, que é um número como 200.161.144.111. Mas quando você tem uma conexão discada, ou um Speedy (Virtua e Ajato eu não tenho certeza), cada vez que você se conecta seu IP muda. Então como fazer? Você não vai ficar mandando e-mail pros outros toda vez que se conectar para avisar que seu endereço mudou, né?
Servidores de sites têm IPs fixos, e pagam por isso (um Speedy Business custa mais ou menos o dobro do primo de IP dinâmico da mesma velocidade). Mas existe uma solução. Há alguns serviços de redirecionamento de IP na web. Um deles, é o No-IP. Eles oferecem vários serviços, como redirecionamento de e-mails, monitoramento de sites, mas o que nós queremos é "DNS Redirection". Você terá que se registrar. Clique em Sign-Up, preencha os dados (coloque seu email de verdade aqui), ative a inscrição pelo o e-mail de confirmação que você vai receber e entre no painel de configurações do serviço (Your No-IP).
Aqui você pode adicionar um redirecionamento para o seu site: Escolha Add, no item Hosts/Redirects do menu da esquerda. Escolha um nome para o seu site (something catchy) e coloque-o no campo Host Name. Escolha algo fácil de se lembrar como "seuendereco". Escolha um dos finais de DNS que eles propoem. Eu peguei "no-ip.info" e meu endereço ficou seuendereco.no-ip.info. O campo IP Address já contém seu IP atual. Os outros campos da página não precisam ser preenchidos. Eles existem para quando você tem mais de um endereço ou pra quando você tem um servidor de e-mail na sua casa.Clicando no Create Host você reserva um endereço pra você.
Se você tem IP fixo, pronto, seu endereço DNS já aponta para sua casa. Mas se você não tem, vá na seção Downloads do site do No-IP e baixe o No-IP DUC. A instalação é simples e vai te pedir seu email e senha do No-IP. Ele vai pegar as configurações que você colocou no site, e toda vez que seu IP mudar, ele vai mandar uma notificação pros servidores do No-IP para que mudem o redirecionamento do seu endereço. Lembre-se, isso pode demorar alguns minutos. Aqui nunca demorou mais que 5 minuntos depois de se desconectar.
Agora vamos configurar o Apache para atender a este servidor. Para isto, abra o Arquivo de configurações do Apache: httpd.conf. Ele se encontra na pasta conf, dentro da pasta de instalação do Apache. Você deve ir se acostumando a configurar coisas através de arquivos de texto se você quer ir além deste tutorial: a partir daqui os programas começam a ficar menos amigáveis. Observe que na pasta conf você tem um arquivo httpd.default.conf também. Por enquanto ele é uma cópia do arquivo que você vai editar, para poder recuperar caso algo ruim aconteça. Ter uma cópia já pronta é raro, não confie nisso e sempre faça um backup de qualquer arquivo de configuração que você for mexer a mão.
Entre no arquivo. Não tenha medo, ele é bem simples de se entender. Linhas começadas com # são comentários, normalmente elas estão aí para ajudar. Leia os avisos do começo. Você provavelmente não vai saber do que tratam muitas coisas desse arquivo (eu não sei, pelo menos). Eu aprendi a mexer nele grande parte por tentativa e erro. De qualquer forma você não pode quebrar muita coisa mexendo nesse arquivo, só o seu próprio servidor. Se você mantiver um backup de uma configuração que funciona sempre, não deve haver problema. Algumas opções podem abrir uma brecha de segurança no seu sistema, mas geralmente elas estão indicadas. As alterações que você faz no arquivo só são válidas depois que você reinicia o servidor. Para fazer isso, use a ferramenta que fica do lado do relógio e que se chama Apache Monitor, ou um item do menu iniciar que foi colocado quando você instalou o Apache.
Nós vamos direto à linha que diz: ServerName, substitua aqui o localhost:80 pelo seu endereço do No-IP (aquele que parece com seuendereco.no-ip.info), seguido de :80. Salve o arquivo e reinicie o Apache.
Dependendo do seu provedor, você conseguiu instalar seu servidor! Peça para um amigo testar digitando no browser dele o seu endereço. Se ele ver sua página principal, pronto! Se não, seu provedor pode estar bloqueando a porta 80 do seu computador.
Mudando de Porta
Último passo para quem tem um servidor chato como o meu. Portas são parte do endereço do seu computador que cada programa pode chamar ou escutar. Pense nelas como ramais de um PABX. Seu browser normalmente pede para se conectar na porta 80 dos servidores, pois esta é a porta padrão de Servidores Web. Como a sua parece estar sendo bloqueada (como a minha por causa do Speedy), você terá que fazer seu servidor escutar por outra porta. Para isto vamos novamente ao arquivo httpd.conf.
Estamos agora procurando por uma linha que diz Listen 80. Obviamente ela diz para o Apache que você quer que ele "escute" a porta 80. Não é preciso retirar esta linha, o Apache pode ouvir diversas portas. Adicione uma linha logo após esta com Listen 4000, por exemplo. 4000 é um número que eu sei que funciona com o Speedy. Eu sei que a porta 8080 também está bloqueada.

Agora seu endereço para as pessoas de fora ficou algo como seuendereco:4000. O ":4000" especifica a porta que seu browser vai usar para fazer a conexão. Não é tão bonito, mas resolve (trocadilho infame pra que entende algo de DNS).
Finalmente! Seu servidor deve estar funcionando para todos! Peça a um amigo que teste seu site de outro computador na internet. Caso ele ainda não esteja funcionando, tente desativar seu firewall por um segundo e peça que seu amigo teste seu site de novo. Se resolver, seu firewall deve estar bloqueando aquela porta também. Configure-o para que ele fique na dele e ça-y-est!
Mais informações:

Manual do Apache: http://seuservidor/manual - O Apache vem configurado para deixar o manual dele online pra quando você precisar.
Como instalar o módulo de Servidor Seguro (SSL) do Apache: http://tud.at/programm/apache-ssl-win32-howto.php3