Como configurar um servidor web dedicado

Todos os grandes websites possuem um grande servidor por trás. Nesse artigo, será mostrado como configurar um servidor web dedicado (com Apache, MySQL, e PHP) usando uma máquina velha que está encostada em um canto de sua casa e alguns softwares livres.

1. Visão Geral

Nesse artigo, queremos alcanças vários objetivos:

  • Iremos instalar o sistema operacional Ubuntu Server. Esse sistema é usado com frequência por ser fácil de usar e administrar. Também possui uma comunidade grande e bastante ativa, o que torna a obtenção de suporte mais fácil.
  • Iremos instalar um servidor OpenSSH Isso permitirá a administração do servidor de computadores remotos.
  • Um conjunto LAMP (Linux, Apache, MySQL, e PHP) será instalado. Isso fornecerá a espinha dorsal que irá executar seu website. O Apache é o servidor web padrão de mercado em sistemas operacionais baseados no Unix e é o que usaremos.
  • Iremos instalar um firewall para proteger seu servidor de acessos não autorizados.

Para poder seguir os passos descritos nesse artigo, serão necessários os seguintes itens:

  • Um computador para ser usado como servidor. Não precisa ser muito poderoso, desde que não seja demasiadamente antigo. Não utilize o seu PC de trabalho; o Ubuntu irá apagar completamento seu computador.
  • Um gravador de CD e um CD em branco. Com esses itens você gravará o Ubuntu em um disco para poder instala-lo no computador..
  • Tempo. Sério, o processo consome tempo, especialmente quando surgem problemas a serem resolvidos. Tente separar uma tarde para seguir os procedimentos descritos aqui.

Você pode estar se perguntando por que ter seu próprio servidor. Existem várias razões, algumas delas sendo: pode ter sua própria zona de testes para seus websites; com poucas modificações, pode hospedar seu próprio site; e poderá aprender muito sobre Linux/Unix. Dito isso, vamos começar!

2. Baixar o Ubuntu Server

Em primeiro lugar, precisamos de um CD com o Ubuntu. Acesse pelo seu navegador o endereço http://www.ubuntu.com/, e clique em Download no menu à esquerda. Você será apresentado a uma caixa com duas abas: “Desktop Edition” e “Server Edition”. Clique em  “Server Edition”, e selecione “Ubuntu 8.04 LTS” ou a versão mais recente que aparecer. Em seguida, selecione um local na caixa de listagem. Finalmente, clique no botão “Begin Download”.

 
Agora você precisa gravar a imagem ISO (o arquivo que acabou de baixar) em um CD em branco. Se não souber fazer isso, existe um excelente guia em https://help.ubuntu.com/community/BurningIsoHowto

3. Instalação do Ubuntu Server

Após baixar e gravar o ISO em um CD, vamos instalar o Ubuntu no servidor. Coloque o disco no drive, e faça boot a partir do CD. Na maioria dos computadores modernos, isso acontecerá por padrão se houver um disco no drive quando você liga a máquina. Se não acontecer, você precisa pressionar uma tecla quando você liga o computador. Em alguns computadores, essa tecla é F2. Isso depende de seu computador. Você pode descobrir essa informação olhando no texto que aparece na tela quando o computador é ligado, durante a BIOS. Você verá algo como “Press [KEY] to change boot order”. Pressione esa tecla e selecione o drive do CD.
Agora que efetuou boot com o ubuntu, deve visualizar a seguinte tela:

Selecione o seu idioma e pressione Enter. Você verá a seguinte tela:

Selecione “Install Ubuntu Server”, e a instalação irá começar. O Instalador irá perguntar agora se você quer detectar o layout do teclado. Pessoalmente, eu prefiro escolher não, porque é mais rápido selecionar um teclado padrão americano na lista do que deixar o instalador detecta-lo. Selecione qualquer uma das opções, apenas seguindo as instruções selecionadas. Após fazer isso, você verá várias telas de carregamento informando coisas como “Detecting CD-ROM drives” dentre outras. Essas telas devem passar rapidamente e sem problemas. Porém, durante essas telas, o instalador irá tentar auto-configurar as suas configurações de rede. Na maioria dos casos, isso funcionará sem problemas. Porém, se não funcionar com você, apenas siga as instruções na tela para fazer funcionar. Depois que tudo isso for feito, será pedido a você um nome para o host. Você pode informar qualquer nome para ele.

O sistema pedirá a você para informa o fuso horário de seu relógio. Escolhe a opção que mais se aplica ao seu caso. Agora, o sistema irá detectar mais hardware, e você será solicitado a “particionar o disco”. Selecione “Guided – use entire disk”.

