Implantação de aplicação Swift em VPS: guia passo a passo
O desenvolvimento de aplicações server-side em Swift usando o framework Vapor está ganhando popularidade. No entanto, após escrever o código, surge a questão: como hospedar uma aplicação Swift em um servidor remoto? Neste artigo, vamos abordar o processo completo de implantação de uma aplicação Swift em VPS (Ubuntu 22.04) — desde a instalação dos componentes necessários até a configuração de reverse proxy e execução em modo de produção.
1. Preparação do servidor e instalação do Swift
Primeiramente, conecte-se à VPS via SSH e atualize a base de pacotes:
sudo apt update && sudo apt upgrade -yO Swift requer dependências para compilação. Instale-as:
sudo apt install clang libicu-dev libcurl4-openssl-dev libssl-dev python3 pkg-config -yEm seguida, baixe e instale o Swift para Ubuntu. No momento da escrita deste artigo, a versão atual é a 5.9. Baixe o arquivo:
wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gzDescompacte e mova para /usr/share:
tar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swiftAdicione o Swift ao PATH. Abra o ~/.bashrc:
nano ~/.bashrcAdicione a linha ao final do arquivo:
export PATH="/usr/share/swift/usr/bin:$PATH"Aplique as alterações:
source ~/.bashrcVerifique a instalação:
swift --versionDeve exibir a versão Swift 5.9.
2. Compilação da aplicação Swift (Vapor) no servidor
Clone o repositório com a aplicação ou copie os arquivos via SCP. Como exemplo, vamos criar um projeto de teste Vapor:
mkdir ~/myapp && cd ~/myappswift package init --type executableAdicione o Vapor ao Package.swift (exemplo de servidor mínimo):
// swift-tools-version:5.9import PackageDescription
let package = Package( name: "myapp", platforms: [.macOS(.v13)], dependencies: [ .package(url: "https://github.com/vapor/vapor.git", from: "4.89.0") ], targets: [ .executableTarget(name: "myapp", dependencies: [ .product(name: "Vapor", package: "vapor") ]) ])Crie o arquivo Sources/myapp/main.swift:
import Vapor
let app = try Application(.detect())app.get { req in return "Hello, Swift on VPS!"}try app.run()Compile o projeto em modo release:
swift build -c releaseApós a compilação, o binário estará em .build/release/myapp. Copie-o para um local conveniente:
cp .build/release/myapp /usr/local/bin/myapp3. Configuração do Nginx como reverse proxy
A aplicação Swift escutará na porta 8080, e o Nginx redirecionará o tráfego da porta 80 (ou 443 para HTTPS). Instale o Nginx:
sudo apt install nginx -yCrie um arquivo de configuração para nossa aplicação:
sudo nano /etc/nginx/sites-available/myappConteúdo do arquivo:
server { listen 80; server_name your-domain.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; }}Ative a configuração e reinicie o Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl restart nginxNão se esqueça de configurar o registro DNS A para seu domínio, apontando para o endereço IP da VPS.