Instalação e configuração de servidor web (Nginx/Apache)
1. O que é um servidor web?
Hoje vamos falar sobre Nginx e Apache, dois dos servidores web mais populares. No final da aula, seu servidor será capaz de dar boas-vindas orgulhosamente a usuários desavisados na internet.
Antes de mergulhar nos comandos, bora entender o que estamos tentando fazer. Um servidor web é um programa que recebe requisições HTTP (por exemplo, quando um usuário digita o endereço de um site no navegador), processa essas requisições e responde com um conteúdo apropriado (uma página HTML, arquivo ou até mesmo um erro “404 Not Found”). Ele age como um intermediário entre os usuários e seu conteúdo.
Nginx vs Apache: batalha de servidores web
Se Nginx e Apache se encontrassem num café, então:
- Nginx pediria um latte de lavanda e resolveria tudo de forma assíncrona: “Me manda o pedido e em um minuto eu te entrego o arquivo, não me atrapalha!”.
- Apache, por outro lado, seria mais tradicional, criaria uma thread para cada tarefa e responderia educadamente, mas de forma mais lenta em grande volume de requisições.
Diferenças resumidas:
Característica | Nginx | Apache |
---|---|---|
Arquitetura | Assíncrona | Baseada em threads |
Desempenho | Alto em grandes cargas | Bom para dinâmicas (PHP/Perl) |
Simplicidade | Configuração simples, mas com seus detalhes | Mais versátil, porém mais complexa |
Quando usar o quê?
- Se seu site é só um monte de arquivos estáticos (por exemplo, um blog ou landing page), então Nginx é seu parceiro.
- Se você trabalha com aplicações web dinâmicas (por exemplo, site em PHP), Apache oferece mais flexibilidade.
2. Instalação do servidor web
Agora que você entendeu por que isso é necessário, bora começar a instalação. Vamos ver como instalar tanto o Nginx quanto o Apache. Escolha o que você curtir mais ou instale os dois de uma vez pra se sentir um profissional.
Instalação do Nginx
Atualizando a lista de pacotes:
sudo apt-get update
Instalando o Nginx:
sudo apt-get install nginx
Verificando o status do servidor:
sudo systemctl status nginx
Se tudo estiver certo, você vai ver algo como:
active (running)
.Checando a página padrão: Abra o navegador e digite
http://localhost
. Você deve ver a página de boas-vindas do Nginx, confirmando que a instalação deu certo.
Instalação do Apache
Atualizando a lista de pacotes:
sudo apt-get update
Instalando o Apache:
sudo apt-get install apache2
Verificando o status do servidor:
sudo systemctl status apache2
Assim como no Nginx, o status deve estar como «active (running)».
Checando a página padrão: Abra o navegador e acesse
http://localhost
. Agora você verá a página padrão do Apache.
3. Configuração básica do servidor web
Onde estão as configurações?
No Nginx, o arquivo principal de configuração está localizado em:
/etc/nginx/nginx.conf
No Apache:
/etc/apache2/apache2.conf
Tenta abrir os arquivos de configuração usando seu editor favorito (por exemplo, nano
):
sudo nano /etc/nginx/nginx.conf
Aqui começa sua primeira aventura: talvez agora você não entenda nada, porque os arquivos de configuração parecem feitiços de um jogo de RPG. Mas não se preocupe – a gente vai desvendar tudo isso.
Iniciar, parar e reiniciar os servidores
Se você sabe como gerenciar serviços no Linux, então "metade do caminho já tá andado". Aqui estão os comandos principais para gerenciar os nossos geradores web:
Para o Nginx:
sudo systemctl start nginx # Iniciar
sudo systemctl stop nginx # Parar
sudo systemctl restart nginx # Reiniciar
sudo systemctl reload nginx # Recarregar configuração
Para o Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
Verificando a configuração
Antes de reiniciar o servidor, sempre verifica se você não cometeu erros:
Para o Nginx:
sudo nginx -t
Para o Apache:
sudo apachectl configtest
Qualquer erro na configuração será exibido – não dá pra quebrar o servidor por acidente.
4. Demonstração: iniciando nosso primeiro site
Agora vamos fazer algo que os desenvolvedores web adoram – criar um site com um nome incrivelmente criativo chamado "Hello Server".
Para Nginx
Criamos o diretório para o site:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Escreva no arquivo o seguinte (sim, tudo que é genial é simples):
<h1>Hello, Nginx Server!</h1>
Configuramos o arquivo de configuração:
sudo nano /etc/nginx/sites-available/hello
Segue um exemplo de configuração simples:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
Ativando a configuração:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Adicione uma entrada ao arquivo
/etc/hosts
para configurar o domíniohello.local
na sua máquina local:127.0.0.1 hello.local
Verifique o site no navegador: http://hello.local.
O arquivo hosts contém o mapeamento de endereços IP para nomes de domínio. Ele é seu servidor DNS local. Esse arquivo existe em todos os sistemas operacionais. No Windows, ele também está presente, no endereço C:\Windows\System32\drivers\etc\hosts
Para Apache
Criamos o diretório:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Preencha o arquivo:
<h1>Hello, Apache Server!</h1>
Criamos a configuração do host virtual:
sudo nano /etc/apache2/sites-available/hello.conf
Segue um exemplo de configuração:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Ativando a configuração:
sudo a2ensite hello.conf sudo systemctl reload apache2
Adicione uma entrada ao arquivo
/etc/hosts
:127.0.0.1 hello.local
Verifique o funcionamento: http://hello.local.
Depois da palestra de hoje, você já está preparado para instalar e configurar um servidor web principal por conta própria. Um pouco mais de esforço e você será capaz de implementar sites e aplicações completas que não parecem desenho de criança. Em algum lugar, o HTTPS está esperando por você, mas isso é assunto para outra hora.
GO TO FULL VERSION