Você agora precisa selecionar o disco que quer particionar. Na maioria das instalações, apenas um disco estará disponível; porém, em sistemas mais especializados, mais opções estarão disponíveis aqui. Escolha a opção que seja adequada ao seu caso.

Será perguntado se você quer salvar as alterações no disco. Selecione “Yes” e pressione Enter. O instalador agorá executará a formatação do disco e configurará as partições. Agora a mágica acontece: o sistema irá começar a instalação. Enquanto isso acontece, vá tomar um café. Isso pode levar de 10 minutos a 1 hora, dependendo de seu sistema. Pode acontecer de parecer que  está travado; não se preocupe, não está. Apenas deixe a instalação prosseguir. Porém, se ficar preso em algum item por mais de uma hora, então sim, está travado.

Agora que o sistema foi instalado, é preciso configurar a conta que você usará para efetuar login no sistema. Primeiro, forneça seu nome completo e selecione “Continue”.

Agora insira um nome de usuário. Normalmente se informa apenas o primeiro nome, mas isso pode variar. Um nome que você não pode usar é “root”.

Será pedido que você forneça uma senha. É ESSENCIAL escolher uma senha forte, ou o seu servidor não estará seguro. É recomendável AO MENOS usar um mistura de números e letras minusculas e maiúsculas. Para melhorar ainda mais a segurança, você pode usar símbolos, assim com uma mistura de tudo acima. NÃO USE uma senha com menos de 7 caracteres.

Em seguida, re-informe a senha para garantir que você digitou corretamente. O sistema irá agora tentar configurar o “Package Manager” (falaremos dele brevemente). Forneça a informação do proxy, ou deixe em branco se não usar um, e selecione “Continue”.

O sistema irá buscar em vários servidores por atualizações e ajustes de configuração.

Depois que esse passo for concluído, será apresentado a você várias opções de software para servidor que podem ser instaladas. Nesse momento, preste muita atenção. Selecione OpenSSH e pressione a barra de espaço, NÃO Enter. Se você pressionar Enter, o instalador irá prosseguir sem instalar o servidor OpenSSH. Você também pode instalar o “LAMP Server”, mas aqui nesse artigo seguiremos uma caminho diferente.

O sistema irá instalar o software selecionado por você, assim como outros componentes de sistema necessários.

Finalmente a instalação será finalizada. Remova o CD e pressione Enter. O computador irá reiniciar. Se tudo correr bem, você verá uma tela que deve ser similar a seguinte:

Parabéns! você acabou de finalizar a parte mais difícil. O ubuntu está instalado agora, e é hora de transformar esse computador em um servidor web.

4. Atualize seu novo servidor

Antes de seguir em frente, precisamos nos certificar de que o servidor esteja atualizado. Para fazer isso, você precisa efetuar login. Primeiro, digite o nome de usuário (que foi escolhido antes) e pressione Enter. Em seguida, digite a sua senha. A medida que digita a senha, perceberá que nada parece estar acontecendo. Não se preocupe, essa é forma que o sistema foi projetado para funcionar. Depois de digitar a senha, pressione Enter, e sua tela deve se aprecer com a seguinte se tudo correr bem:

Agora digite:

sudo aptitude update && sudo aptitude dist-upgrade

Será pedido a sua senha, e novamente, você não verá nada do que estiver digitando. Depois de ter feito isso,será perguntado se quer continuar. Digite “y” e pressione Enter. Suas tela irá se parecer com o seguinte:

O sistema irá agora baixar e instalar as últimas atualizações. Isso demorá algum tempo dependendo de sua conexão com a Internet. Depois de finalizar essa parte, seu computador precisará ser reiniciado. Para fazer isso, digite:

sudo shutdown -r now

E deixe o sistema reiniciar. Seu servidor está completamente atualizado.

Uma observação rápida sobre o “Sudo”

Nesse momento, você deve ter percebido que todos os comandos que nós digitamos foram precedidos com “sudo”. Isso se deve porque eles necessitam de privilégios de administrador, e é isso que “sudo” faz. Ele executa o comando (ex.: “shutdown”) como administrador, permitindo que ele seja executado de forma adequada. Esse também é o motivo pelo qual a senha é solicitada. Porém, depois de ter digitado “sudo” e informado sua senha uma vez, você não precisará mais digitar a senha por cinco minutos. Nem todos os comandos necessitam do sudo, apenas aqueles que modificarão partes do sistema. Entendeu tudo? Ótimo.

5. Instalação do Apache, MySQL, e PHP

