Configurar e Ajustar um Servidor de Aplicações no Ubuntu 24.04
Introdução
Configurar e configurar um servidor de aplicação no Ubuntu 24.04 é essencial para implantar aplicações web em ambientes de produção. Seja você hospedando aplicativos Node.js, serviços web em Python ou sites baseados em PHP, um servidor de aplicação devidamente configurado fornece a base para implantações confiáveis, seguras e escaláveis.
Este tutorial orienta você na configuração de um servidor de aplicativos pronto para produção em um Droplet do Linux-Console.net executando Ubuntu 24.04. Você aprenderá a instalar e configurar componentes essenciais, configurar um proxy reverso com Nginx, proteger seu servidor com certificados SSL e implantar aplicativos usando systemd para gerenciamento de processos. A configuração segue as melhores práticas de produção, garantindo que seu servidor esteja pronto para lidar com cargas de trabalho reais.
Principais Conclusões
- Configure um servidor de aplicação pronto para produção no Ubuntu 24.04 usando um Droplet da Linux-Console.net.
- Configure o Nginx como um proxy reverso para lidar com solicitações recebidas e direcionar o tráfego para suas aplicações
- Implemente criptografia SSL/TLS usando o Let’s Encrypt para conexões seguras.
- Implante e gerencie aplicações usando
systemdpara um gerenciamento de processos confiável. - Aplique medidas de reforço de segurança, incluindo configuração de firewall e permissões de usuário.
- Suporte a vários tipos de aplicativos, incluindo aplicativos Node.js, Python e PHP.
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:
- Um Droplet da Linux-Console.net executando Ubuntu 24.04. Se você precisar criar um, siga nosso guia sobre Configuração Inicial do Servidor com Ubuntu, que inclui a criação de um usuário sem privilégios de root com
sudoe a configuração de um firewall. - Um nome de domínio apontou para o endereço IP do seu Droplet. Você pode configurar isso seguindo nosso guia sobre Como Configurar um Nome de Host com o Linux-Console.net.
- Familiaridade básica com a linha de comando do Linux e acesso SSH ao seu servidor.
Passo 1 — Atualizando os Pacotes do Sistema
Comece atualizando o índice de pacotes do seu sistema e atualizando os pacotes existentes para garantir que você tenha os patches de segurança e as versões de software mais recentes:
sudo apt update
sudo apt upgrade -y
Isso garante que seu servidor Ubuntu 24.04 tenha as informações de pacotes mais recentes e atualizações de segurança. O Ubuntu 24.04 inclui versões de pacotes atualizadas em comparação com o Ubuntu 22.04, incluindo versões mais recentes do systemd, Nginx e outros componentes principais.
Passo 2 — Instalando o Nginx como um Proxy Reverso
O Nginx funciona como um proxy reverso, lidando com solicitações HTTP e HTTPS recebidas e encaminhando-as para o servidor da sua aplicação. Essa configuração oferece vários benefícios: terminação de SSL, capacidades de balanceamento de carga e maior segurança ao manter seu servidor de aplicação atrás do proxy.
Instale o Nginx usando o apt:
sudo apt install nginx -yApós a instalação, inicie e configure o Nginx para iniciar automaticamente na inicialização:
sudo systemctl start nginx
sudo systemctl enable nginxVerifique se o Nginx está em execução:
sudo systemctl status nginxVocê deve ver uma saída indicando que o Nginx está ativo e em execução.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-12-18 07:03:01 UTC; 32s ago
Docs: man:nginx(8)
Main PID: 46284 (nginx)
Tasks: 3 (limit: 4656)
Memory: 2.4M (peak: 5.3M)
CPU: 46ms
CGroup: /system.slice/nginx.service
├─46284 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
├─46286 "nginx: worker process"
└─46287 "nginx: worker process"
Dec 18 07:03:01 Anish-Ubuntu-24 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Dec 18 07:03:01 Anish-Ubuntu-24 systemd[1]: Started nginx.service - A high performance web server and a reverse proxy server.Passo 3 — Configurando o Firewall
O Ubuntu 24.04 usa o UFW (Uncomplicated Firewall) para gerenciamento de firewall. Configure-o para permitir tráfego HTTP, HTTPS e SSH enquanto bloqueia outras portas desnecessárias.
Primeiro, verifique se o UFW está instalado e confira seu status:
sudo ufw statusSe o UFW não estiver ativo, ative-o e configure as regras necessárias:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enablesudo ufw allow 'Nginx Full'
sudo ufw enable
Rules updated
Rules updated (v6)
Rules updated
Rules updated (v6)
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startupO perfil Nginx Full permite tráfego tanto HTTP (porta 80) quanto HTTPS (porta 443). Verifique as regras do firewall:
sudo ufw status verbose
Você deve ver regras permitindo o tráfego do OpenSSH e do Nginx Full.
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80,443/tcp (Nginx Full) ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80,443/tcp (Nginx Full (v6)) ALLOW IN Anywhere (v6) Etapa 4 — Configurando SSL com Let’s Encrypt
Proteger seu servidor de aplicação com criptografia SSL/TLS é essencial para implantações em produção. O Let’s Encrypt oferece certificados SSL gratuitos que podem ser renovados automaticamente.
Instale o Certbot e o plugin do Nginx:
sudo apt install certbot python3-certbot-nginx -yObtenha um certificado SSL para o seu domínio. Substitua your_domain pelo nome real do seu domínio:
sudo certbot --nginx -d your_domain -d www.your_domainO Certbot solicitará que você insira um endereço de e-mail e perguntará se deseja redirecionar o tráfego HTTP para HTTPS. Escolha redirecionar para uma melhor segurança. O certificado será renovado automaticamente antes de expirar.
Teste o processo de renovação automática:
sudo certbot renew --dry-runSe este comando for concluído sem erros, a renovação automática está configurada corretamente.
Passo 5 — Configurando o Nginx como um Proxy Reverso
Crie uma configuração de bloco de servidor Nginx para direcionar o tráfego para o seu servidor de aplicação. Este exemplo mostra uma configuração genérica que você pode adaptar para diferentes tipos de aplicação.
Crie um novo arquivo de configuração para seu domínio:
sudo nano /etc/nginx/sites-available/your_domainAdicione a seguinte configuração, substituindo your_domain pelo seu domínio real e ajustando a URL do proxy_pass para corresponder à porta da sua aplicação:
server {
listen 80;
listen [::]:80;
server_name your_domain www.your_domain;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain www.your_domain;
ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
Esta configuração:
- Redireciona o tráfego HTTP para HTTPS
- Encerra o SSL no nível do Nginx
- Encaminha solicitações para sua aplicação rodando na porta 3000 (ajuste conforme necessário)
- Preserva os endereços IP dos clientes e as informações de protocolo
Habilite a configuração criando um link simbólico:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/Testar a configuração do Nginx em busca de erros de sintaxe:
sudo nginx -tSe o teste passar, recarregue o Nginx para aplicar as alterações:
sudo systemctl reload nginxPasso 6 — Instalando Dependências de Tempo de Execução do Aplicativo
As dependências em tempo de execução que você precisa dependem do tipo de aplicação. Esta seção aborda a configuração para aplicações Node.js, Python e PHP.
Instalando o Node.js
Para aplicações Node.js, instale o Node.js usando o repositório do NodeSource para obter a versão LTS mais recente:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejsVerifique a instalação:
node --version
npm --versionv20.19.6
10.8.2Instalando Python e pip
O Ubuntu 24.04 inclui o Python 3.12 por padrão. Instale o pip e as ferramentas de ambiente virtual:
sudo apt install python3-pip python3-venv -yVerifique a instalação:
python3 --version
pip3 --versionpip3 --version
Python 3.12.3
pip 24.0 from /usr/lib/python3/dist-packages/pip (python 3.12)Instalando PHP e PHP-FPM
Para aplicações PHP, instale PHP e PHP-FPM (Gerenciador de Processos FastCGI):
sudo apt install php-fpm php-mysql php-mbstring php-xml php-curl -yVerifique se o PHP-FPM está em execução:
sudo systemctl status php8.3-fpm Loaded: loaded (/usr/lib/systemd/system/php8.3-fpm.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-12-18 08:02:36 UTC; 1min 56s ago
Docs: man:php-fpm8.3(8)
Process: 59077 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83 (code=exited, >
Main PID: 59074 (php-fpm8.3)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 4656)
Memory: 9.5M (peak: 10.4M)
CPU: 97ms
CGroup: /system.slice/php8.3-fpm.service
├─59074 "php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)"
├─59075 "php-fpm: pool www"
└─59076 "php-fpm: pool www"
Dec 18 08:02:36 Anish-Ubuntu-24 systemd[1]: Starting php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager...<$> Observação: O Ubuntu 24.04 inclui o PHP 8.3. Ajuste os números das versões se o seu sistema usar uma versão diferente. <$>
Passo 7 — Criando um Serviço Systemd para Sua Aplicação
O systemd gerencia sua aplicação como um serviço, garantindo que ela seja iniciada automaticamente na inicialização e reiniciada caso falhe. Este exemplo cria um serviço systemd para uma aplicação Node.js, mas você pode adaptá-lo para outros tipos de aplicação.
Crie um arquivo de serviço systemd:
sudo nano /etc/systemd/system/your-app.serviceAdicione a seguinte configuração, ajustando os caminhos e as variáveis de ambiente conforme necessário:
[Unit]
Description=Your Application Server
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/your-app
Environment="NODE_ENV=production"
Environment="PORT=3000"
ExecStart=/usr/bin/node /var/www/your-app/server.js
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.targetPontos principais de configuração:
Type=simple: Para aplicativos que rodam em primeiro planoUser=www-data: Executa a aplicação como um usuário não-root por segurançaWorkingDirectory: Define o diretório de trabalho da aplicaçãoRestart=on-failure: Reinicia automaticamente o aplicativo se ele travarRestartSec=10: Aguarda 10 segundos antes de reiniciar
Recarregue o systemd e inicie seu serviço:
sudo systemctl daemon-reload
sudo systemctl start your-app
sudo systemctl enable your-appVerifique o status do serviço:
sudo systemctl status your-app● your-app.service
Loaded: loaded (/etc/systemd/system/your-app.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-12-18 08:07:30 UTC; 4ms ago
Main PID: 59408 ((node))
Tasks: 1 (limit: 4656)
Memory: 512.0K (peak: 512.0K)
CPU: 936us
CGroup: /system.slice/your-app.service
└─59408 "(node)"
Dec 18 08:07:30 Anish-Ubuntu-24 systemd[1]: your-app.service: Scheduled restart job, restart counter is at 4.
Dec 18 08:07:30 Anish-Ubuntu-24 systemd[1]: Started your-app.service.Exemplo de Aplicativo em Python
Para uma aplicação Python usando Gunicorn, seu serviço systemd pode ser assim:
[Unit]
Description=Your Python Application
After=network.target
[Service]
Type=notify
User=www-data
WorkingDirectory=/var/www/your-app
Environment="PATH=/var/www/your-app/venv/bin"
ExecStart=/var/www/your-app/venv/bin/gunicorn --bind 127.0.0.1:8000 app:app
Restart=on-failure
[Install]
WantedBy=multi-user.targetExemplo de Aplicativo PHP
Para aplicações PHP, você normalmente usa PHP-FPM com Nginx. Configure o Nginx para encaminhar as requisições para o PHP-FPM:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}Passo 8 — Implantando Sua Aplicação
Crie um diretório para seu aplicativo e defina as permissões apropriadas:
sudo mkdir -p /var/www/your-app
sudo chown -R www-data:www-data /var/www/your-appImplante seus arquivos de aplicativo neste diretório. Você pode usar Git, SCP ou outros métodos de implantação:
cd /var/www/your-app
sudo -u www-data git clone https://github.com/your-username/your-repo.git .Instale as dependências e construa sua aplicação conforme necessário. Para Node.js:
sudo -u www-data npm install --productionPara Python:
sudo -u www-data python3 -m venv venv
sudo -u www-data ./venv/bin/pip install -r requirements.txtApós a implantação, reinicie o serviço da sua aplicação:
sudo systemctl restart your-appPasso 9 — Melhores Práticas de Endurecimento de Produção
Aplique essas medidas de segurança para fortalecer seu servidor de aplicação para uso em produção.
Desativar login root via SSH
Edite a configuração do SSH:
sudo nano /etc/ssh/sshd_configDefina o seguinte:
PermitRootLogin no
PasswordAuthentication noReiniciar SSH:
sudo systemctl restart sshdConfigurar Atualizações Automáticas de Segurança
Ativar atualizações de segurança automáticas:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgradesConfigurar Rotação de Logs
Configure a rotação de logs para evitar que os arquivos de log consumam espaço em disco. Edite a configuração do logrotate:
sudo nano /etc/logrotate.d/your-appAdicionar :
/var/www/your-app/logs/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data www-data
sharedscripts
}Monitorar Espaço em Disco
Configure o monitoramento para alertá-lo quando o espaço em disco estiver baixo. Instale e configure ferramentas de monitoramento:
sudo apt install htop iotop -yPasso 10 — Solução de Problemas Comuns
Esta seção aborda problemas comuns que você pode encontrar ao configurar seu servidor de aplicações.
Aplicativo não iniciando
Verifique o status do serviço e os logs:
sudo systemctl status your-app
sudo journalctl -u your-app -n 50 --no-pagerOs problemas comuns incluem:
- Caminhos de arquivo incorretos no arquivo de serviço systemd
- Variáveis de ambiente ausentes
- Erros de permissão (verifique se o usuário do serviço pode acessar os arquivos do aplicativo)
Erro 502 Bad Gateway do Nginx
Isso geralmente significa que o Nginx não consegue se conectar ao seu aplicativo. Verifique:
- Seu aplicativo está em execução:
sudo systemctl status your-app- O aplicativo está escutando na porta correta:
sudo netstat -tlnp | grep 3000- A URL
proxy_passna sua configuração doNginxcorresponde à porta da sua aplicação.
Problemas com Certificado SSL
Se os certificados SSL falharem ao renovar:
- Verifique os logs do Certbot:
sudo tail -f /var/log/letsencrypt/letsencrypt.log- Verifique se os registros DNS do seu domínio apontam para o seu servidor:
dig your_domain- Certifique-se de que as portas 80 e 443 estão abertas no seu firewall.
Alto Uso de Memória
Monitorar uso de memória:
free -h
htopSe seu aplicativo consome muita memória, considere:
- Otimização do código da sua aplicação
- Aumentando a RAM do seu Droplet
- Implementando cache em nível de aplicação
Perguntas Frequentes
1. O que é um servidor de aplicações no Ubuntu?
Um servidor de aplicações é um ambiente de servidor que executa e gerencia aplicações web. No Ubuntu 24.04, isso geralmente envolve configurar um ambiente de execução (como Node.js, Python ou PHP), configurar um proxy reverso (como Nginx) e usar o systemd para gerenciar os processos da aplicação. O servidor de aplicações lida com as requisições recebidas, executa o código da aplicação e retorna respostas aos clientes.
2. Como eu configuro o systemd para o meu aplicativo?
Para configurar o systemd para sua aplicação, você precisará criar um arquivo de serviço. Aqui está um exemplo passo a passo:
Suponha que sua aplicação seja um app Node.js localizado em /home/ubuntu/my-app, e que você queira executá-lo com npm start usando o usuário ubuntu.
- Crie o arquivo de serviço systemd:
sudo nano /etc/systemd/system/my-app.service- Adicione o seguinte conteúdo ao arquivo:
[Unit]
Description=My Node.js App
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/my-app
ExecStart=/usr/bin/npm start
Restart=on-failure
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target- Recarregue o systemd para reconhecer o novo serviço:
sudo systemctl daemon-reload- Habilite o serviço para iniciar na inicialização:
sudo systemctl enable my-app- Inicie o aplicativo:
sudo systemctl start my-appAgora, seu aplicativo irá rodar em segundo plano, reiniciar em caso de falha e iniciar automaticamente na inicialização. Você pode verificar seu status com:
sudo systemctl status my-appEste método funciona com a maioria das aplicações. Basta ajustar o ExecStart, User e WorkingDirectory conforme necessário para o seu stack.
3. Devo usar Nginx ou Apache para meu proxy reverso?
Tanto o Nginx quanto o Apache funcionam bem como proxies reversos, mas o Nginx é frequentemente preferido para servidores de aplicações modernos devido ao seu menor consumo de memória, melhor desempenho sob alta concorrência e configuração mais simples para cenários de proxy reverso.
O Nginx também se destaca no gerenciamento de conteúdo estático e na proxy de solicitações para servidores de aplicação, tornando-o ideal para implantações em produção. O Apache continua sendo uma escolha sólida, especialmente se você precisar de módulos específicos ou estiver mais familiarizado com a sintaxe de configuração dele.
4. Como posso proteger meu servidor de aplicação no Ubuntu 24.04?
Proteja seu servidor de aplicação: habilitando o firewall UFW e permitindo apenas as portas necessárias, instalando certificados SSL com o Let’s Encrypt, executando aplicações como usuários não-root, desativando o login SSH do root, configurando atualizações de segurança automáticas, mantendo os pacotes de software atualizados e implementando permissões de arquivos adequadas. Além disso, use senhas fortes ou chaves SSH, configure o fail2ban para prevenir ataques de força bruta e revise regularmente os logs de aplicações e do sistema em busca de atividades suspeitas.
5. Posso hospedar vários aplicativos em um único servidor Ubuntu?
Sim, você pode hospedar múltiplas aplicações em um único servidor Ubuntu 24.04. Configure serviços systemd separados para cada aplicação, cada um ouvindo em portas diferentes (por exemplo, 3000, 3001, 8000). Configure blocos de servidor Nginx (hosts virtuais) para cada domínio ou subdomínio, com cada bloco fazendo proxy para a porta apropriada da aplicação. Essa abordagem permite usar os recursos do servidor de forma eficiente enquanto mantém a isolação entre as aplicações.
6. Como posso verificar se meu aplicativo está funcionando corretamente?
Verifique se sua aplicação está em execução verificando o status do serviço systemd com sudo systemctl status your-app. Revise os logs da aplicação usando sudo journalctl -u your-app -f para ver a saída de logs em tempo real. Teste a aplicação acessando-a através do seu domínio ou endereço IP. Verifique se o Nginx está roteando as requisições corretamente analisando os logs de acesso e erro do Nginx em /var/log/nginx/access.log e /var/log/nginx/error.log. Monitore o uso de recursos com htop ou free -h para garantir que sua aplicação não esteja consumindo CPU ou memória em excesso.
Conclusão
Você configurou com sucesso um servidor de aplicação pronto para produção no Ubuntu 24.04. Seu Droplet Linux-Console.net agora está equipado com Nginx como proxy reverso, criptografia SSL/TLS, gerenciamento de serviços com systemd e medidas de reforço de segurança. Esta configuração suporta a implantação de aplicações web em Node.js, Python, PHP e outras, em um ambiente seguro e escalável.
A configuração segue as melhores práticas de produção, incluindo reinicializações automáticas de serviços, renovação de certificado SSL, proteção de firewall e permissões de usuário apropriadas. Seu servidor de aplicação está pronto para lidar com cargas de trabalho reais e pode ser dimensionado à medida que suas necessidades crescerem.
Para aprendizado adicional e configurações avançadas, explore estes tutoriais relacionados do Linux-Console.net:
- Como Instalar e Usar Docker no Ubuntu - Aprenda sobre conteinerização para facilitar a implantação e o gerenciamento de aplicativos
- Como Configurar o Nginx como um Proxy Reverso no Ubuntu - Mergulhando em configurações avançadas de proxy reverso do Nginx
- Medidas de Segurança Recomendadas para Proteger Seus Servidores - Técnicas adicionais de reforço de segurança para servidores de produção
Pronto para implantar suas aplicações? Comece com os Droplets da Linux-Console.net para criar uma infraestrutura escalável e confiável para seu servidor de aplicações. Com recursos como backups automáticos, monitoramento e preços flexíveis, os Droplets da Linux-Console.net oferecem a base que você precisa para implantações em produção.
Obrigado por aprender com a comunidade Linux-Console.net.
