Olá galera, esse tutorial ensinará passo-a-passo como subir um
servidor Web no
Linux. Estou usando atualmente, o
Ubuntu Hardy Heron 8.04.
Primeira parte
Antes de mais nada, instale o Nmap, um dos melhores scanners de portas.
sudo apt-get install nmap
Agora vamos baixar o apache.
sudo apt-get install apache2
Faremos o teste pra ver se realmente está funcionando. Digite no navegador (Firefox):
http://[seu IP]
Aparecerá uma mesagem: “It works!”, mais ou menos assim:
Instalaremos agora o PHP5:
sudo apt-get install php5 libapache2-mod-php5
Reiniciaremos o Apache, para atualizá-lo:
sudo /etc/init.d/apache2 restart
Entre na pasta /var/www/. Poderá ter um arquivo chamado index.html, delete-o e crie um novo arquivo. Abra um editor de texto e digite o seguinte:
<?php phpinfo(); ?>
Salve-o no diretório /var/www/ com o nome info.php. No navegador, digite:
http://[seu IP]/info.php
Ok, seu servidor está rodando, mas apenas usuários da rede conseguem visualizá-lo, o que não torna interessante esse tutorial.
No meu caso, utilizo um notebook com banda larga Claro 3G, com IP dinâmico. Terei que ter um endereço fixo. Nesse caso, cadastre-se no site abaixo.
Após o cadastro, acesse a opção "HOST/Redirect" e clique no icone "Add a host".
Você será redirecionado a uma tela semelhante a de cadastro, onde você poderá registrar o seu host. Haverá a opção mostrada abaixo.
No final da página tem a opção "Create Host". Clique e aguarde a criação do host.
Ótimo, vamos agora mexer com o iptables, um firewall do Linux. Copie e cole os comandos abaixo em um editor de texto e salve o arquivo no diretório /etc/init.d com o nome iptables.sh.
#!bin/sh
#aqui estou fechando as entradas, saidas e redirecionamento.
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
#agora vamos liberar o que nos interessa.
sudo iptables -A INPUT -i ! ppp0 -j ACCEPT # Para modem a interface é ppp0, se você usa ADSL o código será o seguinte:
#sudo iptables -A INPUT -i ! eth0 -j ACCEPT
#sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#sudo iptables -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
#sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
#e o mais importante liberar a porta do no-ip
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # porta padrão
sudo iptables -A INPUT -p tcp --dport 78 -j ACCEPT
Atenção: caso seja necessário incluir alguma regra no firewall, deverá ser colocada neste documento.
Criaremos um link simbólico (atalho) para que seja executado essa regra toda vez que iniciar o sistema:
sudo ln -s /etc/init.d/iptables.sh /etc/rc2.d/S99iptables
Esse comando criará um link simbólico na pasta /etc/rc2.d, e quando o sistema for iniciado, ele carregará toda regra do iptables.
Por padrão a porta de comunicação do Apache é a 80, porém serviços de banda larga como Speedy, Claro3G, Tim Web e outros não liberam comunicação nessa porta. Nesse caso, devemos trocá-la. Neste tutorial, a porta ultilizada pelo apache é a 78. Para a alteração, faça o seguinte, digite no terminal:
sudo gedit /etc/apache2/ports.conf
O seguinte documento será carregado:
Listen 80
# troque aki pela porta liberada 78 no meu caso.
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Altere-o para ficar da seguinte forma:
Listen 78
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Salve o arquivo e reinicie o Apache:
sudo /etc/init.d/apache2 restart
Faça um scan com o nmap e confirme se a porta está aberta e o serviço rodando.
sudo nmap -A [seu IP]
Serão exibidas várias informações, mas o que nos interessa é o seguinte:
PORT STATE SERVICE VERSION
78/tcp
open http Apache httpd 2.2.8 ((Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch)
significa que a porta 78 está aberta e o serviço está rodando. Agora vamos instalar um cliente no-ip. Você pode baixar usando o comando abaixo.
sudo apt-get install no-ip
Aparecerá no terminal o lugar para inserir o e-mail, senha e host. Infelizmente no meu micro não funcionou como devia, então tive que optar pelo meio mais dificil! Aqui está o link (obs.: este programa está sempre tendo atualização, talves pelo wget não funcione):
sudo wget https://www.no-ip.com/downloads.php?page=linux
Ou acesse o site abaixo e faça o download para Linux:
Extraia o pacote:
sudo tar -zxvf noip-duc-linux.tar.gz
$ cd noip-2.1.9/
$ cd binaries
$ sudo cp -a noip2-i686 /usr/local/bin/
Agora criaremos um arquivo de configuração com a opção “-C -c” (create config), onde você pode indicar onde o arquivo será criado.
sudo noip2-i686 -C -c /etc/noip.conf
Aparecerá assim no terminal:
Please enter the login/email string for no-ip.com
# aqui você coloca seu e-mail.
Please enter the password for user 'xxx@xxx.com' ******
# aqui a sua senha.
Only one host [w4gn3r.no-ip.biz] is registered to this account.
It will be used.
Do you wish to run something at successful update?[N] (y/N) y
Please enter the script/program name [enter]
New configuration file '/tmp/no-ip2.conf' created.
Agora vamos incluir um script no /etc/init.d/bootmisc.sh para toda vez que subir o sistema ele carregue o cliente no-ip.
sudo gedit /etc/init.d/bootmisc.sh
Agora você cola esse script e salva:
# Rotina para atualizar o IP
echo "Aguarde, o IP do servidor está sendo atualizado..."
/usr/local/bin/noip2-i686 -c /etc/noip.conf &
echo "IP atualizado com sucesso."
Ok, o site deverá ficar no diretório /var/www/ e seu endereço é:
http://[nome do host].no-ip.biz.
Atenção: esses são os procedimentos minimos para fazer um servidor Web, mas de qualquer forma não é 100% garantido que funcione em sua máquina, Então fiz uma FAQ de erros comuns, são eles:
- Abrir a tela do no-ip mais não carregar o site.
Pode ser problema de atualização de IP, entre no site no-ip e troque o ip manual e vê se resolve.
- Página não existe.
Pode ser problema de firewall. Veja se o script iptables está certo, tente dar comando por comando no terminal. Também pode ser problema com direcionamento de porta, talvez criar uma regra no roteador indicando que todos os pacotes que chegarem na porta 78 sejam encaminhadas ao determinado micro da sua rede, onde está rodando o server, resolva.
Meu msn w4g3_online -[arroba]- hotmail -[ponto]- com
Até a próxima.