Agora chegou o momento de instalar alguns programas. Para poder acessar seus arquivos da Internet, iremos precisar instalar um servidor web (Apache). Além do servidor web, também queremos um servidor de banco de dados (MySql) e uma linguagem de script (PHP) de forma que possamos rodar aplicações populares como o WordPress. Assim, vamos fazer isso! Instalar programas no Ubuntu é bastante diferente da instalação de programas no Windows ou Mac OS X, onde o Ubuntu irá instalar os programas para você através de um comando simples. Isso se deve pois o Ubuntu tem algo chamado “Package Manager”, que gerencia quase todos os programas de seu sistema. Tudo que temos que fazer é informar ao gerenciador de pacotes (chamado “aptitude”) que queremos instalar o Apache, o MySql e o  PHP. Para fazer isso, digite o seguinte comando:

sudo aptitude install apache2 php5-mysql libapache2-mod-php5 mysql-server

E pressione Enter. O Aptitude irá baixar e instalar os programar especificados. Também irá baixar e instalar qualquer dependência necessária.

Durante o processo de instalação, o MySql irá solicitar a informação da senha do super-usuário. Você pode informar qualquer coisa para essa senha, somente tenha certeza de que seja uma senha longa e segura. Seja lá o que for fazer, NÃO deixe essa senha em branco.

Depois que tudo tenha terminado, você tem nesse momento um servidor web completamente funcional. Para testa-lo, primeiro descubra o endereço IP do servidor através do comando:

ifconfig | grep inet

Normalmente será o primeiro endereço IP retornado. No exemplo acima, é o 192.168.177.129. Agora que você sabe o IP, abra seu navegador e digite o endereço IP de seu servidor. Se você visualizar “It works!”, está tudo funcionando normalmente.

Porém, ainda não fizemos tudo. Não queremos que o Apache ou o PHP divulguem nenhuma informação sobre eles, pois essa informação não é necessária ao usuário e pode representar um risco de segurança. Primeiro, faça uma cópia do arquivo de configuração do Apache:

sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak

Agora abra esse arquivo:

sudo nano /etc/apache2/apache2.conf

Role para baixo (seta para baixo) até o ponto onde está escrito “ServerTokens Full” e altere para que se leia “ServerTokens Prod”

Agora, role apra baixo um pouco mais e altere “ServerSignature On” para “ServerSignature Off”

Finalmente, pressione Ctrl-O seguido por Ctrl-X. Isso salvará o arquivo e encerrará o editor de texto. Agora, precisamos fazer o mesmo com o PHP. Primeiro, faça uma cópia do arquivo de configuração do PHP:

sudo cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.bak

Abra o arquivo de configuração:

sudo nano /etc/php5/apache2/php.ini

Altere a linha “expose_php = On” para “expose_php = Off”

Novamente, pressione Control-O seguido por Control-X. Agora que os arquivos de configuração estão atualizados, reinicie o Apache:

sudo /etc/init.d/apache2 restart

Você terminou de configurar o Apache, o MySql e o PHP.

6. Instalação de um Firewall

Iremos agora “trancar” nosso servidor um pouco mais através da instalação do Shorewall, uma firewall de linha de comando. para instala-lo:

sudo aptitude install shorewall

Por padrão, o Shorewall é instalado com nenhuma regra, permitindo acesso total. Porém, esse não é o comportamento que desejamos. Ao invés disso, iremos bloquear todas as conexões a todas as portas exceto a porta 80 (HTTP) e a porta 22 (SSH). Primeiro, copie os arquivos de configuração para o diretório do Shorewall:

