Implantação de aplicação Swift em VPS: guia passo a passo para avançados
Você criou uma excelente aplicação servidor em Swift usando o framework Vapor. Agora é necessário colocá-la em produção. A implantação de uma aplicação Swift em VPS requer compreensão das especificidades do funcionamento do Swift no Linux, configuração do ambiente servidor e uso das ferramentas corretas para garantir estabilidade e desempenho. Neste guia avançado, abordaremos o ciclo completo: desde a compilação para Linux até a configuração de CI/CD, trabalho com Docker e Supervisor.
1. Preparação do servidor e compilação do Swift para Linux
A primeira coisa a entender: Swift no macOS e no Linux são ecossistemas diferentes. Para implantação em VPS (Ubuntu 22.04 LTS), é necessária compilação cruzada ou compilação diretamente no servidor. Recomenda-se compilar no servidor para evitar problemas com bibliotecas.
1.1 Instalação do Swift no Ubuntu
Conecte-se ao servidor via SSH e instale as dependências necessárias:
sudo apt updatesudo apt install -y curl git clang libicu-dev libcurl4-openssl-dev libssl-dev \ libsqlite3-dev libxml2-dev pkg-config uuid-dev
# Baixe a versão mais recente do Swift Toolchainwget https://download.swift.org/swift-5.9.2-release/ubuntu2204/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu22.04.tar.gztar -xzf swift-5.9.2-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9.2-RELEASE-ubuntu22.04 /usr/share/swift
# Adicione ao PATHecho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrcsource ~/.bashrcswift --version1.2 Clonagem e compilação do projeto
Clone o repositório e compile a versão de lançamento da aplicação:
git clone https://github.com/your-username/your-swift-app.gitcd your-swift-appswift build --configuration releaseApós a compilação bem-sucedida, o binário estará em .build/release/YourApp. Verifique sua execução manualmente:
./.build/release/YourApp serve --hostname 0.0.0.0 --port 80802. Configuração do ambiente de produção: Nginx e Supervisor
Executar a aplicação Swift diretamente na porta 80 é uma má prática. Use a combinação Nginx (proxy reverso) + Supervisor (gerenciador de processos).
2.1 Configuração do Nginx
Instale o Nginx e crie uma configuração para proxy de requisições para sua aplicação Swift:
sudo apt install nginxsudo nano /etc/nginx/sites-available/yourappConteúdo do arquivo:
server { listen 80; server_name yourdomain.com www.yourdomain.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; 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; }
# Configuração para arquivos grandes (se necessário) client_max_body_size 50m;}Ative a configuração e verifique:
sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl restart nginx2.2 Configuração do Supervisor para reinicialização automática
O Supervisor monitorará o processo e o reiniciará em caso de falha. Instale e crie a configuração:
sudo apt install supervisorsudo nano /etc/supervisor/conf.d/yourapp.confConteúdo da configuração:
[program:yourapp]command=/home/ubuntu/your-swift-app/.build/release/YourApp serve --hostname 0.0.0.0 --port 8080directory=/home/ubuntu/your-swift-appuser=ubuntuautostart=trueautorestart=truestartretries=3stderr_logfile=/var/log/yourapp.err.logstdout_logfile=/var/log/yourapp.out.logenvironment=ENVIRONMENT="producti