Implantação de aplicação Swift em VPS: guia passo a passo
O desenvolvimento de aplicações server-side em Swift está ganhando popularidade rapidamente graças ao framework Vapor. No entanto, muitos desenvolvedores iOS/macOS enfrentam dificuldades ao transferir uma aplicação pronta para um servidor remoto. Neste guia, vamos detalhar como implantar uma aplicação Swift em VPS, configurar o ambiente e garantir uma operação estável em ambiente de produção.
1. Preparação do servidor VPS para Swift
O primeiro passo é alugar um VPS (recomenda-se Ubuntu 22.04 LTS) e conectar-se a ele via SSH. Após o login, execute a atualização do sistema:
sudo apt update && sudo apt upgrade -ysudo apt install curl git clang libicu-dev libcurl4-openssl-dev libssl-dev -yPara instalar o Swift no Linux, use o script oficial da Apple:
wget https://swift.org/builds/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gztar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swiftecho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrcsource ~/.bashrcswift --versionVerifique se o Swift foi instalado corretamente — você deve ver a versão do compilador.
2. Compilação da aplicação Swift (Vapor) no servidor
Copie o código-fonte do seu projeto para o servidor. O mais conveniente é usar Git:
git clone https://github.com/seu-projeto/seu-repositorio.gitcd seu-repositorioCompile o projeto em modo release. Isso criará um binário otimizado:
swift build -c releasecp .build/release/Run /usr/local/bin/myappSe você estiver usando Vapor, certifique-se de que no arquivo configure.swift a porta correta esteja configurada (geralmente 8080). Exemplo de configuração:
import Vapor
public func configure(_ app: Application) throws { app.http.server.configuration.hostname = "0.0.0.0" app.http.server.configuration.port = 8080 // Registro de rotas try routes(app)}Verifique o funcionamento da aplicação executando-a manualmente:
myapp --env production serveSe a aplicação iniciar e responder às requisições, pode-se prosseguir para a configuração do daemon.
3. Configuração do systemd para inicialização automática
Para que a aplicação inicie automaticamente ao reiniciar o servidor, crie um serviço systemd:
sudo nano /etc/systemd/system/swift-app.serviceInsira o seguinte código:
[Unit]Description=Swift Vapor ApplicationAfter=network.target
[Service]Type=simpleUser=www-dataWorkingDirectory=/var/www/myappExecStart=/usr/local/bin/myapp --env production serveRestart=on-failureRestartSec=10
[Install]WantedBy=multi-user.targetSalve o arquivo e ative o serviço:
sudo systemctl daemon-reloadsudo systemctl enable swift-appsudo systemctl start swift-appsudo systemctl status swift-appSe o status mostrar active (running) — está tudo funcionando.
4. Configuração do Nginx como reverse proxy
Para ambiente de produção, recomenda-se usar Nginx para fazer proxy das requisições para a aplicação Swift. Isso garante balanceamento de carga e suporte a SSL:
sudo apt install nginx -ysudo nano /etc/nginx/sites-available/swift-appExemplo de configuração:
server { listen 80; server_name seu-dominio.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; }
location /static/ { root /var/www/myapp/Public; expires 3