sudo cp /usr/share/doc/shorewall-common/examples/one-interface/* /etc/shorewall/

Agora, abra o arquivos “rules”:

sudo nano /etc/shorewall/rules

Adicione as seguintes linhas no espaço logo acima de onde está escrito “#LAST LINE”

HTTP/ACCEPT	net		$FW
SSH/ACCEPT	net		$FW

Depois pressione Ctrl-O e Ctrl-X. Seu firewall está agora configurado para aceitar apenas tráfego HTTP e SSH. A última coisa que precisamos fazer é dizer ao Shorewall para ser iniciado durante o boot. Assim, abra o arquivo de configuração principal do Shorewall:

sudo nano /etc/shorewall/shorewall.conf

Role para baixo até “STARTUP_ENABLED=No” e altere para “STARTUP_ENABLED=Yes”

Pressione Control-O e Control-X. Agora, abra o arquivo de configuração padrão do Shorewall:

sudo nano /etc/default/shorewall

E altere “startup=0″ para “startup=1″. Pressione Control-O e Control-X. Finalmente, inicie o firewall:

sudo /etc/init.d/shorewall start

Parabéns! Seu firewall está agora configurado e protegendo seu servidor.

7. Adicione seu Website ao seu Servidor Web

Agora que você configurou tudo, você irá quere adicionar um website ao servidor. Por padrão, todos os arquivos que o Apache disponibiliza na Internet estão localizados em “/var/www/”. Porém, você não pode escrever nesse diretório. Vamos tornar isso possível:

sudo usermod -g www-data [YOUR USERNAME]
sudo chown -R www-data:www-data /var/www
sudo chmod -R 775 /var/www

O que acontece aqui é que você adicionou seu usuário ao grupo “www-data”, e tornou o diretório acessível para escrita para os membros do grupo “www-data”. Agora, você irá efetuar login em seu servidor usando o SFTP (não confunda com o FTPS). Alguns clientes que suportam SFTP são: WinSCP (Windows, Livre), FileZilla (Windows, Linux, OS X, Livre), Cyberduck (OS X, Livre), e o Transmit (OS X, $30). Conecte-se ao servidor usando seu nome e senha e, se seu cliente suportar, o caminho padrão “/var/www” (se não suportar, simplesmente navegue até o diretório /var/www após ter efetuado login): (A figura abaixo mostra a tela do Transmit)

Você pode agora adicionar seus arquivos a esse diretório (/var/www) e eles serão mostrados em seu servidor quando você abre-o com seu navegador. Nesse momento, você deve estar se perguntando o por quê de se usar SFTP ao invés do FTP. O motivo principal é porque o SFTP é embutido no OpenSSH (que foi instalado previamente). Porém, também é mais seguro que o FTP, e torna difícil (possivelmente impossível) que usuários maliciosos tenham acesso as suas credenciais de acesso.

8. Tornando seu servidor acessível na Internet

Muitas redes domésticas estão atrás de roteadores nesses dias. Por causa disso,seu servidor web não estará visível para a Internet sem um pequeno passo extra. Como cada roteador disponível no mercado é diferente um dos outros, podemos apenas dar direções gerais nessa área. Existem duas maneiras de disponibilizar seu servidor na Internet: uma DMZ ou Port Forwarding. A principal diferença perceptível entre as duas é que com uma DMZ, seu servidor usa o firewall instalado anteriormente para se proteger. Porém, com Post Forwarding, o seu servidor estará protegido pelo firewall do roteador.
Porém, antes de prosseguirmos, queremos dar a nosso servidor um endereço de rede estático. Para fazer isso, faça login no roteador, e procure por algo como “Static IPs” ou “Static Routing”. Após ter dado ao seu servidor um endereço de rede estático, você pode seguir em frente. Lembre, o Google é seu amigo. Para Port Forward, existe um excelente website, PortForward.com, embora de forma feia, pode ajudar você a executar os procedimentos necessários em quase todos os roteadores. As postas que você quer configurar aqui são a 22 e a 80. Para criar uma DMZ, você precisa efetuar login em seu roteador e procurar por algo como “DMZ settings”. Uma vez que tiver achado essa opção, adicione o seu servidor na DMZ, e tudo estará configurado. Novamente, o Google é útil em situações como essa. Agora, ache seu endereço IP público e voilá! Vocẽ pode acessar seu servidor de qualquer lugar desde que seu IP não mude.

9. Gerenciando seu servidor remotamente

Além de permitir que você transfira arquivos para seu servidor, o OpenSSH permite que você faça login em servidor de qualquer lugar desde que você saiba seu IP. No Windows, você irá precisar de um cliente SSH. Uma boa opção é o Putty. No OS X, o SSH já vem instalado pro padrão. Simplesmente abra o Terminal e digite “ssh you@yourip”. No Putty, selecione SSH, e informe seu IP, nome de usuário e senha quando for solicitado. Você perceberá que, após ter feito login, a tela se parecerá exatamente como a que você veria no servidor:

Você pode fazer qualquer coisa que faria se estivesse de fato sentado em frente ao servidor, fisicamente. Para se desconectar do servidor, simplesmente digite “exit” e pressione Enter.

10. E isso é tudo!

Você tem agora um servidor web completamente funcional. Além de ser um ótimo ambiente de teste, pode ser adequado para hospedar website com um tráfego razoavelmente baixo. Existe obviamente um bocado a se aprender, mas com isso você pode obter um pequeno vislimbre de como um servidor web funciona. Se quiser ler mais sobre esse assunto, segue alguns outros artigos para se aprofundar no tema:

Traduzido de NetTuts+