Partilhar: WhatsApp
aulify
UC UC00627 · T. Desenv. Software, T. Sist. Comp. Redes

Ficha 01 · Instalação e virtual hosts

Servidores web, server blocks, conteúdo dinâmico
Versão · Aluno
Tempo · 45 minutos
Cotação · 100 pontos
Aluno(a)
Turma
Data
Objectivos da ficha

Parte I · Conceitos

Exercício 1 · Estático vs dinâmico (10 pts)

a) Diferença entre servir conteúdo estático e dinâmico. (5 pts)

b) Onde entra o servidor web quando a aplicação é Python (Gunicorn)? (5 pts)

a) Estático — o servidor entrega ficheiros (HTML/CSS/JS/imagens) tal como estão; muito rápido. Dinâmico — uma aplicação gera a resposta em cada pedido (PHP/Python/Node), tipicamente consultando uma BD.

b) O servidor web (Nginx) funciona como reverse proxy: recebe o pedido HTTPS, serve os estáticos diretamente e encaminha o resto para a app Python (Gunicorn) numa porta local (ex.: 127.0.0.1:8000), devolvendo a resposta ao cliente.

Exercício 2 · Escolher servidor (10 pts)

Indica um servidor adequado:

a) Servir muitos ficheiros estáticos + reverse proxy, leve. ___

b) Site que depende de .htaccess e módulos Apache. ___

c) HTTPS automático com configuração mínima. ___

a) Nginx. b) Apache. c) Caddy.

Parte II · Instalação

Exercício 3 · Instalar Nginx (15 pts)

Escreve os comandos para instalar o Nginx no Ubuntu, ativá-lo no arranque, abrir a firewall e confirmar que responde.

sudo apt update
sudo apt install nginx -y
sudo systemctl enable --now nginx
sudo ufw allow 'Nginx Full'
curl -I http://localhost          # esperado: HTTP/1.1 200 OK

Exercício 4 · Ativar site (10 pts)

Tens /etc/nginx/sites-available/escola.conf. Que passos para o tornar ativo com segurança?

sudo ln -s /etc/nginx/sites-available/escola.conf /etc/nginx/sites-enabled/
sudo nginx -t            # validar sintaxe ANTES de aplicar
sudo systemctl reload nginx

nginx -t evita derrubar o serviço com um erro de configuração; reload aplica sem cortar ligações ativas.

Parte III · Virtual hosts

Exercício 5 · Server block (15 pts)

Escreve um server block Nginx para o site escola.pt (e www.escola.pt), raiz /var/www/escola, index index.html, com logs próprios.

server {
    listen 80;
    server_name escola.pt www.escola.pt;
    root /var/www/escola;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/escola.access.log;
    error_log  /var/log/nginx/escola.error.log;
}

Exercício 6 · PHP (15 pts)

a) Que pacote instalar para servir PHP com Nginx? (5 pts)

b) Escreve o location que entrega ficheiros .php ao PHP-FPM. (10 pts)

a) sudo apt install php-fpm -y

b)

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

(O caminho do socket varia com a versão do PHP — confirmar com ls /run/php/.)

Parte IV · Diagnóstico

Exercício 7 · Códigos (15 pts)

A app está atrás do Nginx (reverse proxy). Que problema indica cada situação e por onde começar?

a) 502 Bad Gateway. ___

b) 403 Forbidden numa pasta. ___

c) 404 em todas as páginas mas o ficheiro existe. ___

d) Erro de certificado no browser. ___

a) 502 — o backend (app/PHP-FPM) está em baixo ou o proxy_pass/socket está errado. Verificar: systemctl status da app, porta/socket, error.log.

b) 403permissões do filesystem (utilizador www-data não lê) ou regra de acesso/autoindex off. Verificar ls -l, dono/permissões.

c) 404 generalizadoroot ou try_files mal configurados (caminho errado). Verificar o root do server block e o caminho real.

d) Certificado — expirado, cadeia incompleta, ou server_name/domínio não coincide. Verificar com curl -I / openssl s_client e renovar (certbot renew).