Ola pessoal. Tudo bem?
Resolvi dar uma aprimorada no conteudo do curso para os entusiastas de plantão.
Se voce chegou até aqui com certeza já sabe o que é um servidor web e seu objetivo principal.
Nas aulas foi utilizado o apache2 mas tambem há outras alternativas.
Resumindo o que queremos é nossa pagina web locada em um servidor para que possamos acessar pelo ip.
A seguir vou mostrar algumas etapas de como fazer isso:
Objetivo:
Rodar um projeto em Node.js ou Python (Flask) no Ubuntu Server, usando Apache como proxy reverso para servir o app na web com domínio ou IP.
Atualize seu servidor:
sudo apt update && sudo apt upgrade -y
Instale o Apache
sudo apt install apache2 -y
Habilite o módulo de proxy:
sudo a2enmod proxy proxy_http
sudo systemctl restart apache2
Teste se o Apache está ok:
curl http://localhost
Ou acesse no navegador: http://meu_ip
Instale Node.js (caso vá usar)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
Instale Python (caso vá usar Flask ou FastAPI)
Python já vem por padrão no Ubuntu, mas instale o venv:
sudo apt install python3-venv -y
Criar app simples com node
mkdir -p ~/meuapp-node
cd ~/meuapp-node
Crie index.js com:
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Olá, mundo do Node.js!');
});
server.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});
Inicie o app:
node index.js
Teste:
curl http://localhost:3000
Criar app Flask simples com python
mkdir -p ~/meuapp-flask
cd ~/meuapp-flask
python3 -m venv venv
source venv/bin/activate
pip install flask
Crie app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Olá, mundo do Flask!"
app.run(host='0.0.0.0', port=3000)
Execute:
python3 app.py
Teste:
curl http://localhost:3000
Configurar Apache como Proxy Reverso
Criar um Virtual Host
sudo nano /etc/apache2/sites-available/meuapp.conf
Conteúdo:
<VirtualHost *:80>
ServerName meuapp.local
ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
Ativar site:
sudo a2ensite meuapp.conf
sudo systemctl reload apache2
Se for testar local:
echo "127.0.0.1 meuapp.local" | sudo tee -a /etc/hosts
Acesse: http://meuapp.local/
Dicas e Boas Práticas
Use PM2 para manter o app Node.js ativo:
sudo npm install -g pm2
pm2 start index.js
pm2 startup
pm2 save
Para Flask, use Gunicorn:
pip install gunicorn
gunicorn -w 4 app:app --bind 0.0.0.0:3000
Pode usar HTTPS com Certbot:
sudo apt install python3-certbot-apache -y
sudo certbot --apache
Com isso temos nosso app rodando em um servidor web.
continua...