Implantação de aplicativo Swift em VPS: passo a passo do início ao fim
\n\nO Swift deixou de ser uma linguagem apenas para desenvolvimento iOS. Graças ao framework Vapor e ao suporte oficial ao Linux, você pode criar aplicativos de servidor de alto desempenho em Swift e implantá-los em uma VPS. Neste guia, percorreremos todo o caminho, desde a configuração do servidor até a execução da versão de produção do seu aplicativo Swift.
\n\n1. Preparação da VPS e instalação do Swift
\n\nPara começar, você precisará de uma VPS com Ubuntu 22.04 LTS (ou 20.04). Conecte-se via SSH e execute a atualização do sistema:
\n\nssh root@seu-ip-do-servidor\napt update && apt upgrade -y\n\nInstale as dependências necessárias para o Swift:
\n\napt install -y curl git build-essential libssl-dev libcurl4-openssl-dev\napt install -y libxml2-dev libicu-dev libsqlite3-dev libz-dev\n\nAgora baixe e instale o Swift para Ubuntu. Verifique a versão atual em swift.org. No momento da escrita deste artigo, é o Swift 5.9:
\n\ncd /opt\nwget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gz\necho 'export PATH=/opt/swift-5.9-RELEASE-ubuntu22.04/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\n\nVerifique a instalação:
\n\nswift --version\n\nVocê deve ver a versão Swift 5.9.
\n\n2. Criação e compilação do aplicativo Swift/Vapor
\n\nInstale o Vapor Toolbox (opcional, mas conveniente):
\n\ngit clone https://github.com/vapor/toolbox.git\ncd toolbox\nswift build -c release\ncp .build/release/vapor /usr/local/bin/\n\nVamos criar um aplicativo de teste Vapor. Se você já tem um projeto, basta copiá-lo para o servidor via SCP ou Git.
\n\ncd ~\nvapor new HelloServer\ncd HelloServer\n\nVamos editar Sources/App/routes.swift para adicionar um endpoint simples:
import Vapor\n\nfunc routes(_ app: Application) throws {\n app.get { req async in\n "Hello from Swift on VPS!"\n }\n \n app.get("status") { req async -> HTTPStatus in\n return .ok\n }\n}\n\nCompile o projeto em modo de produção:
\n\nswift build -c release\n\nO binário aparecerá em .build/release/HelloServer.
3. Configuração da inicialização e do serviço systemd
\n\nPara que o aplicativo seja iniciado automaticamente após a reinicialização do servidor, vamos criar um serviço systemd. Primeiro, crie um usuário para o aplicativo (segurança):
\n\nuseradd -m -s /bin/bash swiftuser\nchown -R swiftuser:swiftuser /root/HelloServer\n\nCrie o arquivo de serviço:
\n\nnano /etc/systemd/system/helloserver.service\n\nInsira o seguinte conteúdo:
\n\n[Unit]\nDescription=HelloServer Swift App\nAfter=network.target\n\n[Service]\nType=simple\nUser=swiftuser\nWorkingDirectory=/root/HelloServer\nExecStart=/root/HelloServer/.build/release/HelloServer --host 127.0.0.1 --port 8080\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target\n\nInicie o serviço:
\n\nsystemctl daemon-reload\nsystemctl enable helloserver\nsystemctl start helloserver\nsystemctl status helloserver\n\nVerifique se o aplicativo responde localmente:
\n\ncurl http://127.0.0.1:8080\n\n4. Configuração do Nginx como proxy reverso
\n\nPara um ambiente de produção, não é recomendado abrir a porta 8080 diretamente. Vamos instalar o Nginx e configurar o proxy com SSL (Let's Encrypt).
\n\napt install -y nginx certbot python3-certbot-nginx\n\nCrie a configuração do Nginx:
\n\nnano /etc/nginx/sites-available/helloserver\n\nInsira:
\n\nserver {\n listen 80;\